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.
This commit is contained in:
Tim Janik 1998-06-24 17:15:05 +00:00 committed by Tim Janik
parent 11f5588755
commit faa1434735
14 changed files with 184 additions and 37 deletions

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -1,3 +1,21 @@
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.
Wed Jun 24 14:14:32 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
@ -351,7 +369,6 @@ Wed Jun 17 03:47:40 1998 Tim Janik <timj@gtk.org>
* more GtkType and macro fixups.
>>>>>>> 1.476
1998-06-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkhandlebox.c (draw_textured_frame): Now accepts an extra

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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));
}
}

View File

@ -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;

View File

@ -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));
}

View File

@ -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));

View File

@ -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;