Updating branch refs/heads/jannis/new-shortcuts-pane to 37bc2b962d2dc834e8ad34853f7a0ba7d15adb49 (commit) from 1c82b51da2829aaba70f6bf289d77a12c11401e3 (commit)
commit 37bc2b962d2dc834e8ad34853f7a0ba7d15adb49 Author: Jannis Pohlmann <jan...@xfce.org> Date: Thu Nov 17 15:59:44 2011 +0000 Properly align ThunarShortcut contents with group titles. thunar/thunar-shortcut-group.c | 58 ++++++++++++++++++++++++++++++++++++++++ thunar/thunar-shortcut.c | 22 ++++++++++----- thunar/thunar-shortcut.h | 1 + 3 files changed, 74 insertions(+), 7 deletions(-) diff --git a/thunar/thunar-shortcut-group.c b/thunar/thunar-shortcut-group.c index 9b23619..ee8e16b 100644 --- a/thunar/thunar-shortcut-group.c +++ b/thunar/thunar-shortcut-group.c @@ -61,6 +61,11 @@ static void thunar_shortcut_group_set_property (GObject GParamSpec *pspec); static void thunar_shortcut_group_attract_attention (ThunarShortcutGroup *group); static gboolean thunar_shortcut_group_flash_expander (gpointer user_data); +static void thunar_shortcut_group_expand_style_set (ThunarShortcutGroup *group, + GtkStyle *style, + GtkWidget *expander); +static void thunar_shortcut_group_apply_indentation (ThunarShortcutGroup *group, + ThunarShortcut *shortcut); @@ -138,6 +143,10 @@ thunar_shortcut_group_init (ThunarShortcutGroup *group) gtk_container_add (GTK_CONTAINER (group), group->expander); gtk_widget_show (group->expander); + g_signal_connect_swapped (group->expander, "style-set", + G_CALLBACK (thunar_shortcut_group_expand_style_set), + group); + /* add a box for the individual shortcuts */ group->shortcuts = gtk_vbox_new (TRUE, 0); gtk_container_add (GTK_CONTAINER (group->expander), group->shortcuts); @@ -309,6 +318,52 @@ thunar_shortcut_group_flash_expander (gpointer user_data) +static void +thunar_shortcut_group_expand_style_set (ThunarShortcutGroup *group, + GtkStyle *style, + GtkWidget *expander) +{ + GList *children; + GList *iter; + + _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group)); + _thunar_return_if_fail (GTK_IS_EXPANDER (expander)); + _thunar_return_if_fail (expander == group->expander); + + children = gtk_container_get_children (GTK_CONTAINER (group->shortcuts)); + + for (iter = children; iter != NULL; iter = iter->next) + thunar_shortcut_group_apply_indentation (group, THUNAR_SHORTCUT (iter->data)); + + g_list_free (children); +} + + + +static void +thunar_shortcut_group_apply_indentation (ThunarShortcutGroup *group, + ThunarShortcut *shortcut) +{ + GtkWidget *alignment; + gint expander_size; + gint expander_spacing; + + _thunar_return_if_fail (THUNAR_IS_SHORTCUT_GROUP (group)); + _thunar_return_if_fail (THUNAR_IS_SHORTCUT (shortcut)); + + /* get information about the expander arrow size */ + gtk_widget_style_get (group->expander, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); + + /* apply the indentation to the shortcut alignment */ + alignment = thunar_shortcut_get_alignment (shortcut); + g_object_set (alignment, "left-padding", expander_size + expander_spacing * 2 + 1, NULL); +} + + + GtkWidget * thunar_shortcut_group_new (const gchar *label, ThunarShortcutType accepted_types) @@ -341,6 +396,9 @@ thunar_shortcut_group_try_add_shortcut (ThunarShortcutGroup *group, /* TODO find the sorting, remembered or user-defined position for the shortcut */ + /* properly align the shortcut contents with the group title */ + thunar_shortcut_group_apply_indentation (group, shortcut); + gtk_box_pack_start (GTK_BOX (group->shortcuts), GTK_WIDGET (shortcut), FALSE, TRUE, 0); gtk_widget_show (GTK_WIDGET (shortcut)); diff --git a/thunar/thunar-shortcut.c b/thunar/thunar-shortcut.c index c13e51c..66fa959 100644 --- a/thunar/thunar-shortcut.c +++ b/thunar/thunar-shortcut.c @@ -191,6 +191,7 @@ struct _ThunarShortcut guint persistent : 1; guint constructed : 1; + GtkWidget *alignment; GtkWidget *label_widget; GtkWidget *icon_image; GtkWidget *action_button; @@ -391,7 +392,6 @@ thunar_shortcut_class_init (ThunarShortcutClass *klass) static void thunar_shortcut_init (ThunarShortcut *shortcut) { - GtkWidget *alignment; GtkWidget *box; /* create a cancellable for aborting mount/unmount operations */ @@ -405,15 +405,14 @@ thunar_shortcut_init (ThunarShortcut *shortcut) gtk_widget_set_sensitive (GTK_WIDGET (shortcut), TRUE); /* create the alignment for left and right padding */ - alignment = gtk_alignment_new (0.0f, 0.0f, 1.0f, 1.0f); - /* TODO use expander arrow width instead of 16 here */ - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 16, 4); - gtk_container_add (GTK_CONTAINER (shortcut), alignment); - gtk_widget_show (alignment); + shortcut->alignment = gtk_alignment_new (0.0f, 0.0f, 1.0f, 1.0f); + gtk_alignment_set_padding (GTK_ALIGNMENT (shortcut->alignment), 0, 0, 0, 4); + gtk_container_add (GTK_CONTAINER (shortcut), shortcut->alignment); + gtk_widget_show (shortcut->alignment); /* create a box for the different sub-widgets */ box = gtk_hbox_new (FALSE, 4); - gtk_container_add (GTK_CONTAINER (alignment), box); + gtk_container_add (GTK_CONTAINER (shortcut->alignment), box); gtk_widget_show (box); /* create the icon widget */ @@ -1999,6 +1998,15 @@ thunar_shortcut_set_persistent (ThunarShortcut *shortcut, +GtkWidget * +thunar_shortcut_get_alignment (ThunarShortcut *shortcut) +{ + _thunar_return_val_if_fail (THUNAR_IS_SHORTCUT (shortcut), NULL); + return shortcut->alignment; +} + + + void thunar_shortcut_resolve_and_activate (ThunarShortcut *shortcut, gboolean open_in_new_window) diff --git a/thunar/thunar-shortcut.h b/thunar/thunar-shortcut.h index 59395f1..4cd0bc2 100644 --- a/thunar/thunar-shortcut.h +++ b/thunar/thunar-shortcut.h @@ -81,6 +81,7 @@ void thunar_shortcut_set_mutable (ThunarShortcut *shor gboolean thunar_shortcut_get_persistent (ThunarShortcut *shortcut); void thunar_shortcut_set_persistent (ThunarShortcut *shortcut, gboolean persistent); +GtkWidget *thunar_shortcut_get_alignment (ThunarShortcut *shortcut); void thunar_shortcut_resolve_and_activate (ThunarShortcut *shortcut, gboolean open_in_new_window); void thunar_shortcut_cancel_activation (ThunarShortcut *shortcut); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits