forked from AuroraMiddleware/gtk
fail silently for toplevels. if resize_mode changes to GTK_RESIZE_PARENT,
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org> * gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the resize widget list before queuing the container for a new reize. (gtk_container_need_resize): changed return value to FALSE, since this used to indicate that no further resizes are needed. (gtk_container_set_arg): (gtk_container_get_arg): (gtk_container_class_init): implemented GtkContainer::resize_mode argument. (gtk_container_resize_children): when we walk up the tree of a resize widget we need to stop if we are the current parent. * gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE. (gtk_widget_hide_all): retrive the toplevel widget from via gtk_widget_get_resize_container().
This commit is contained in:
parent
5c5a45f9b0
commit
5c68ecbc0f
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
@ -1,3 +1,23 @@
|
||||
Fri Jun 19 06:18:19 1998 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkcontainer.c (gtk_container_set_resize_mode): fail silently
|
||||
for toplevels. if resize_mode changes to GTK_RESIZE_PARENT, clear the
|
||||
resize widget list before queuing the container for a new reize.
|
||||
(gtk_container_need_resize): changed return value to FALSE, since this
|
||||
used to indicate that no further resizes are needed.
|
||||
(gtk_container_set_arg):
|
||||
(gtk_container_get_arg):
|
||||
(gtk_container_class_init): implemented GtkContainer::resize_mode
|
||||
argument.
|
||||
|
||||
(gtk_container_resize_children): when we walk up the tree of a resize
|
||||
widget we need to stop if we are the current parent.
|
||||
|
||||
* gtk/gtkwidget.c (gtk_widget_queue_resize): flag the resize child with
|
||||
GTK_RESIZE_NEEDED for container->resize_mode==GTK_RESIZE_IMMEDIATE.
|
||||
(gtk_widget_hide_all): retrive the toplevel widget from via
|
||||
gtk_widget_get_resize_container().
|
||||
|
||||
Thu Jun 18 23:08:36 1998 Owen Taylor <otaylor@gtk.org>
|
||||
|
||||
* gtk/gtklist.c (gtk_list_button_press): Only respond
|
||||
|
30
gtk/gtk.defs
30
gtk/gtk.defs
@ -1,7 +1,7 @@
|
||||
;; generated by makeenums.pl ; -*- scheme -*-
|
||||
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkclist.h"
|
||||
; enumerations from "./gtkclist.h"
|
||||
|
||||
(define-enum GtkCellType
|
||||
(empty GTK_CELL_EMPTY)
|
||||
@ -10,7 +10,7 @@
|
||||
(pixtext GTK_CELL_PIXTEXT)
|
||||
(widget GTK_CELL_WIDGET))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkctree.h"
|
||||
; enumerations from "./gtkctree.h"
|
||||
|
||||
(define-enum GtkCTreePos
|
||||
(before GTK_CTREE_POS_BEFORE)
|
||||
@ -22,14 +22,14 @@
|
||||
(dotted GTK_CTREE_LINES_DOTTED)
|
||||
(none GTK_CTREE_LINES_NONE))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkdebug.h"
|
||||
; enumerations from "./gtkdebug.h"
|
||||
|
||||
(define-flags GtkDebugFlag
|
||||
(objects GTK_DEBUG_OBJECTS)
|
||||
(misc GTK_DEBUG_MISC)
|
||||
(signals GTK_DEBUG_SIGNALS))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkenums.h"
|
||||
; enumerations from "./gtkenums.h"
|
||||
|
||||
(define-flags GtkAccelFlags
|
||||
(visible GTK_ACCEL_VISIBLE)
|
||||
@ -211,13 +211,13 @@
|
||||
(dialog GTK_WINDOW_DIALOG)
|
||||
(popup GTK_WINDOW_POPUP))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkfontsel.h"
|
||||
; enumerations from "./gtkfontsel.h"
|
||||
|
||||
(define-enum GtkFontMetricType
|
||||
(ixels-metric PIXELS_METRIC)
|
||||
(oints-metric POINTS_METRIC))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkobject.h"
|
||||
; enumerations from "./gtkobject.h"
|
||||
|
||||
(define-flags GtkObjectFlags
|
||||
(destroyed GTK_DESTROYED)
|
||||
@ -234,7 +234,7 @@
|
||||
(mask GTK_ARG_MASK)
|
||||
(readwrite GTK_ARG_READWRITE))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkpacker.h"
|
||||
; enumerations from "./gtkpacker.h"
|
||||
|
||||
(define-flags GtkPackerOptions
|
||||
(expand GTK_PACK_EXPAND)
|
||||
@ -266,7 +266,7 @@
|
||||
(w GTK_ANCHOR_W)
|
||||
(e GTK_ANCHOR_E))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkprivate.h"
|
||||
; enumerations from "./gtkprivate.h"
|
||||
|
||||
(define-flags GtkPrivateFlags
|
||||
(user-style PRIVATE_GTK_USER_STYLE)
|
||||
@ -277,13 +277,13 @@
|
||||
(has-shape-mask PRIVATE_GTK_HAS_SHAPE_MASK)
|
||||
(in-reparent PRIVATE_GTK_IN_REPARENT))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkspinbutton.h"
|
||||
; enumerations from "./gtkspinbutton.h"
|
||||
|
||||
(define-enum GtkSpinButtonUpdatePolicy
|
||||
(always GTK_UPDATE_ALWAYS)
|
||||
(if-valid GTK_UPDATE_IF_VALID))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtktoolbar.h"
|
||||
; enumerations from "./gtktoolbar.h"
|
||||
|
||||
(define-enum GtkToolbarChildType
|
||||
(space GTK_TOOLBAR_CHILD_SPACE)
|
||||
@ -292,13 +292,13 @@
|
||||
(radiobutton GTK_TOOLBAR_CHILD_RADIOBUTTON)
|
||||
(widget GTK_TOOLBAR_CHILD_WIDGET))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtktree.h"
|
||||
; enumerations from "./gtktree.h"
|
||||
|
||||
(define-enum GtkTreeViewMode
|
||||
(line GTK_TREE_VIEW_LINE)
|
||||
(item GTK_TREE_VIEW_ITEM))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtktypeutils.h"
|
||||
; enumerations from "./gtktypeutils.h"
|
||||
|
||||
(define-enum GtkFundamentalType
|
||||
(invalid GTK_TYPE_INVALID)
|
||||
@ -323,7 +323,7 @@
|
||||
(c-callback GTK_TYPE_C_CALLBACK)
|
||||
(object GTK_TYPE_OBJECT))
|
||||
|
||||
; enumerations from "../../gtk+/gtk/gtkwidget.h"
|
||||
; enumerations from "./gtkwidget.h"
|
||||
|
||||
(define-flags GtkWidgetFlags
|
||||
(toplevel GTK_TOPLEVEL)
|
||||
@ -341,7 +341,7 @@
|
||||
(rc-style GTK_RC_STYLE)
|
||||
(basic GTK_BASIC))
|
||||
|
||||
; enumerations from "../../gtk+/gdk/gdkprivate.h"
|
||||
; enumerations from "../gdk/gdkprivate.h"
|
||||
|
||||
(define-flags GdkDebugFlag
|
||||
(misc GDK_DEBUG_MISC)
|
||||
@ -350,7 +350,7 @@
|
||||
(color-context GDK_DEBUG_COLOR_CONTEXT)
|
||||
(xim GDK_DEBUG_XIM))
|
||||
|
||||
; enumerations from "../../gtk+/gdk/gdktypes.h"
|
||||
; enumerations from "../gdk/gdktypes.h"
|
||||
|
||||
(define-enum GdkWindowType
|
||||
(root GDK_WINDOW_ROOT)
|
||||
|
@ -35,6 +35,7 @@ enum {
|
||||
enum {
|
||||
ARG_0,
|
||||
ARG_BORDER_WIDTH,
|
||||
ARG_RESIZE_MODE,
|
||||
ARG_CHILD
|
||||
};
|
||||
|
||||
@ -168,6 +169,7 @@ gtk_container_class_init (GtkContainerClass *class)
|
||||
hadjustment_key_id = g_quark_from_static_string (hadjustment_key);
|
||||
|
||||
gtk_object_add_arg_type ("GtkContainer::border_width", GTK_TYPE_ULONG, GTK_ARG_READWRITE, ARG_BORDER_WIDTH);
|
||||
gtk_object_add_arg_type ("GtkContainer::resize_mode", GTK_TYPE_RESIZE_MODE, GTK_ARG_READWRITE, ARG_RESIZE_MODE);
|
||||
gtk_object_add_arg_type ("GtkContainer::child", GTK_TYPE_WIDGET, GTK_ARG_WRITABLE, ARG_CHILD);
|
||||
|
||||
container_signals[ADD] =
|
||||
@ -697,6 +699,9 @@ gtk_container_set_arg (GtkContainer *container,
|
||||
case ARG_BORDER_WIDTH:
|
||||
gtk_container_border_width (container, GTK_VALUE_ULONG (*arg));
|
||||
break;
|
||||
case ARG_RESIZE_MODE:
|
||||
gtk_container_set_resize_mode (container, GTK_VALUE_ENUM (*arg));
|
||||
break;
|
||||
case ARG_CHILD:
|
||||
gtk_container_add (container, GTK_WIDGET (GTK_VALUE_OBJECT (*arg)));
|
||||
break;
|
||||
@ -715,6 +720,9 @@ gtk_container_get_arg (GtkContainer *container,
|
||||
case ARG_BORDER_WIDTH:
|
||||
GTK_VALUE_ULONG (*arg) = container->border_width;
|
||||
break;
|
||||
case ARG_RESIZE_MODE:
|
||||
GTK_VALUE_ENUM (*arg) = container->resize_mode;
|
||||
break;
|
||||
default:
|
||||
arg->type = GTK_TYPE_INVALID;
|
||||
break;
|
||||
@ -819,19 +827,25 @@ gtk_container_set_resize_mode (GtkContainer *container,
|
||||
{
|
||||
g_return_if_fail (container != NULL);
|
||||
g_return_if_fail (GTK_IS_CONTAINER (container));
|
||||
g_return_if_fail (!(GTK_WIDGET_TOPLEVEL (container) &&
|
||||
resize_mode == GTK_RESIZE_PARENT));
|
||||
g_return_if_fail (resize_mode <= GTK_RESIZE_IMMEDIATE);
|
||||
|
||||
container->resize_mode = resize_mode;
|
||||
if (GTK_WIDGET_TOPLEVEL (container) &&
|
||||
resize_mode == GTK_RESIZE_PARENT)
|
||||
resize_mode = GTK_RESIZE_QUEUE;
|
||||
|
||||
if (container->resize_widgets != NULL)
|
||||
if (container->resize_mode != resize_mode)
|
||||
{
|
||||
if (resize_mode == GTK_RESIZE_IMMEDIATE)
|
||||
gtk_container_check_resize (container);
|
||||
else if (resize_mode == GTK_RESIZE_PARENT)
|
||||
container->resize_mode = resize_mode;
|
||||
|
||||
if (container->resize_widgets != NULL)
|
||||
{
|
||||
gtk_widget_queue_resize (GTK_WIDGET (container));
|
||||
container->resize_widgets = NULL;
|
||||
if (resize_mode == GTK_RESIZE_IMMEDIATE)
|
||||
gtk_container_check_resize (container);
|
||||
else if (resize_mode == GTK_RESIZE_PARENT)
|
||||
{
|
||||
gtk_container_clear_resize_widgets (container);
|
||||
gtk_widget_queue_resize (GTK_WIDGET (container));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -849,7 +863,7 @@ gint
|
||||
gtk_container_need_resize (GtkContainer *container)
|
||||
{
|
||||
gtk_container_check_resize (container);
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -876,7 +890,7 @@ gtk_container_real_check_resize (GtkContainer *container)
|
||||
}
|
||||
}
|
||||
|
||||
/* The window hasn't changed size but one of its children
|
||||
/* The container hasn't changed size but one of its children
|
||||
* queued a resize request. Which means that the allocation
|
||||
* is not sufficient for the requisition of some child.
|
||||
* We've already performed a size request at this point,
|
||||
@ -895,12 +909,12 @@ gtk_container_resize_children (GtkContainer *container)
|
||||
GSList *resize_containers;
|
||||
GSList *node;
|
||||
|
||||
resize_widgets = container->resize_widgets;
|
||||
container->resize_widgets = NULL;
|
||||
|
||||
g_return_if_fail (container != NULL);
|
||||
g_return_if_fail (GTK_IS_CONTAINER (container));
|
||||
|
||||
resize_widgets = container->resize_widgets;
|
||||
container->resize_widgets = NULL;
|
||||
|
||||
for (node = resize_widgets; node; node = node->next)
|
||||
{
|
||||
widget = node->data;
|
||||
|
@ -1421,7 +1421,7 @@ gtk_widget_hide_all (GtkWidget *widget)
|
||||
{
|
||||
GtkWidget *toplevel;
|
||||
|
||||
toplevel = gtk_widget_get_toplevel (widget);
|
||||
toplevel = gtk_widget_get_resize_container (widget);
|
||||
GTK_CONTAINER (toplevel)->resize_widgets =
|
||||
g_slist_remove (GTK_CONTAINER (toplevel)->resize_widgets, widget);
|
||||
GTK_PRIVATE_UNSET_FLAG (widget, GTK_RESIZE_NEEDED);
|
||||
@ -1675,11 +1675,17 @@ gtk_widget_queue_resize (GtkWidget *widget)
|
||||
break;
|
||||
|
||||
case GTK_RESIZE_IMMEDIATE:
|
||||
container->resize_widgets =
|
||||
g_slist_prepend (container->resize_widgets, widget);
|
||||
gtk_container_check_resize (container);
|
||||
if (!GTK_WIDGET_RESIZE_NEEDED (widget))
|
||||
{
|
||||
GTK_PRIVATE_SET_FLAG (widget, GTK_RESIZE_NEEDED);
|
||||
container->resize_widgets =
|
||||
g_slist_prepend (container->resize_widgets, widget);
|
||||
gtk_container_check_resize (container);
|
||||
}
|
||||
break;
|
||||
case GTK_RESIZE_PARENT:
|
||||
/* Ignore */
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user