From: Tim Janik Date: Wed, 24 Jun 1998 17:15:05 +0000 (+0000) Subject: do not avoid to queue for a resize if the container is not visible, we X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=faa14347351f000690d85d07d0f580679b65e30f;p=~andy%2Fgtk do not avoid to queue for a resize if the container is not visible, we Wed Jun 24 16:38:02 1998 Tim Janik * 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. --- diff --git a/ChangeLog b/ChangeLog index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c2fbbad6d..9438fe3c0 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,21 @@ +Wed Jun 24 16:38:02 1998 Tim Janik + + * 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. + Wed Jun 24 14:14:32 1998 Tim Janik * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar @@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik * more GtkType and macro fixups. ->>>>>>> 1.476 1998-06-16 Federico Mena Quintero * gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 46211d114..ad1920975 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -1285,7 +1285,8 @@ gdk_window_get_origin (GdkWindow *window, GdkWindowPrivate *private; gint return_val; Window child; - gint tx, ty; + gint tx = 0; + gint ty = 0; g_return_val_if_fail (window != NULL, 0); @@ -1299,14 +1300,15 @@ gdk_window_get_origin (GdkWindow *window, 0, 0, &tx, &ty, &child); - if (x) - *x = tx; - if (y) - *y = ty; } else return_val = 0; + if (x) + *x = tx; + if (y) + *y = ty; + return return_val; } @@ -1321,8 +1323,9 @@ gdk_window_get_pointer (GdkWindow *window, Window root; Window child; int rootx, rooty; - int winx, winy; - unsigned int xmask; + int winx = 0; + int winy = 0; + unsigned int xmask = 0; if (!window) window = (GdkWindow*) &gdk_root_parent; @@ -1334,14 +1337,17 @@ gdk_window_get_pointer (GdkWindow *window, XQueryPointer (private->xdisplay, private->xwindow, &root, &child, &rootx, &rooty, &winx, &winy, &xmask)) { - if (x) *x = winx; - if (y) *y = winy; - if (mask) *mask = xmask; - if (child) return_val = gdk_window_lookup (child); } + if (x) + *x = winx; + if (y) + *y = winy; + if (mask) + *mask = xmask; + return return_val; } diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 46211d114..ad1920975 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -1285,7 +1285,8 @@ gdk_window_get_origin (GdkWindow *window, GdkWindowPrivate *private; gint return_val; Window child; - gint tx, ty; + gint tx = 0; + gint ty = 0; g_return_val_if_fail (window != NULL, 0); @@ -1299,14 +1300,15 @@ gdk_window_get_origin (GdkWindow *window, 0, 0, &tx, &ty, &child); - if (x) - *x = tx; - if (y) - *y = ty; } else return_val = 0; + if (x) + *x = tx; + if (y) + *y = ty; + return return_val; } @@ -1321,8 +1323,9 @@ gdk_window_get_pointer (GdkWindow *window, Window root; Window child; int rootx, rooty; - int winx, winy; - unsigned int xmask; + int winx = 0; + int winy = 0; + unsigned int xmask = 0; if (!window) window = (GdkWindow*) &gdk_root_parent; @@ -1334,14 +1337,17 @@ gdk_window_get_pointer (GdkWindow *window, XQueryPointer (private->xdisplay, private->xwindow, &root, &child, &rootx, &rooty, &winx, &winy, &xmask)) { - if (x) *x = winx; - if (y) *y = winy; - if (mask) *mask = xmask; - if (child) return_val = gdk_window_lookup (child); } + if (x) + *x = winx; + if (y) + *y = winy; + if (mask) + *mask = xmask; + return return_val; } diff --git a/gtk/gtkbin.c b/gtk/gtkbin.c index 6e7f397df..6486ad90b 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 78e85b0e5..0b0b0a58f 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 efb3e9770..e7afdfa39 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 1cdf74546..a43fbba83 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 08c66781f..b2b40e49a 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;