summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-09-29 23:42:45 +0000
committerHavoc Pennington <hp@src.gnome.org>2003-09-29 23:42:45 +0000
commit0895abd894320b1649006830fa8de6b680ec003e (patch)
treec1972c6d707b2642bf5f9acfe2752fb4820e516f
parentf7c04aff1ec143502b1467e32aad3fd8c5918a25 (diff)
downloadmetacity-0895abd894320b1649006830fa8de6b680ec003e.tar.gz
put a random cap on number of characters in the title of each window, bug
2003-09-29 Havoc Pennington <hp@redhat.com> * src/tabpopup.c (meta_ui_tab_popup_new): put a random cap on number of characters in the title of each window, bug #109301
-rw-r--r--ChangeLog5
-rw-r--r--src/tabpopup.c33
2 files changed, 33 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index c83c4557..de14e97a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2003-09-29 Havoc Pennington <hp@redhat.com>
+ * src/tabpopup.c (meta_ui_tab_popup_new): put a random cap on
+ number of characters in the title of each window, bug #109301
+
+2003-09-29 Havoc Pennington <hp@redhat.com>
+
* configure.in: put -lXext in Xrandr check, bug #115996
2003-09-29 Havoc Pennington <hp@redhat.com>
diff --git a/src/tabpopup.c b/src/tabpopup.c
index db52343a..fa420176 100644
--- a/src/tabpopup.c
+++ b/src/tabpopup.c
@@ -101,6 +101,20 @@ outline_window_expose (GtkWidget *widget,
return FALSE;
}
+static char*
+utf8_strndup (const char *src,
+ int n)
+{
+ const gchar *s = src;
+ while (n && *s)
+ {
+ s = g_utf8_next_char (s);
+ n--;
+ }
+
+ return g_strndup (src, s - src);
+}
+
MetaTabPopup*
meta_ui_tab_popup_new (const MetaTabEntry *entries,
int screen_number,
@@ -117,9 +131,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
GtkWidget *align;
GList *tmp;
GtkWidget *frame;
- int max_label_width;
+ int max_label_width; /* the actual max width of the labels we create */
AtkObject *obj;
-
+ int max_chars_per_title; /* max chars we allow in a label */
+ GdkScreen *screen;
+
popup = g_new (MetaTabPopup, 1);
popup->outline_window = gtk_window_new (GTK_WINDOW_POPUP);
@@ -136,9 +152,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
popup->window = gtk_window_new (GTK_WINDOW_POPUP);
+ screen = gdk_display_get_screen (gdk_display_get_default (),
+ screen_number);
+
gtk_window_set_screen (GTK_WINDOW (popup->window),
- gdk_display_get_screen (gdk_display_get_default (),
- screen_number));
+ screen);
gtk_window_set_position (GTK_WINDOW (popup->window),
GTK_WIN_POS_CENTER_ALWAYS);
@@ -149,6 +167,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
popup->entries = NULL;
popup->current_selected_entry = NULL;
popup->outline = outline;
+
+ /* make max title size some random relationship to the screen,
+ * avg char width of our font would be a better number.
+ */
+ max_chars_per_title = gdk_screen_get_width (screen) / 15;
tab_entries = NULL;
for (i = 0; i < entry_count; ++i)
@@ -157,7 +180,7 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
te = g_new (TabEntry, 1);
te->key = entries[i].key;
- te->title = g_strdup (entries[i].title);
+ te->title = utf8_strndup (entries[i].title, max_chars_per_title);
te->widget = NULL;
te->icon = entries[i].icon;
te->blank = entries[i].blank;