diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2007-01-15 13:09:58 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@src.gnome.org> | 2007-01-15 13:09:58 +0000 |
commit | 1d1122b3573b2da100296d4f17878ce44ec1694e (patch) | |
tree | c17d86fc57d13433b2c588cbbcf79b0019852968 | |
parent | dc3fefed7cf97654e6d5afb1716e106c5a06eb39 (diff) | |
download | gdk-pixbuf-1d1122b3573b2da100296d4f17878ce44ec1694e.tar.gz |
Backport from trunk.
2007-01-15 Emmanuele Bassi <ebassi@gnome.org>
Backport from trunk.
* gtk/gtkrecentchoosermenu.c: Ellipsize the menu items label
if they grow too much. (#357303)
svn path=/branches/gtk-2-10/; revision=17157
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | gtk/gtkrecentchoosermenu.c | 28 |
2 files changed, 28 insertions, 7 deletions
@@ -1,3 +1,10 @@ +2007-01-15 Emmanuele Bassi <ebassi@gnome.org> + + Backport from trunk. + + * gtk/gtkrecentchoosermenu.c: Ellipsize the menu items label + if they grow too much. (#357303) + 2007-01-14 Matthias Clasen <mclasen@redhat.com> Merge from trunk: diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c index 31d2671a4..ed9397ea6 100644 --- a/gtk/gtkrecentchoosermenu.c +++ b/gtk/gtkrecentchoosermenu.c @@ -42,6 +42,7 @@ #include "gtkseparatormenuitem.h" #include "gtkmenu.h" #include "gtkimage.h" +#include "gtklabel.h" #include "gtkobject.h" #include "gtktooltips.h" #include "gtktypebuiltins.h" @@ -62,6 +63,9 @@ struct _GtkRecentChooserMenuPrivate /* size of the icons of the menu items */ gint icon_size; + /* max size of the menu item label */ + gint label_width; + /* RecentChooser properties */ gint limit; guint show_private : 1; @@ -97,6 +101,7 @@ enum { #define FALLBACK_ICON_SIZE 32 #define FALLBACK_ITEM_LIMIT 10 +#define DEFAULT_LABEL_WIDTH 30 #define GTK_RECENT_CHOOSER_MENU_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_RECENT_CHOOSER_MENU, GtkRecentChooserMenuPrivate)) @@ -236,6 +241,8 @@ gtk_recent_chooser_menu_init (GtkRecentChooserMenu *menu) priv->sort_type = GTK_RECENT_SORT_NONE; priv->icon_size = FALLBACK_ICON_SIZE; + + priv->label_width = DEFAULT_LABEL_WIDTH; priv->current_filter = NULL; @@ -899,8 +906,8 @@ gtk_recent_chooser_menu_create_item (GtkRecentChooserMenu *menu, gint count) { GtkRecentChooserMenuPrivate *priv; - gchar *label; - GtkWidget *item, *image; + gchar *text; + GtkWidget *item, *image, *label; GdkPixbuf *icon; g_assert (info != NULL); @@ -919,19 +926,26 @@ gtk_recent_chooser_menu_create_item (GtkRecentChooserMenu *menu, /* avoid clashing mnemonics */ if (count <= 10) - label = g_strdup_printf ("_%d. %s", count, escaped); + text = g_strdup_printf ("_%d. %s", count, escaped); else - label = g_strdup_printf ("%d. %s", count, escaped); + text = g_strdup_printf ("%d. %s", count, escaped); - item = gtk_image_menu_item_new_with_mnemonic (label); + item = gtk_image_menu_item_new_with_mnemonic (text); g_free (escaped); g_free (name); } else { - label = g_strdup (gtk_recent_info_get_display_name (info)); - item = gtk_image_menu_item_new_with_label (label); + text = g_strdup (gtk_recent_info_get_display_name (info)); + item = gtk_image_menu_item_new_with_label (text); + } + + label = GTK_BIN (item)->child; + if (label) + { + gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); + gtk_label_set_max_width_chars (GTK_LABEL (label), priv->label_width); } if (priv->show_icons) |