The upstream maintainer, Anthony J Bybell <[EMAIL PROTECTED]>, kindly
pointed out my fix is not enough for vadjustment.

Here, I attach updated patch.  I put it into public domain.
--- gtkwave-1.3.81.orig/src/help.c
+++ gtkwave-1.3.81/src/help.c
@@ -22,14 +22,28 @@
 static GtkWidget *text;
 static GtkWidget *vscrollbar;
 
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+static GtkTextIter iter;
+static GtkTextTag *bold_tag;
+#endif
+
 void help_text(char *str)
 {
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_buffer_insert (GTK_TEXT_VIEW (text)->buffer, &iter, str, -1);
+#else
 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL, str, -1);
+#endif
 }
 
 void help_text_bold(char *str)
 {
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_buffer_insert_with_tags (GTK_TEXT_VIEW (text)->buffer, &iter,
+				  str, -1, bold_tag, NULL);
+#else
 gtk_text_insert (GTK_TEXT (text), NULL, &text->style->fg[GTK_STATE_SELECTED], &text->style->bg[GTK_STATE_SELECTED], str, -1);
+#endif
 }
 
 static void
@@ -50,7 +64,14 @@
    
 /* Put a text widget in the upper left hand corner. Note the use of
 * GTK_SHRINK in the y direction */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+text = gtk_text_view_new ();
+gtk_text_buffer_get_start_iter (gtk_text_view_get_buffer(GTK_TEXT_VIEW (text)), &iter);
+bold_tag = gtk_text_buffer_create_tag (GTK_TEXT_VIEW (text)->buffer, "bold",
+				       "weight", PANGO_WEIGHT_BOLD, NULL);  
+#else
 text = gtk_text_new (NULL, NULL);
+#endif
 gtk_table_attach (GTK_TABLE (table), text, 0, 14, 0, 1,
 		      	GTK_FILL | GTK_EXPAND,
 		      	GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
@@ -58,7 +79,14 @@
 gtk_widget_show (text);
 
 /* And a VScrollbar in the upper right */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+GtkTextViewClass *tc = (GtkTextViewClass *)GTK_OBJECT_GET_CLASS(GTK_OBJECT(text));
+
+tc->set_scroll_adjustments(GTK_TEXT_VIEW (text), NULL, NULL);
+vscrollbar = gtk_vscrollbar_new (GTK_TEXT_VIEW (text)->vadjustment);
+#else
 vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
+#endif
 gtk_table_attach (GTK_TABLE (table), vscrollbar, 15, 16, 0, 1,
 			GTK_FILL, GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
 gtk_widget_show (vscrollbar);
@@ -67,7 +95,11 @@
 gtk_signal_connect (GTK_OBJECT (text), "realize",
 			GTK_SIGNAL_FUNC (help_realize_text), NULL);
    
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
+#else
 gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
+#endif
 return(table);
 }
    
--- gtkwave-1.3.81.orig/src/status.c
+++ gtkwave-1.3.81/src/status.c
@@ -20,11 +20,20 @@
 static GtkWidget *text=NULL;
 static GtkWidget *vscrollbar;
 
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+static GtkTextIter iter;
+static GtkTextTag *bold_tag;
+#endif
+
 void status_text(char *str)
 {
 if(text)
 	{
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+	gtk_text_buffer_insert (GTK_TEXT_VIEW (text)->buffer, &iter, str, -1);
+#else
 	gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL, str, -1);
+#endif
 	}
 	else
 	{
@@ -95,7 +104,14 @@
    
 /* Put a text widget in the upper left hand corner. Note the use of
 * GTK_SHRINK in the y direction */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+text = gtk_text_view_new ();
+gtk_text_buffer_get_start_iter (gtk_text_view_get_buffer(GTK_TEXT_VIEW (text)), &iter);
+bold_tag = gtk_text_buffer_create_tag (GTK_TEXT_VIEW (text)->buffer, "bold",
+				       "weight", PANGO_WEIGHT_BOLD, NULL);  
+#else
 text = gtk_text_new (NULL, NULL);
+#endif
 gtk_table_attach (GTK_TABLE (table), text, 0, 14, 0, 1,
 		      	GTK_FILL | GTK_EXPAND,
 		      	GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
@@ -103,7 +119,14 @@
 gtk_widget_show (text);
 
 /* And a VScrollbar in the upper right */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+GtkTextViewClass *tc = (GtkTextViewClass *)GTK_OBJECT_GET_CLASS(GTK_OBJECT(text));
+
+tc->set_scroll_adjustments(GTK_TEXT_VIEW (text), NULL, NULL);
+vscrollbar = gtk_vscrollbar_new (GTK_TEXT_VIEW (text)->vadjustment);
+#else
 vscrollbar = gtk_vscrollbar_new ((GTK_TEXT (text))->vadj);
+#endif
 gtk_table_attach (GTK_TABLE (table), vscrollbar, 15, 16, 0, 1,
 			GTK_FILL, GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
 gtk_widget_show (vscrollbar);
--- gtkwave-1.3.81.orig/src/logfile.c
+++ gtkwave-1.3.81/src/logfile.c
@@ -30,14 +30,28 @@
 
 static GdkFont *font = NULL;
 
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+static GtkTextIter iter;
+static GtkTextTag *bold_tag;
+#endif
+
 void log_text(GtkWidget *text, GdkFont *font, char *str)
 {
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_buffer_insert (GTK_TEXT_VIEW (text)->buffer, &iter, str, -1);
+#else
 gtk_text_insert (GTK_TEXT (text), font, &text->style->black, NULL, str, -1);
+#endif
 }
 
 void log_text_bold(GtkWidget *text, GdkFont *font, char *str)
 {
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_buffer_insert_with_tags (GTK_TEXT_VIEW (text)->buffer, &iter,
+				  str, -1, bold_tag, NULL);
+#else
 gtk_text_insert (GTK_TEXT (text), font, &text->style->fg[GTK_STATE_SELECTED], &text->style->bg[GTK_STATE_SELECTED], str, -1);
+#endif
 }
 
 static void
@@ -81,6 +95,38 @@
 {
 gchar *sel;
 
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+GtkTextIter start;
+GtkTextIter end;
+
+if (gtk_text_buffer_get_selection_bounds (GTK_TEXT_VIEW(text)->buffer,
+					  &start, &end))
+	{
+	if(gtk_text_iter_compare (&start, &end) < 0)
+		{
+		sel = gtk_text_buffer_get_text(GTK_TEXT_VIEW(text)->buffer,
+					       &start, &end, FALSE);
+	
+		if(sel)
+			{
+			if(strlen(sel)&&(sel[0]>='0')&&(sel[0]<='9'))
+				{
+				TimeType tm = unformat_time(sel, time_dimension);
+				if((tm >= tims.first) && (tm <= tims.last))
+					{
+					tims.lmbcache = -1;
+				        update_markertime(tims.marker = tm);
+					center_op();
+					signalarea_configure_event(signalarea, NULL);
+        				wavearea_configure_event(wavearea, NULL);
+				        update_markertime(tims.marker = tm); /* centering problem in GTK2 */
+					}
+				}
+			g_free(sel);
+			}
+		}
+	}
+#else
 #ifndef WAVE_USE_GTK2
 GtkEditable *oe = GTK_EDITABLE(&GTK_TEXT(text)->editable);
 GtkTextClass *tc = (GtkTextClass *) ((GtkObject*) (GTK_OBJECT(text)))->klass;
@@ -115,6 +161,7 @@
 			}
 		}
 	}
+#endif
 
 return(FALSE); /* call remaining handlers... */
 }
@@ -131,17 +178,34 @@
 
 /* Put a text widget in the upper left hand corner. Note the use of
 * GTK_SHRINK in the y direction */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+text = gtk_text_view_new ();
+gtk_text_buffer_get_start_iter (gtk_text_view_get_buffer(GTK_TEXT_VIEW (text)), &iter);
+bold_tag = gtk_text_buffer_create_tag (GTK_TEXT_VIEW (text)->buffer, "bold",
+				       "weight", PANGO_WEIGHT_BOLD, NULL);  
+#else
 text = gtk_text_new (NULL, NULL);
+#endif
 *textpnt = text;
 gtk_table_attach (GTK_TABLE (table), text, 0, 14, 0, 1,
                         GTK_FILL | GTK_EXPAND,
                         GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
 gtk_widget_set_usize(GTK_WIDGET(text), 100, 100);
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_view_set_editable(GTK_TEXT_VIEW(text), TRUE);
+#else
 gtk_text_set_editable(GTK_TEXT(text), TRUE);
+#endif
 gtk_widget_show (text);
 
 /* And a VScrollbar in the upper right */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+GtkTextViewClass *tc = (GtkTextViewClass *)GTK_OBJECT_GET_CLASS(GTK_OBJECT(text));
+tc->set_scroll_adjustments(GTK_TEXT_VIEW (text), NULL, NULL);
+vscrollbar = gtk_vscrollbar_new (GTK_TEXT_VIEW (text)->vadjustment);
+#else
 vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
+#endif
 gtk_table_attach (GTK_TABLE (table), vscrollbar, 15, 16, 0, 1,
                         GTK_FILL, GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0);
 gtk_widget_show (vscrollbar);
@@ -153,8 +217,12 @@
 gtk_signal_connect(GTK_OBJECT(text), "button_release_event",
                        GTK_SIGNAL_FUNC(button_release_event), NULL);
 
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_CHAR);
+#else
 gtk_text_set_word_wrap(GTK_TEXT(text), FALSE);
 gtk_text_set_line_wrap(GTK_TEXT(text), TRUE);
+#endif
 return(table);
 }
    
--- gtkwave-1.3.81/debian/rules
+++ gtkwave-1.3.81/debian/rules
@@ -9,7 +9,7 @@
 build-stamp:
 	dh_testdir
 	
-	ln -fs Makefile_GTK2.in src/Makefile.in
+	ln -fs Makefile_GTK2_new.in src/Makefile.in
 	./configure2 --prefix=/usr --mandir=/usr/share/man
 	-mkdir bin
 	$(MAKE) 
--- gtkwave-1.3.81.orig/src/Makefile_GTK2_new.in
+++ gtkwave-1.3.81/src/Makefile_GTK2_new.in
@@ -0,0 +1,48 @@
+CC = @CC@
+AIXFLAGS = -bmaxdata:0x80000000 -D_WAVE_BE32
+BIGFILES = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+CFLAGS = -O2 -DWAVE_USE_GTK2 -I./helpers
+DEBUGS = -DDEBUG_FACILITIES -DDEBUG_PRINTF -DDEBUG_MALLOC -DSTRICT_VCD_ONLY -DDEBUG_MALLOC_LINES
+AET2LIB =
+PTHLIB = -lpthread
+
+SRCS = menu.c main.c status.c zoombuttons.c pagebuttons.c \
+		fetchbuttons.c shiftbuttons.c pixmaps.c \
+		timeentry.c currenttime.c wavewindow.c signalwindow.c \
+		aet.c bitvec.c analyzer.c bsearch.c entry.c \
+		tree.c file.c search.c discardbuttons.c \
+		fgetdynamic.c showchange.c treesearch.c \
+		markerbox.c print.c strace.c \
+		simplereq.c help.c vcd.c debug.c rc.c \
+		color.c hiersearch.c renderopt.c \
+		rgb.c regex.c fonts.c lxt.c lx2.c helpers/lxt2_read.c \
+		ae2.c helpers/vzt_read.c vzt.c baseconvert.c splash.c logfile.c \
+		vcd_saver.c helpers/lxt_write.c ghw.c ghwlib.c translate.c \
+		pipeio.c ptranslate.c clipping.c
+
+OBJS = menu.o main.o status.o zoombuttons.o pagebuttons.o \
+		fetchbuttons.o shiftbuttons.o pixmaps.o \
+		timeentry.o currenttime.o wavewindow.o signalwindow.o \
+		aet.o bitvec.o analyzer.o bsearch.o entry.o \
+		tree.o file.o search.o discardbuttons.o \
+		fgetdynamic.o showchange.o treesearch.o \
+		markerbox.o print.o strace.o \
+		simplereq.o help.o vcd.o debug.o rc.o \
+		color.o hiersearch.o renderopt.o \
+		rgb.o regex.o fonts.o lxt.o lx2.o helpers/lxt2_read.o \
+		ae2.o helpers/vzt_read.o vzt.o baseconvert.o splash.o logfile.o \
+		vcd_saver.o helpers/lxt_write.o ghw.o ghwlib.o translate.o \
+		pipeio.o ptranslate.o clipping.o
+
+all: 	gtkwave
+	cp gtkwave ../bin
+
+gtkwave:$(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) `pkg-config gtk+-2.0 --libs` $(AET2LIB) -lz -lbz2 -o gtkwave $(PTHLIB)
+
+.c.o:	$(H_FILES)
+	$(CC) $(CFLAGS) `pkg-config gtk+-2.0 --cflags` -c -o $@ $<
+
+clean: 
+	rm -f core *.core *.o gtkwave ../bin/gtkwave
+

Reply via email to