summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2007-01-15 13:09:58 +0000
committerEmmanuele Bassi <ebassi@src.gnome.org>2007-01-15 13:09:58 +0000
commit1d1122b3573b2da100296d4f17878ce44ec1694e (patch)
treec17d86fc57d13433b2c588cbbcf79b0019852968
parentdc3fefed7cf97654e6d5afb1716e106c5a06eb39 (diff)
downloadgdk-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--ChangeLog7
-rw-r--r--gtk/gtkrecentchoosermenu.c28
2 files changed, 28 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fff59b4d..95c86a2c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)