diff options
author | Tim Janik <timj@gtk.org> | 1998-09-03 02:38:53 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-09-03 02:38:53 +0000 |
commit | 698c89e5c4164fdf0014f2608f9ae32594cf0202 (patch) | |
tree | cce60ec913464dae4b88596a73782c73a9eb09b9 /gtk/gtkpaned.c | |
parent | af9c5dede49caaf6d0dd82853b653eba5fdd7a7e (diff) | |
download | gtk+-698c89e5c4164fdf0014f2608f9ae32594cf0202.tar.gz |
GTK_MENU_DIR_CHILD: check for the existance of
Thu Sep 3 04:22:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmenushell.c (gtk_real_menu_shell_move_current):
GTK_MENU_DIR_CHILD: check for the existance of
menu_shell->active_menu_item before accessing its child.
GTK_MENU_DIR_PREV:
GTK_MENU_DIR_NEXT: if we haven't had an active item and still
don't, make a default selection.
Wed Sep 2 00:28:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_propagate_state): iterate
the children with _forall for sensitivity changes and with
_foreach on pure state changes. this fixes a lot of the
old inclusions of internal widgets into _foreach calls.
* gtk/gtktree.c: removed gtk_tree_foreach, let gtk_tree_forall
do the work. don't walk the subtrees of first level children.
* gtk/gtktreeitem.c: provide a _forall implementation,
which walks the subtrees as well for include_internals.
* gtk/gtkmenuitem.c: provide a _forall implementation, which walks
the submenus as well for include_internals.
* gtk/gtkscrolledwindow.c: removed gtk_scrolled_window_foreach and
implemented gtk_scrolled_window_forall, which will iterate over
the viewport and the scrollbars for gtk_container_forall or
iterate over the viewports children for gtk_container_foreach.
* gtk/gtktoolbar.c:
* gtk/gtktable.c:
* gtk/gtkpaned.c:
* gtk/gtkpacker.c:
* gtk/gtkmenushell.c:
* gtk/gtklist.c:
* gtk/gtkfixed.c:
* gtk/gtkclist.c:
* gtk/gtkbox.c:
* gtk/gtkbin.c:
* gtk/gtknotebook.c:
removed the old gtk_*_foreach functions and provided gtk_*_forall.
* gtk/gtknotebook.c:
(gtk_notebook_real_switch_page): expose tabs.
(gtk_notebook_page_num): new function to return the page number
of a distinct child.
(gtk_notebook_focus): minor fixups. foxus handling is still screwed
under some circumstances.
* gtk/gtktreeitem.c:
(gtk_real_tree_item_select):
(gtk_real_tree_item_deselect): major fixes.
some general fixups wrt queue_redraw, and tree items not being
NO_WINDOW widgets.
* gtk/gtklistitem.c:
(gtk_real_list_item_select):
(gtk_real_list_item_deselect):
(gtk_real_list_item_toggle):
removed unneccessary queue_redraw calls.
Wed Aug 30 09:42:07 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c: allow optionmenus to have the focus and
automatically popup the menu on space bar.
Wed Aug 26 06:40:34 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c: implemented gtk_container_forall() (as a class
method), which acts similar to gtk_container_foreach(), but iterates
over internal children. the GtkContainer::foreach signal vanished in
favour of a new class method ->forall() that optionally includes
internal widgets.
* gtk/gtkclist.c (gtk_clist_init): provide no _foreach implementation
but a _forall implementation, since all child widgets we have are
internal ones.
(column_button_create): set the parent window prior
to gtk_widget_set_parent().
* gtk/gtkwidget.c:
exchanged all calls to gtk_container_foreach() with
gtk_container_forall().
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: added the GTK_COMPOSITE_CHILD, exported through
the GtkWidget::composite_child argument. to have a widget created
with the flag initially, two new functions got added to wrap a widgets
creation:
gtk_widget_push_composite_flag() and gtk_widget_pop_composite_flag().
Wed Aug 25 23:37:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktooltips.h:
* gtk/gtktooltips.c: exported gtk_tooltips_create_window() as
gtk_tooltips_force_window(), so tooltips->tip_window can be accessed
prior to the first tip being set.
don't put an extra reference on the window, since it is a toplevel,
it wont get destroyed from anywhere else.
* overall macro and GtkType fixups.
Diffstat (limited to 'gtk/gtkpaned.c')
-rw-r--r-- | gtk/gtkpaned.c | 154 |
1 files changed, 81 insertions, 73 deletions
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c index ac8209ba16..e30b9747e2 100644 --- a/gtk/gtkpaned.c +++ b/gtk/gtkpaned.c @@ -26,12 +26,13 @@ static void gtk_paned_map (GtkWidget *widget); static void gtk_paned_unmap (GtkWidget *widget); static void gtk_paned_unrealize (GtkWidget *widget); static gint gtk_paned_expose (GtkWidget *widget, - GdkEventExpose *event); + GdkEventExpose *event); static void gtk_paned_add (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_paned_remove (GtkContainer *container, - GtkWidget *widget); -static void gtk_paned_foreach (GtkContainer *container, + GtkWidget *widget); +static void gtk_paned_forall (GtkContainer *container, + gboolean include_internals, GtkCallback callback, gpointer callback_data); static GtkType gtk_paned_child_type (GtkContainer *container); @@ -40,11 +41,11 @@ static GtkType gtk_paned_child_type (GtkContainer *container); static GtkContainerClass *parent_class = NULL; -guint +GtkType gtk_paned_get_type (void) { - static guint paned_type = 0; - + static GtkType paned_type = 0; + if (!paned_type) { GtkTypeInfo paned_info = @@ -58,10 +59,10 @@ gtk_paned_get_type (void) /* reserved_2 */ NULL, (GtkClassInitFunc) NULL, }; - - paned_type = gtk_type_unique (gtk_container_get_type (), &paned_info); + + paned_type = gtk_type_unique (GTK_TYPE_CONTAINER, &paned_info); } - + return paned_type; } @@ -71,22 +72,22 @@ gtk_paned_class_init (GtkPanedClass *class) GtkObjectClass *object_class; GtkWidgetClass *widget_class; GtkContainerClass *container_class; - + object_class = (GtkObjectClass*) class; widget_class = (GtkWidgetClass*) class; container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_container_get_type ()); - + + parent_class = gtk_type_class (GTK_TYPE_CONTAINER); + widget_class->realize = gtk_paned_realize; widget_class->map = gtk_paned_map; widget_class->unmap = gtk_paned_unmap; widget_class->unrealize = gtk_paned_unrealize; widget_class->expose_event = gtk_paned_expose; - + container_class->add = gtk_paned_add; container_class->remove = gtk_paned_remove; - container_class->foreach = gtk_paned_foreach; + container_class->forall = gtk_paned_forall; container_class->child_type = gtk_paned_child_type; } @@ -103,17 +104,17 @@ static void gtk_paned_init (GtkPaned *paned) { GTK_WIDGET_UNSET_FLAGS (paned, GTK_NO_WINDOW); - + paned->child1 = NULL; paned->child2 = NULL; paned->handle = NULL; paned->xor_gc = NULL; - + paned->handle_size = 10; paned->gutter_size = 6; paned->position_set = FALSE; paned->in_drag = FALSE; - + paned->handle_xpos = -1; paned->handle_ypos = -1; } @@ -125,13 +126,13 @@ gtk_paned_realize (GtkWidget *widget) GtkPaned *paned; GdkWindowAttr attributes; gint attributes_mask; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_PANED (widget)); - + GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); paned = GTK_PANED (widget); - + attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; @@ -142,11 +143,11 @@ gtk_paned_realize (GtkWidget *widget) attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - + widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (widget->window, paned); - + attributes.x = paned->handle_xpos; attributes.y = paned->handle_ypos; attributes.width = paned->handle_size; @@ -157,32 +158,32 @@ gtk_paned_realize (GtkWidget *widget) GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK); attributes_mask |= GDK_WA_CURSOR; - + paned->handle = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_user_data (paned->handle, paned); - + widget->style = gtk_style_attach (widget->style, widget->window); - + gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); gtk_style_set_background (widget->style, paned->handle, GTK_STATE_NORMAL); - + gdk_window_show (paned->handle); } - + static void gtk_paned_map (GtkWidget *widget) { GtkPaned *paned; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_PANED (widget)); - + GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); paned = GTK_PANED (widget); - + gdk_window_show (widget->window); - + if (paned->child1 && GTK_WIDGET_VISIBLE (paned->child1) && !GTK_WIDGET_MAPPED (paned->child1)) @@ -198,9 +199,9 @@ gtk_paned_unmap (GtkWidget *widget) { g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_PANED (widget)); - + GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - + gdk_window_hide (widget->window); } @@ -208,18 +209,18 @@ static void gtk_paned_unrealize (GtkWidget *widget) { GtkPaned *paned; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_PANED (widget)); - + paned = GTK_PANED (widget); - + if (paned->xor_gc) { gdk_gc_destroy (paned->xor_gc); paned->xor_gc = NULL; } - + if (paned->handle) { gdk_window_set_user_data (paned->handle, NULL); @@ -228,7 +229,7 @@ gtk_paned_unrealize (GtkWidget *widget) gdk_cursor_destroy (paned->cursor); paned->cursor = NULL; } - + if (GTK_WIDGET_CLASS (parent_class)->unrealize) (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); } @@ -239,15 +240,15 @@ gtk_paned_expose (GtkWidget *widget, { GtkPaned *paned; GdkEventExpose child_event; - + g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_PANED (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); - + if (GTK_WIDGET_DRAWABLE (widget)) { paned = GTK_PANED (widget); - + /* An expose event for the handle */ if (event->window == paned->handle) { @@ -266,12 +267,12 @@ gtk_paned_expose (GtkWidget *widget, GTK_WIDGET_NO_WINDOW (paned->child1) && gtk_widget_intersect (paned->child1, &event->area, &child_event.area)) gtk_widget_event (paned->child1, (GdkEvent*) &child_event); - + if (paned->child2 && GTK_WIDGET_NO_WINDOW (paned->child2) && gtk_widget_intersect (paned->child2, &event->area, &child_event.area)) gtk_widget_event (paned->child2, (GdkEvent*) &child_event); - + /* redraw the groove if necessary */ if (gdk_rectangle_intersect (&paned->groove_rectangle, &event->area, @@ -287,11 +288,11 @@ gtk_paned_add1 (GtkPaned *paned, GtkWidget *widget) { g_return_if_fail (widget != NULL); - + if (!paned->child1) { gtk_widget_set_parent (widget, GTK_WIDGET (paned)); - + if (GTK_WIDGET_VISIBLE (widget->parent)) { if (GTK_WIDGET_REALIZED (widget->parent) && @@ -302,9 +303,9 @@ gtk_paned_add1 (GtkPaned *paned, !GTK_WIDGET_MAPPED (widget)) gtk_widget_map (widget); } - + paned->child1 = widget; - + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (paned)) gtk_widget_queue_resize (widget); } @@ -315,11 +316,11 @@ gtk_paned_add2 (GtkPaned *paned, GtkWidget *widget) { g_return_if_fail (widget != NULL); - + if (!paned->child2) { gtk_widget_set_parent (widget, GTK_WIDGET (paned)); - + if (GTK_WIDGET_VISIBLE (widget->parent)) { if (GTK_WIDGET_REALIZED (widget->parent) && @@ -330,9 +331,9 @@ gtk_paned_add2 (GtkPaned *paned, !GTK_WIDGET_MAPPED (widget)) gtk_widget_map (widget); } - + paned->child2 = widget; - + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (paned)) gtk_widget_queue_resize (widget); } @@ -343,13 +344,13 @@ gtk_paned_add (GtkContainer *container, GtkWidget *widget) { GtkPaned *paned; - + g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_PANED (container)); g_return_if_fail (widget != NULL); - + paned = GTK_PANED (container); - + if (!paned->child1) gtk_paned_add1 (GTK_PANED (container),widget); else if (!paned->child2) @@ -362,47 +363,48 @@ gtk_paned_remove (GtkContainer *container, { GtkPaned *paned; gboolean was_visible; - + g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_PANED (container)); g_return_if_fail (widget != NULL); - + paned = GTK_PANED (container); was_visible = GTK_WIDGET_VISIBLE (widget); if (paned->child1 == widget) { gtk_widget_unparent (widget); - + paned->child1 = NULL; - + if (was_visible && GTK_WIDGET_VISIBLE (container)) gtk_widget_queue_resize (GTK_WIDGET (container)); } else if (paned->child2 == widget) { gtk_widget_unparent (widget); - + paned->child2 = NULL; - + if (was_visible && GTK_WIDGET_VISIBLE (container)) gtk_widget_queue_resize (GTK_WIDGET (container)); } } static void -gtk_paned_foreach (GtkContainer *container, - GtkCallback callback, - gpointer callback_data) +gtk_paned_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) { GtkPaned *paned; - + g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_PANED (container)); g_return_if_fail (callback != NULL); - + paned = GTK_PANED (container); - + if (paned->child1) (* callback) (paned->child1, callback_data); if (paned->child2) @@ -410,9 +412,13 @@ gtk_paned_foreach (GtkContainer *container, } void -gtk_paned_handle_size (GtkPaned *paned, guint16 size) +gtk_paned_handle_size (GtkPaned *paned, + guint16 size) { gint x,y; + + g_return_if_fail (paned != NULL); + g_return_if_fail (GTK_IS_PANED (paned)); if (paned->handle) { @@ -422,16 +428,18 @@ gtk_paned_handle_size (GtkPaned *paned, guint16 size) y + paned->handle_size / 2 - size / 2, size, size); } - paned->handle_size = size; } void -gtk_paned_gutter_size (GtkPaned *paned, guint16 size) +gtk_paned_gutter_size (GtkPaned *paned, + guint16 size) { - paned->gutter_size = size; + g_return_if_fail (paned != NULL); + g_return_if_fail (GTK_IS_PANED (paned)); + paned->gutter_size = size; + if (GTK_WIDGET_VISIBLE (GTK_WIDGET (paned))) gtk_widget_queue_resize (GTK_WIDGET (paned)); } - |