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
This commit is contained in:
Havoc Pennington 2003-09-29 23:42:45 +00:00 committed by Havoc Pennington
parent f7c04aff1e
commit 0895abd894
2 changed files with 33 additions and 5 deletions

View File

@ -1,3 +1,8 @@
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> 2003-09-29 Havoc Pennington <hp@redhat.com>
* configure.in: put -lXext in Xrandr check, bug #115996 * configure.in: put -lXext in Xrandr check, bug #115996

View File

@ -101,6 +101,20 @@ outline_window_expose (GtkWidget *widget,
return FALSE; 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* MetaTabPopup*
meta_ui_tab_popup_new (const MetaTabEntry *entries, meta_ui_tab_popup_new (const MetaTabEntry *entries,
int screen_number, int screen_number,
@ -117,9 +131,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
GtkWidget *align; GtkWidget *align;
GList *tmp; GList *tmp;
GtkWidget *frame; GtkWidget *frame;
int max_label_width; int max_label_width; /* the actual max width of the labels we create */
AtkObject *obj; AtkObject *obj;
int max_chars_per_title; /* max chars we allow in a label */
GdkScreen *screen;
popup = g_new (MetaTabPopup, 1); popup = g_new (MetaTabPopup, 1);
popup->outline_window = gtk_window_new (GTK_WINDOW_POPUP); 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); 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), gtk_window_set_screen (GTK_WINDOW (popup->window),
gdk_display_get_screen (gdk_display_get_default (), screen);
screen_number));
gtk_window_set_position (GTK_WINDOW (popup->window), gtk_window_set_position (GTK_WINDOW (popup->window),
GTK_WIN_POS_CENTER_ALWAYS); GTK_WIN_POS_CENTER_ALWAYS);
@ -149,6 +167,11 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
popup->entries = NULL; popup->entries = NULL;
popup->current_selected_entry = NULL; popup->current_selected_entry = NULL;
popup->outline = outline; 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; tab_entries = NULL;
for (i = 0; i < entry_count; ++i) 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 = g_new (TabEntry, 1);
te->key = entries[i].key; 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->widget = NULL;
te->icon = entries[i].icon; te->icon = entries[i].icon;
te->blank = entries[i].blank; te->blank = entries[i].blank;