mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
New helper function that sets the icon's and label's packing options and
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net> * gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper function that sets the icon's and label's packing options and visibility based on toolbar->style. (gtk_toolbar_internal_insert_element): (gtk_real_toolbar_style_changed): Make use of set_child_packing_and_visibility() to clean up the code and get the packing right for icon-only/text-only toolbars. (#104679) (get_first_child): Remove, and use gtk_bin_get_child() instead.
This commit is contained in:
parent
e40cc69331
commit
e12d5fb2ca
15
ChangeLog
15
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||||
|
function that sets the icon's and label's packing options and
|
||||||
|
visibility based on toolbar->style.
|
||||||
|
|
||||||
|
(gtk_toolbar_internal_insert_element):
|
||||||
|
(gtk_real_toolbar_style_changed): Make use of
|
||||||
|
set_child_packing_and_visibility() to clean up the code and get
|
||||||
|
the packing right for icon-only/text-only toolbars. (#104679)
|
||||||
|
|
||||||
|
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||||
|
|
||||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
||||||
@ -17,7 +30,7 @@ Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
|||||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||||
rectangle using the background color rather than relying on
|
rectangle using the background color rather than relying on
|
||||||
gdk_window_clear_area(), so that the palette works properly with
|
gdk_window_clear_area(), so that the palette works properly with
|
||||||
pixmap themes.
|
pixmap themes. (#101732)
|
||||||
|
|
||||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||||
to fill the drawing area in the background color.
|
to fill the drawing area in the background color.
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||||
|
function that sets the icon's and label's packing options and
|
||||||
|
visibility based on toolbar->style.
|
||||||
|
|
||||||
|
(gtk_toolbar_internal_insert_element):
|
||||||
|
(gtk_real_toolbar_style_changed): Make use of
|
||||||
|
set_child_packing_and_visibility() to clean up the code and get
|
||||||
|
the packing right for icon-only/text-only toolbars. (#104679)
|
||||||
|
|
||||||
|
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||||
|
|
||||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
||||||
@ -17,7 +30,7 @@ Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
|||||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||||
rectangle using the background color rather than relying on
|
rectangle using the background color rather than relying on
|
||||||
gdk_window_clear_area(), so that the palette works properly with
|
gdk_window_clear_area(), so that the palette works properly with
|
||||||
pixmap themes.
|
pixmap themes. (#101732)
|
||||||
|
|
||||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||||
to fill the drawing area in the background color.
|
to fill the drawing area in the background color.
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||||
|
function that sets the icon's and label's packing options and
|
||||||
|
visibility based on toolbar->style.
|
||||||
|
|
||||||
|
(gtk_toolbar_internal_insert_element):
|
||||||
|
(gtk_real_toolbar_style_changed): Make use of
|
||||||
|
set_child_packing_and_visibility() to clean up the code and get
|
||||||
|
the packing right for icon-only/text-only toolbars. (#104679)
|
||||||
|
|
||||||
|
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||||
|
|
||||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
||||||
@ -17,7 +30,7 @@ Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
|||||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||||
rectangle using the background color rather than relying on
|
rectangle using the background color rather than relying on
|
||||||
gdk_window_clear_area(), so that the palette works properly with
|
gdk_window_clear_area(), so that the palette works properly with
|
||||||
pixmap themes.
|
pixmap themes. (#101732)
|
||||||
|
|
||||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||||
to fill the drawing area in the background color.
|
to fill the drawing area in the background color.
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||||
|
function that sets the icon's and label's packing options and
|
||||||
|
visibility based on toolbar->style.
|
||||||
|
|
||||||
|
(gtk_toolbar_internal_insert_element):
|
||||||
|
(gtk_real_toolbar_style_changed): Make use of
|
||||||
|
set_child_packing_and_visibility() to clean up the code and get
|
||||||
|
the packing right for icon-only/text-only toolbars. (#104679)
|
||||||
|
|
||||||
|
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||||
|
|
||||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
||||||
@ -17,7 +30,7 @@ Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
|||||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||||
rectangle using the background color rather than relying on
|
rectangle using the background color rather than relying on
|
||||||
gdk_window_clear_area(), so that the palette works properly with
|
gdk_window_clear_area(), so that the palette works properly with
|
||||||
pixmap themes.
|
pixmap themes. (#101732)
|
||||||
|
|
||||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||||
to fill the drawing area in the background color.
|
to fill the drawing area in the background color.
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2003-01-30 Daniel Elstner <daniel.elstner@gmx.net>
|
||||||
|
|
||||||
|
* gtk/gtktoolbar.c (set_child_packing_and_visibility): New helper
|
||||||
|
function that sets the icon's and label's packing options and
|
||||||
|
visibility based on toolbar->style.
|
||||||
|
|
||||||
|
(gtk_toolbar_internal_insert_element):
|
||||||
|
(gtk_real_toolbar_style_changed): Make use of
|
||||||
|
set_child_packing_and_visibility() to clean up the code and get
|
||||||
|
the packing right for icon-only/text-only toolbars. (#104679)
|
||||||
|
|
||||||
|
(get_first_child): Remove, and use gtk_bin_get_child() instead.
|
||||||
|
|
||||||
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
2003-01-30 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
* gtk/gtktextview.c: Replace PAGE_HORIZONTALLY_HACK_VALUE by
|
||||||
@ -17,7 +30,7 @@ Thu Jan 30 16:01:29 2003 Owen Taylor <otaylor@redhat.com>
|
|||||||
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
* gtk/gtkcolorsel.c (palette_paint): Explicitely draw an opaque
|
||||||
rectangle using the background color rather than relying on
|
rectangle using the background color rather than relying on
|
||||||
gdk_window_clear_area(), so that the palette works properly with
|
gdk_window_clear_area(), so that the palette works properly with
|
||||||
pixmap themes.
|
pixmap themes. (#101732)
|
||||||
|
|
||||||
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
* demos/gtk-demo/colorsel.c: Install an "expose_event" handler
|
||||||
to fill the drawing area in the background color.
|
to fill the drawing area in the background color.
|
||||||
|
202
gtk/gtktoolbar.c
202
gtk/gtktoolbar.c
@ -1416,6 +1416,44 @@ gtk_toolbar_insert_element (GtkToolbar *toolbar,
|
|||||||
position);
|
position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_child_packing_and_visibility(GtkToolbar *toolbar,
|
||||||
|
GtkToolbarChild *child)
|
||||||
|
{
|
||||||
|
GtkWidget *box;
|
||||||
|
gboolean expand;
|
||||||
|
|
||||||
|
box = gtk_bin_get_child (GTK_BIN (child->widget));
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_BOX (box));
|
||||||
|
|
||||||
|
if (child->label)
|
||||||
|
{
|
||||||
|
expand = (toolbar->style != GTK_TOOLBAR_BOTH);
|
||||||
|
|
||||||
|
gtk_box_set_child_packing (GTK_BOX (box), child->label,
|
||||||
|
expand, expand, 0, GTK_PACK_END);
|
||||||
|
|
||||||
|
if (toolbar->style != GTK_TOOLBAR_ICONS)
|
||||||
|
gtk_widget_show (child->label);
|
||||||
|
else
|
||||||
|
gtk_widget_hide (child->label);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (child->icon)
|
||||||
|
{
|
||||||
|
expand = (toolbar->style != GTK_TOOLBAR_BOTH_HORIZ);
|
||||||
|
|
||||||
|
gtk_box_set_child_packing (GTK_BOX (box), child->icon,
|
||||||
|
expand, expand, 0, GTK_PACK_END);
|
||||||
|
|
||||||
|
if (toolbar->style != GTK_TOOLBAR_TEXT)
|
||||||
|
gtk_widget_show (child->icon);
|
||||||
|
else
|
||||||
|
gtk_widget_hide (child->icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
gtk_toolbar_internal_insert_element (GtkToolbar *toolbar,
|
gtk_toolbar_internal_insert_element (GtkToolbar *toolbar,
|
||||||
GtkToolbarChildType type,
|
GtkToolbarChildType type,
|
||||||
@ -1500,26 +1538,22 @@ gtk_toolbar_internal_insert_element (GtkToolbar *toolbar,
|
|||||||
if (text)
|
if (text)
|
||||||
{
|
{
|
||||||
child->label = gtk_label_new (text);
|
child->label = gtk_label_new (text);
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->label, FALSE, FALSE, 0);
|
gtk_container_add (GTK_CONTAINER (box), child->label);
|
||||||
if (toolbar->style != GTK_TOOLBAR_ICONS)
|
|
||||||
gtk_widget_show (child->label);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (icon)
|
if (icon)
|
||||||
{
|
{
|
||||||
child->icon = GTK_WIDGET (icon);
|
child->icon = GTK_WIDGET (icon);
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
gtk_container_add (GTK_CONTAINER (box), child->icon);
|
||||||
if (toolbar->style != GTK_TOOLBAR_TEXT)
|
|
||||||
gtk_widget_show (child->icon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type != GTK_TOOLBAR_CHILD_WIDGET)
|
set_child_packing_and_visibility (toolbar, child);
|
||||||
{
|
|
||||||
/* Mark child as ours */
|
/* Mark child as ours */
|
||||||
g_object_set_data (G_OBJECT (child->widget),
|
g_object_set_data (G_OBJECT (child->widget),
|
||||||
"gtk-toolbar-is-child",
|
"gtk-toolbar-is-child",
|
||||||
GINT_TO_POINTER (TRUE));
|
GINT_TO_POINTER (TRUE));
|
||||||
}
|
|
||||||
gtk_widget_show (child->widget);
|
gtk_widget_show (child->widget);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1691,23 +1725,13 @@ gtk_real_toolbar_orientation_changed (GtkToolbar *toolbar,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
get_first_child (GtkContainer *container)
|
|
||||||
{
|
|
||||||
GList *children = gtk_container_get_children (container);
|
|
||||||
GtkWidget *result = children ? children->data : NULL;
|
|
||||||
g_list_free (children);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_real_toolbar_style_changed (GtkToolbar *toolbar,
|
gtk_real_toolbar_style_changed (GtkToolbar *toolbar,
|
||||||
GtkToolbarStyle style)
|
GtkToolbarStyle style)
|
||||||
{
|
{
|
||||||
GList *children;
|
GList *children;
|
||||||
GtkToolbarChild *child;
|
GtkToolbarChild *child;
|
||||||
GtkWidget* box = NULL;
|
GtkWidget* box;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
|
g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
|
||||||
|
|
||||||
@ -1722,118 +1746,44 @@ gtk_real_toolbar_style_changed (GtkToolbar *toolbar,
|
|||||||
if (child->type == GTK_TOOLBAR_CHILD_BUTTON ||
|
if (child->type == GTK_TOOLBAR_CHILD_BUTTON ||
|
||||||
child->type == GTK_TOOLBAR_CHILD_RADIOBUTTON ||
|
child->type == GTK_TOOLBAR_CHILD_RADIOBUTTON ||
|
||||||
child->type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
|
child->type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
|
||||||
switch (style)
|
{
|
||||||
{
|
box = gtk_bin_get_child (GTK_BIN (child->widget));
|
||||||
case GTK_TOOLBAR_ICONS:
|
|
||||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
|
||||||
gtk_widget_show (child->icon);
|
|
||||||
|
|
||||||
if (child->label && GTK_WIDGET_VISIBLE (child->label))
|
if (style == GTK_TOOLBAR_BOTH && GTK_IS_HBOX (box))
|
||||||
gtk_widget_hide (child->label);
|
{
|
||||||
|
GtkWidget *vbox;
|
||||||
|
|
||||||
break;
|
vbox = gtk_vbox_new (FALSE, 0);
|
||||||
|
|
||||||
case GTK_TOOLBAR_TEXT:
|
if (child->label)
|
||||||
if (child->icon && GTK_WIDGET_VISIBLE (child->icon))
|
gtk_widget_reparent (child->label, vbox);
|
||||||
gtk_widget_hide (child->icon);
|
if (child->icon)
|
||||||
|
gtk_widget_reparent (child->icon, vbox);
|
||||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
|
||||||
gtk_widget_show (child->label);
|
|
||||||
|
|
||||||
break;
|
gtk_widget_destroy (box);
|
||||||
|
gtk_container_add (GTK_CONTAINER (child->widget), vbox);
|
||||||
|
|
||||||
case GTK_TOOLBAR_BOTH:
|
gtk_widget_show (vbox);
|
||||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
}
|
||||||
gtk_widget_show (child->icon);
|
else if (style == GTK_TOOLBAR_BOTH_HORIZ && GTK_IS_VBOX (box))
|
||||||
|
{
|
||||||
|
GtkWidget *hbox;
|
||||||
|
|
||||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
hbox = gtk_hbox_new (FALSE, 0);
|
||||||
gtk_widget_show (child->label);
|
|
||||||
|
|
||||||
box = get_first_child (GTK_CONTAINER (child->widget));
|
if (child->label)
|
||||||
|
gtk_widget_reparent (child->label, hbox);
|
||||||
|
if (child->icon)
|
||||||
|
gtk_widget_reparent (child->icon, hbox);
|
||||||
|
|
||||||
if (GTK_IS_HBOX (box))
|
gtk_widget_destroy (box);
|
||||||
{
|
gtk_container_add (GTK_CONTAINER (child->widget), hbox);
|
||||||
if (child->icon)
|
|
||||||
{
|
|
||||||
g_object_ref (child->icon);
|
|
||||||
gtk_container_remove (GTK_CONTAINER (box),
|
|
||||||
child->icon);
|
|
||||||
}
|
|
||||||
if (child->label)
|
|
||||||
{
|
|
||||||
g_object_ref (child->label);
|
|
||||||
gtk_container_remove (GTK_CONTAINER (box),
|
|
||||||
child->label);
|
|
||||||
}
|
|
||||||
gtk_container_remove (GTK_CONTAINER (child->widget),
|
|
||||||
box);
|
|
||||||
|
|
||||||
box = gtk_vbox_new (FALSE, 0);
|
|
||||||
gtk_widget_show (box);
|
|
||||||
|
|
||||||
if (child->label)
|
|
||||||
{
|
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->label, FALSE, FALSE, 0);
|
|
||||||
g_object_unref (child->label);
|
|
||||||
}
|
|
||||||
if (child->icon)
|
|
||||||
{
|
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
|
||||||
g_object_unref (child->icon);
|
|
||||||
}
|
|
||||||
gtk_container_add (GTK_CONTAINER (child->widget),
|
|
||||||
box);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GTK_TOOLBAR_BOTH_HORIZ:
|
|
||||||
if (child->icon && !GTK_WIDGET_VISIBLE (child->icon))
|
|
||||||
gtk_widget_show (child->icon);
|
|
||||||
if (child->label && !GTK_WIDGET_VISIBLE (child->label))
|
|
||||||
gtk_widget_show (child->label);
|
|
||||||
|
|
||||||
box = get_first_child (GTK_CONTAINER (child->widget));
|
gtk_widget_show (hbox);
|
||||||
|
}
|
||||||
if (GTK_IS_VBOX (box))
|
|
||||||
{
|
|
||||||
if (child->icon)
|
|
||||||
{
|
|
||||||
g_object_ref (child->icon);
|
|
||||||
gtk_container_remove (GTK_CONTAINER (box),
|
|
||||||
child->icon);
|
|
||||||
}
|
|
||||||
if (child->label)
|
|
||||||
{
|
|
||||||
g_object_ref (child->label);
|
|
||||||
gtk_container_remove (GTK_CONTAINER (box),
|
|
||||||
child->label);
|
|
||||||
}
|
|
||||||
gtk_container_remove (GTK_CONTAINER (child->widget),
|
|
||||||
box);
|
|
||||||
|
|
||||||
box = gtk_hbox_new (FALSE, 0);
|
set_child_packing_and_visibility (toolbar, child);
|
||||||
gtk_widget_show (box);
|
}
|
||||||
|
|
||||||
if (child->label)
|
|
||||||
{
|
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->label, TRUE, TRUE, 0);
|
|
||||||
g_object_unref (child->label);
|
|
||||||
}
|
|
||||||
if (child->icon)
|
|
||||||
{
|
|
||||||
gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
|
|
||||||
g_object_unref (child->icon);
|
|
||||||
}
|
|
||||||
gtk_container_add (GTK_CONTAINER (child->widget), box);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_queue_resize (GTK_WIDGET (toolbar));
|
gtk_widget_queue_resize (GTK_WIDGET (toolbar));
|
||||||
|
Loading…
Reference in New Issue
Block a user