diff options
author | Owen Taylor <otaylor@redhat.com> | 1999-01-15 16:00:39 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1999-01-15 16:00:39 +0000 |
commit | 2e99e7713dc73ea5b7a000ab03b4d64176b9ad40 (patch) | |
tree | b53b62d8cc9bf47aa3b9c77015a260eb8fe09b09 /gdk | |
parent | 3bba8439685024f9fbfd9d1880da95f4cd9ce09f (diff) | |
download | gdk-pixbuf-2e99e7713dc73ea5b7a000ab03b4d64176b9ad40.tar.gz |
nparams for selection_get should be 3, not 2. [ From Damon Chaplin
Fri Jan 15 10:22:21 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_class_init):
nparams for selection_get should be 3, not 2.
[ From Damon Chaplin <damon@karuna.freeserve.co.uk> ]
* gtk/gtkeventbox.c (gtk_event_box_paint): Add a paint
routine so queued redraws work inside event boxes.
Thu Jan 14 17:47:37 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkentry.c (gtk_entry_draw_cursor_on_drawable): Only
redraw character under cursor when not displaying
highlighted selection.
* gdk/gdkrgb.c (gdk_rgb_init): Add in a cast to
gpointer to make IRIX cc happy.
Thu Jan 14 12:29:50 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkcheckbutton.c (gtk_check_button_draw): Restructure
the drawing code to remove a bit of duplication -
and to remove a call to gtk_widget_draw_focus()
that queues a redraw when an expose occurs.
* gtk/gtklabel.c (gtk_label_expose): Fix up handling
of ypadding.
* gtk/gtknotebook.c (gtk_notebook_draw): If we redraw
the whole widget, also redraw the corresponding
areas of the child widget. (have_visible_child
still has some problems)
* gdk/gdkpixmap.c: Change some g_new's to g_new0 so
that fields unused for pixmaps get initialzized
sanely.
* gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: Add new calls
gdk_window_is_visible() and gdk_window_is_viewable()
and a mapped flag to the window private structure.
* gtk/gtkbin.c gtk/gtkclist.c gtk/gtkfixed.c gtk/gtkitem.c
gtk/gtklayout.c gtk/gtklist.c gtk/gtkmenushell.c
gtk/gtknotebook.c gtk/gtkpaned.c gtk/gtktree.c
gtk/gtktreeitem.c gtk/gtkviewport.c:
Map windows after mapping children.
* gtk/gtkwidget.c (gtk_widget_clip_rect): Handle
rectangles completely clipped away correctly.
* gtk/gtkwidget.c (gtk_widget_idle_draw): Don't
call gtk_widget_draw if width or height is 0.
* gtk/gtkwidget.c (gtk_widget_idle_draw): Don't
rely on GTK_REDRAW_PENDING after we've cleared
it. (This was causing draw-combining to not
happen at all).
* gtk/gtkbin.c gtk/gtkscale.c: Remove uneccessary calls
to gtk_widget_queue_draw() when mapping.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdk.h | 9 | ||||
-rw-r--r-- | gdk/gdkpixmap.c | 6 | ||||
-rw-r--r-- | gdk/gdkprivate.h | 1 | ||||
-rw-r--r-- | gdk/gdkrgb.c | 2 | ||||
-rw-r--r-- | gdk/gdkwindow.c | 58 | ||||
-rw-r--r-- | gdk/x11/gdkpixmap-x11.c | 6 | ||||
-rw-r--r-- | gdk/x11/gdkwindow-x11.c | 58 |
7 files changed, 131 insertions, 9 deletions
@@ -219,6 +219,15 @@ void gdk_window_set_child_shapes (GdkWindow *window); void gdk_window_merge_child_shapes (GdkWindow *window); /* + * Check if a window has been shown, and whether all it's + * parents up to a toplevel have been shown, respectively. + * Note that a window that is_viewable below is not necessarily + * viewable in the X sense. + */ +gboolean gdk_window_is_visible (GdkWindow *window); +gboolean gdk_window_is_viewable (GdkWindow *window); + +/* * The following function adds a global filter for all client * messages of type message_type */ diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c index f76e097d3..8df3145d7 100644 --- a/gdk/gdkpixmap.c +++ b/gdk/gdkpixmap.c @@ -64,7 +64,7 @@ gdk_pixmap_new (GdkWindow *window, if (depth == -1) depth = gdk_window_get_visual (window)->depth; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->xdisplay = window_private->xdisplay; @@ -106,7 +106,7 @@ gdk_bitmap_create_from_data (GdkWindow *window, if (window_private->destroyed) return NULL; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->parent = NULL; @@ -158,7 +158,7 @@ gdk_pixmap_create_from_data (GdkWindow *window, if (depth == -1) depth = gdk_window_get_visual (window)->depth; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->parent = NULL; diff --git a/gdk/gdkprivate.h b/gdk/gdkprivate.h index bc971a097..42b6a5ea4 100644 --- a/gdk/gdkprivate.h +++ b/gdk/gdkprivate.h @@ -63,6 +63,7 @@ struct _GdkWindowPrivate guint8 window_type; guint ref_count; guint destroyed : 2; + guint mapped : 1; gint extension_events; diff --git a/gdk/gdkrgb.c b/gdk/gdkrgb.c index 542e61d37..51c14399a 100644 --- a/gdk/gdkrgb.c +++ b/gdk/gdkrgb.c @@ -642,7 +642,7 @@ gdk_rgb_init (void) if (image_info->bitmap) /* Use malloc() instead of g_malloc since X will free() this mem */ static_image[i] = gdk_image_new_bitmap (image_info->visual, - malloc (IMAGE_WIDTH * IMAGE_HEIGHT >> 3), + (gpointer) malloc (IMAGE_WIDTH * IMAGE_HEIGHT >> 3), IMAGE_WIDTH, IMAGE_HEIGHT); else static_image[i] = gdk_image_new (GDK_IMAGE_FASTEST, diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index b0931484b..56e8cdfb8 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -277,6 +277,7 @@ gdk_window_new (GdkWindow *parent, private->xdisplay = parent_display; private->destroyed = FALSE; + private->mapped = FALSE; private->resize_count = 0; private->ref_count = 1; xattributes_mask = 0; @@ -511,6 +512,7 @@ gdk_window_foreign_new (guint32 anid) private->ref_count = 1; private->window_type = GDK_WINDOW_FOREIGN; private->destroyed = FALSE; + private->mapped = (attrs.map_state != IsUnmapped); private->extension_events = 0; private->colormap = NULL; @@ -716,6 +718,7 @@ gdk_window_show (GdkWindow *window) private = (GdkWindowPrivate*) window; if (!private->destroyed) { + private->mapped = TRUE; XRaiseWindow (private->xdisplay, private->xwindow); XMapWindow (private->xdisplay, private->xwindow); } @@ -730,7 +733,10 @@ gdk_window_hide (GdkWindow *window) private = (GdkWindowPrivate*) window; if (!private->destroyed) - XUnmapWindow (private->xdisplay, private->xwindow); + { + private->mapped = FALSE; + XUnmapWindow (private->xdisplay, private->xwindow); + } } void @@ -2470,6 +2476,55 @@ gdk_window_merge_child_shapes (GdkWindow *window) #endif } +/************************************************************* + * gdk_window_is_visible: + * Check if the given window is mapped. + * arguments: + * window: + * results: + * is the window mapped + *************************************************************/ + +gboolean +gdk_window_is_visible (GdkWindow *window) +{ + GdkWindowPrivate *private = (GdkWindowPrivate *)window; + + g_return_val_if_fail (window != NULL, FALSE); + + return private->mapped; +} + +/************************************************************* + * gdk_window_is_viewable: + * Check if the window and all ancestors of the window + * are mapped. (This is not necessarily "viewable" in + * the X sense, since we only check as far as we have + * GDK window parents, not to the root window) + * arguments: + * window: + * results: + * is the window viewable + *************************************************************/ + +gboolean +gdk_window_is_viewable (GdkWindow *window) +{ + GdkWindowPrivate *private = (GdkWindowPrivate *)window; + + g_return_val_if_fail (window != NULL, FALSE); + + while (private && (private != &gdk_root_parent)) + { + if (!private->mapped) + return FALSE; + + private = (GdkWindowPrivate *)private->parent; + } + + return TRUE; +} + void gdk_drawable_set_data (GdkDrawable *drawable, const gchar *key, @@ -2479,3 +2534,4 @@ gdk_drawable_set_data (GdkDrawable *drawable, g_dataset_set_data_full (drawable, key, data, destroy_func); } + diff --git a/gdk/x11/gdkpixmap-x11.c b/gdk/x11/gdkpixmap-x11.c index f76e097d3..8df3145d7 100644 --- a/gdk/x11/gdkpixmap-x11.c +++ b/gdk/x11/gdkpixmap-x11.c @@ -64,7 +64,7 @@ gdk_pixmap_new (GdkWindow *window, if (depth == -1) depth = gdk_window_get_visual (window)->depth; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->xdisplay = window_private->xdisplay; @@ -106,7 +106,7 @@ gdk_bitmap_create_from_data (GdkWindow *window, if (window_private->destroyed) return NULL; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->parent = NULL; @@ -158,7 +158,7 @@ gdk_pixmap_create_from_data (GdkWindow *window, if (depth == -1) depth = gdk_window_get_visual (window)->depth; - private = g_new (GdkWindowPrivate, 1); + private = g_new0 (GdkWindowPrivate, 1); pixmap = (GdkPixmap*) private; private->parent = NULL; diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index b0931484b..56e8cdfb8 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -277,6 +277,7 @@ gdk_window_new (GdkWindow *parent, private->xdisplay = parent_display; private->destroyed = FALSE; + private->mapped = FALSE; private->resize_count = 0; private->ref_count = 1; xattributes_mask = 0; @@ -511,6 +512,7 @@ gdk_window_foreign_new (guint32 anid) private->ref_count = 1; private->window_type = GDK_WINDOW_FOREIGN; private->destroyed = FALSE; + private->mapped = (attrs.map_state != IsUnmapped); private->extension_events = 0; private->colormap = NULL; @@ -716,6 +718,7 @@ gdk_window_show (GdkWindow *window) private = (GdkWindowPrivate*) window; if (!private->destroyed) { + private->mapped = TRUE; XRaiseWindow (private->xdisplay, private->xwindow); XMapWindow (private->xdisplay, private->xwindow); } @@ -730,7 +733,10 @@ gdk_window_hide (GdkWindow *window) private = (GdkWindowPrivate*) window; if (!private->destroyed) - XUnmapWindow (private->xdisplay, private->xwindow); + { + private->mapped = FALSE; + XUnmapWindow (private->xdisplay, private->xwindow); + } } void @@ -2470,6 +2476,55 @@ gdk_window_merge_child_shapes (GdkWindow *window) #endif } +/************************************************************* + * gdk_window_is_visible: + * Check if the given window is mapped. + * arguments: + * window: + * results: + * is the window mapped + *************************************************************/ + +gboolean +gdk_window_is_visible (GdkWindow *window) +{ + GdkWindowPrivate *private = (GdkWindowPrivate *)window; + + g_return_val_if_fail (window != NULL, FALSE); + + return private->mapped; +} + +/************************************************************* + * gdk_window_is_viewable: + * Check if the window and all ancestors of the window + * are mapped. (This is not necessarily "viewable" in + * the X sense, since we only check as far as we have + * GDK window parents, not to the root window) + * arguments: + * window: + * results: + * is the window viewable + *************************************************************/ + +gboolean +gdk_window_is_viewable (GdkWindow *window) +{ + GdkWindowPrivate *private = (GdkWindowPrivate *)window; + + g_return_val_if_fail (window != NULL, FALSE); + + while (private && (private != &gdk_root_parent)) + { + if (!private->mapped) + return FALSE; + + private = (GdkWindowPrivate *)private->parent; + } + + return TRUE; +} + void gdk_drawable_set_data (GdkDrawable *drawable, const gchar *key, @@ -2479,3 +2534,4 @@ gdk_drawable_set_data (GdkDrawable *drawable, g_dataset_set_data_full (drawable, key, data, destroy_func); } + |