]> Pileus Git - ~andy/gtk/commitdiff
Don't clear the window on an expose event. On draws, just clear the
authorOwen Taylor <owt1@cornell.edu>
Sat, 28 Mar 1998 00:10:49 +0000 (00:10 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sat, 28 Mar 1998 00:10:49 +0000 (00:10 +0000)
Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>

* gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
the window on an expose event. On draws, just clear the
portion we are redrawing.

* gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
of fontset ascent/descent.

* gtk/gtkwidget.[ch]: Added new function to show a toplevel
window and wait for it to be mapped, gtk_window_show_now ()

14 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdkfont.c
gdk/x11/gdkfont-x11.c
gtk/gtkhandlebox.c
gtk/gtkwidget.c
gtk/gtkwidget.h
gtk/testgtkrc
tests/testgtkrc

index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index 93f007353a42e90e2b053bb909daabbcd0500c38..27b4be117d30265fed558b063345247b5632c3ec 100644 (file)
@@ -1,3 +1,15 @@
+Fri Mar 27 17:58:41 1998  Owen Taylor  <owt1@cornell.edu>
+
+       * gtk/gtkhandlebox.c (gtk_handle_box_paint): Don't clear
+       the window on an expose event. On draws, just clear the
+       portion we are redrawing.
+
+       * gdk/gdkfont.c (gdk_fontset_load): Corrected calculation
+       of fontset ascent/descent.
+
+       * gtk/gtkwidget.[ch]: Added new function to show a toplevel
+       window and wait for it to be mapped, gtk_window_show_now ()
+
 Fri Mar 27 08:51:17 PST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * docs/Makefile.sgml: some stuff for doing plain text and
index c0c19ca2c90d9ab88c31b3a8ecf1183cbccee050..8b45be39404a086fcc038ce92f03f8bffcd79496 100644 (file)
@@ -86,13 +86,22 @@ gdk_fontset_load (gchar *fontset_name)
     }
   else
     {
-      XFontSetExtents *extent = XExtentsOfFontSet(fontset);
-
+      gint num_fonts;
+      gint i;
+      XFontStruct **font_structs;
+      gchar **font_names;
+      
       private->xfont = fontset;
       font->type = GDK_FONT_FONTSET;
-      /* how to define ascent and descent for fontset ??? */
-      font->ascent =  extent->max_logical_extent.height;
-      font->descent = font->ascent / 4 ;
+      num_fonts = XFontsOfFontSet (fontset, &font_structs, &font_names);
+
+      font->ascent = font->descent = 0;
+      
+      for (i = 0; i < num_fonts; i++)
+       {
+         font->ascent = MAX (font->ascent, font_structs[i]->ascent);
+         font->descent = MAX (font->descent, font_structs[i]->descent);
+       }
     }
   return font;
 }
index c0c19ca2c90d9ab88c31b3a8ecf1183cbccee050..8b45be39404a086fcc038ce92f03f8bffcd79496 100644 (file)
@@ -86,13 +86,22 @@ gdk_fontset_load (gchar *fontset_name)
     }
   else
     {
-      XFontSetExtents *extent = XExtentsOfFontSet(fontset);
-
+      gint num_fonts;
+      gint i;
+      XFontStruct **font_structs;
+      gchar **font_names;
+      
       private->xfont = fontset;
       font->type = GDK_FONT_FONTSET;
-      /* how to define ascent and descent for fontset ??? */
-      font->ascent =  extent->max_logical_extent.height;
-      font->descent = font->ascent / 4 ;
+      num_fonts = XFontsOfFontSet (fontset, &font_structs, &font_names);
+
+      font->ascent = font->descent = 0;
+      
+      for (i = 0; i < num_fonts; i++)
+       {
+         font->ascent = MAX (font->ascent, font_structs[i]->ascent);
+         font->descent = MAX (font->descent, font_structs[i]->descent);
+       }
     }
   return font;
 }
index 1e12f1a766868fcc48d9f065e81f1cf2563131ae..e0f44ceaea786c2f15b7e3de4d8fad7f94001ffd 100644 (file)
@@ -620,8 +620,14 @@ gtk_handle_box_paint (GtkWidget      *widget,
       width = widget->allocation.width;
       height = widget->allocation.height - DRAG_HANDLE_SIZE;
     }
-
-  gdk_window_clear (hb->bin_window);
+  
+  if (!event)
+    gdk_window_clear_area (hb->bin_window,
+                          area->x,
+                          area->y,
+                          area->width,
+                          area->height);
+  
   gtk_draw_shadow (widget->style,
                   hb->bin_window,
                   GTK_WIDGET_STATE (widget),
index cd0cd339fcf88bdad9e181a798a536d285cc1b91..23405b5f2a7064b3589168132ce90098cf80ec02 100644 (file)
@@ -1240,6 +1240,48 @@ gtk_widget_show (GtkWidget *widget)
     gtk_signal_emit (GTK_OBJECT (widget), widget_signals[SHOW]);
 }
 
+
+/*************************************************************
+ * gtk_widget_show_now:
+ *   Show a widget, and if it is an unmapped toplevel widget
+ *   wait for the map_event before returning
+ *
+ *   Warning: This routine will call the main loop recursively.
+ *       
+ *   arguments:
+ *     
+ *   results:
+ *************************************************************/
+
+static void
+gtk_widget_show_map_callback (GtkWidget *widget, GdkEvent *event, gint *flag)
+{
+  *flag = TRUE;
+  gtk_signal_disconnect_by_data (GTK_OBJECT (widget), flag);
+}
+
+void
+gtk_widget_show_now (GtkWidget *widget)
+{
+  gint flag = FALSE;
+  
+  /* make sure we will get event */
+  if (!GTK_WIDGET_MAPPED (widget) &&
+      GTK_WIDGET_TOPLEVEL (widget))
+    {
+      gtk_widget_show (widget);
+
+      gtk_signal_connect (GTK_OBJECT (widget), "map_event",
+                         GTK_SIGNAL_FUNC (gtk_widget_show_map_callback), 
+                         &flag);
+
+      while (!flag)
+       gtk_main_iteration();
+    }
+  else
+    gtk_widget_show (widget);
+}
+
 /*****************************************
  * gtk_widget_hide:
  *
index a313a2af0dc5fb47ddbcfdc6a66d62f5f5a1a7c0..438696d26702902ce41380515db7fc0ac2b08253 100644 (file)
@@ -377,6 +377,7 @@ void           gtk_widget_setv                (GtkWidget           *widget,
                                           GtkArg              *args);
 void      gtk_widget_unparent            (GtkWidget           *widget);
 void      gtk_widget_show                (GtkWidget           *widget);
+void       gtk_widget_show_now            (GtkWidget           *widget);
 void      gtk_widget_hide                (GtkWidget           *widget);
 void      gtk_widget_show_all            (GtkWidget           *widget);
 void      gtk_widget_hide_all            (GtkWidget           *widget);
index 7ea894aa70bcd44725dc56901c0a041f55d3cdbd..a1b376a1738ba3ac854aa55003fe046d86b5c5e1 100644 (file)
@@ -12,8 +12,8 @@ pixmap_path "."
 
 style "default"
 {
-  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
-#  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"
+#  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"
 }
 
 style "window"
index 7ea894aa70bcd44725dc56901c0a041f55d3cdbd..a1b376a1738ba3ac854aa55003fe046d86b5c5e1 100644 (file)
@@ -12,8 +12,8 @@ pixmap_path "."
 
 style "default"
 {
-  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
-#  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"
+#  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"
 }
 
 style "window"