Package: gtkwave
Version: 1.3.81-1
Severity: normal
Tags: patch

Since gtkwave uses GtkText widget (I think it's obsolete), and it
emits warnings like:
        (gtkwave:30510): Gdk-CRITICAL **: gdk_text_width: assertion `font != 
NULL' failed

It's not just warnings.  The display of "Wave help" dialog and
clicking on logfile viewer don't work well.

Here is a patch to kill these warnings and fix problems.  It enables
us to compile gtkwave without -DGTK_ENABLE_BROKEN.

The changes consist of Debian independent part and Debian specific
part.

Independent part are changes of help.c, status.c, and logfile.c, which
replaces uses of GtkText widget by ones of GtkTextView widget.

Specific part is new Makefile_GTK2_new.in without -DGTK_ENABLE_BROKEN,
and change of debian/rules wich uses Makefile_GTK2_new.in.

I put these changes of mine 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,11 @@
 gtk_widget_show (text);
 
 /* And a VScrollbar in the upper right */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+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 +92,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,11 @@
 gtk_widget_show (text);
 
 /* And a VScrollbar in the upper right */
+#if defined(WAVE_USE_GTK2) && !defined(GTK_ENABLE_BROKEN)
+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,32 @@
 
 /* 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)
+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 +215,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
+


-- System Information:
Debian Release: 4.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-lattitude-x1
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages gtkwave depends on:
ii  libatk1.0-0                  1.12.3-1    The ATK accessibility toolkit
ii  libbz2-1.0                   1.0.3-6     high-quality block-sorting file co
ii  libc6                        2.3.6.ds1-9 GNU C Library: Shared libraries
ii  libcairo2                    1.2.4-4     The Cairo 2D vector graphics libra
ii  libfontconfig1               2.4.2-1     generic font configuration library
ii  libglib2.0-0                 2.12.6-1    The GLib library of C routines
ii  libgtk2.0-0                  2.8.20-3    The GTK+ graphical user interface 
ii  libpango1.0-0                1.14.8-3    Layout and rendering of internatio
ii  libx11-6                     2:1.0.3-4   X11 client-side library
ii  libxcursor1                  1.1.7-4     X cursor management library
ii  libxext6                     1:1.0.1-2   X11 miscellaneous extension librar
ii  libxi6                       1:1.0.1-4   X11 Input extension library
ii  libxinerama1                 1:1.0.1-4.1 X11 Xinerama extension library
ii  libxrandr2                   2:1.1.0.2-5 X11 RandR extension library
ii  libxrender1                  1:0.9.1-3   X Rendering Extension client libra
ii  zlib1g                       1:1.2.3-13  compression library - runtime

gtkwave recommends no packages.

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to