diff options
author | Tim Janik <timj@gtk.org> | 1998-06-24 17:15:05 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-06-24 17:15:05 +0000 |
commit | faa14347351f000690d85d07d0f580679b65e30f (patch) | |
tree | fd85231950d0b5e37f3c00107da4494964b1013a /gtk | |
parent | 11f55887557e07a3d29a547cdfa110ddb0b705b2 (diff) | |
download | gtk+-faa14347351f000690d85d07d0f580679b65e30f.tar.gz |
do not avoid to queue for a resize if the container is not visible, we
Wed Jun 24 16:38:02 1998 Tim Janik <timj@gtk.org>
* gtk/gtkbin.c (gtk_bin_remove): do not avoid to queue for a resize
if the container is not visible, we might be a toplevel! this holds
for all other base container implementations as well, that are
candidates to derive toplevels from. in general the resizing code will
care about visibility itself.
* gtk/gtkmenushell.c (gtk_menu_shell_remove): likewise.
* gtk/gtkbox.c (gtk_box_remove): likewise.
* gtk/gtkwindow.c (gtk_window_move_resize): save ->use_uposition around
gtk_window_set_hints(), since we haven't calculated the new position
yet.
* gdk/gdkwindow.c (gdk_window_get_pointer): take care that *x, *y and
*mask are alway initialized in a sane way, regardless of the return
value.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkbin.c | 5 | ||||
-rw-r--r-- | gtk/gtkbox.c | 9 | ||||
-rw-r--r-- | gtk/gtkmenushell.c | 5 | ||||
-rw-r--r-- | gtk/gtkwidget.c | 3 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 10 |
5 files changed, 24 insertions, 8 deletions
diff --git a/gtk/gtkbin.c b/gtk/gtkbin.c index 6e7f397dfc..6486ad90bc 100644 --- a/gtk/gtkbin.c +++ b/gtk/gtkbin.c @@ -251,7 +251,10 @@ gtk_bin_remove (GtkContainer *container, gtk_widget_unparent (widget); bin->child = NULL; - if (widget_was_visible && GTK_WIDGET_VISIBLE (container)) + /* queue resize regardless of GTK_WIDGET_VISIBLE (container), + * since that's what is needed by toplevels, which derive from GtkBin. + */ + if (widget_was_visible) gtk_widget_queue_resize (GTK_WIDGET (container)); } } diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index 78e85b0e59..0b0b0a58fc 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -711,16 +711,19 @@ gtk_box_remove (GtkContainer *container, if (child->widget == widget) { - gint visible; + gboolean was_visible; - visible = GTK_WIDGET_VISIBLE (widget); + was_visible = GTK_WIDGET_VISIBLE (widget); gtk_widget_unparent (widget); box->children = g_list_remove_link (box->children, children); g_list_free (children); g_free (child); - if (visible && GTK_WIDGET_VISIBLE (container)) + /* queue resize regardless of GTK_WIDGET_VISIBLE (container), + * since that's what is needed by toplevels. + */ + if (was_visible) gtk_widget_queue_resize (GTK_WIDGET (container)); break; diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index efb3e9770c..e7afdfa390 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -553,7 +553,10 @@ gtk_menu_shell_remove (GtkContainer *container, gtk_widget_unparent (widget); - if (was_visible && GTK_WIDGET_VISIBLE (container)) + /* queue resize regardless of GTK_WIDGET_VISIBLE (container), + * since that's what is needed by toplevels. + */ + if (was_visible) gtk_widget_queue_resize (GTK_WIDGET (container)); } diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 1cdf74546d..a43fbba834 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -825,7 +825,8 @@ gtk_widget_set_arg (GtkWidget *widget, gtk_widget_set_style (widget, (GtkStyle*) GTK_VALUE_BOXED (*arg)); break; case ARG_EVENTS: - gtk_widget_set_events (widget, GTK_VALUE_FLAGS (*arg)); + if (!GTK_WIDGET_REALIZED (widget) && !GTK_WIDGET_NO_WINDOW (widget)) + gtk_widget_set_events (widget, GTK_VALUE_FLAGS (*arg)); break; case ARG_EXTENSION_EVENTS: gtk_widget_set_extension_events (widget, GTK_VALUE_FLAGS (*arg)); diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 08c66781fb..b2b40e49ad 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -991,10 +991,16 @@ gtk_window_move_resize (GtkWindow *window) width = widget->requisition.width; height = widget->requisition.height; gtk_widget_size_request (widget, &widget->requisition); - + if ((width != widget->requisition.width || height != widget->requisition.height)) - gtk_window_set_hints (widget, &widget->requisition); + { + gboolean saved_use_upos; + + saved_use_upos = window->use_uposition; + gtk_window_set_hints (widget, &widget->requisition); + window->use_uposition = saved_use_upos; + } x = -1; y = -1; |