summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-06-24 17:15:05 +0000
committerTim Janik <timj@src.gnome.org>1998-06-24 17:15:05 +0000
commitfaa14347351f000690d85d07d0f580679b65e30f (patch)
treefd85231950d0b5e37f3c00107da4494964b1013a
parent11f55887557e07a3d29a547cdfa110ddb0b705b2 (diff)
downloadgtk+-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.
-rw-r--r--ChangeLog19
-rw-r--r--ChangeLog.pre-2-019
-rw-r--r--ChangeLog.pre-2-1019
-rw-r--r--ChangeLog.pre-2-219
-rw-r--r--ChangeLog.pre-2-419
-rw-r--r--ChangeLog.pre-2-619
-rw-r--r--ChangeLog.pre-2-819
-rw-r--r--gdk/gdkwindow.c28
-rw-r--r--gdk/x11/gdkwindow-x11.c28
-rw-r--r--gtk/gtkbin.c5
-rw-r--r--gtk/gtkbox.c9
-rw-r--r--gtk/gtkmenushell.c5
-rw-r--r--gtk/gtkwidget.c3
-rw-r--r--gtk/gtkwindow.c10
14 files changed, 184 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -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
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -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
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -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
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -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
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -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
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index c2fbbad6d2..9438fe3c08 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -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
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 46211d1142..ad19209751 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 46211d1142..ad19209751 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 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;