[Xfce4-commits] <xfwm4:master> Fix ellipsizing on app-buttons in tabwin
Nick Schermer
noreply at xfce.org
Sun Feb 23 21:10:05 CET 2014
Updating branch refs/heads/master
to 729c4f1220c91c1af8c4649e6cb6eefdb209e5ae (commit)
from 03eee566b7afe73a15227e328b179eeac238dc6d (commit)
commit 729c4f1220c91c1af8c4649e6cb6eefdb209e5ae
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date: Sat Jul 13 11:53:45 2013 +0200
Fix ellipsizing on app-buttons in tabwin
src/tabwin.c | 52 +++++++++++++++++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/src/tabwin.c b/src/tabwin.c
index 0890702..6803f63 100644
--- a/src/tabwin.c
+++ b/src/tabwin.c
@@ -165,7 +165,7 @@ pretty_string (const gchar *s)
}
static void
-tabwinSetLabel (TabwinWidget *tbw, gchar *class, gchar *label, int workspace)
+tabwinSetLabel (TabwinWidget *tbw, GtkWidget *buttonlabel, gchar *class, gchar *label, int workspace)
{
gchar *message;
PangoLayout *layout;
@@ -174,7 +174,7 @@ tabwinSetLabel (TabwinWidget *tbw, gchar *class, gchar *label, int workspace)
TRACE ("entering tabwinSetLabel");
message = pretty_string (class);
- gtk_button_set_label (GTK_BUTTON (tbw->selected), message);
+ gtk_label_set_text (GTK_LABEL (buttonlabel), message);
g_free (message);
if (tbw->tabwin->display_workspace)
@@ -196,7 +196,7 @@ tabwinSetLabel (TabwinWidget *tbw, gchar *class, gchar *label, int workspace)
}
static void
-tabwinSetSelected (TabwinWidget *tbw, GtkWidget *w)
+tabwinSetSelected (TabwinWidget *tbw, GtkWidget *w, GtkWidget *l)
{
Client *c;
gchar *classname;
@@ -217,7 +217,7 @@ tabwinSetSelected (TabwinWidget *tbw, GtkWidget *w)
c = g_object_get_data (G_OBJECT (tbw->selected), "client-ptr-val");
classname = g_strdup(c->class.res_class);
- tabwinSetLabel (tbw, classname, c->name, c->win_workspace);
+ tabwinSetLabel (tbw, l, classname, c->name, c->win_workspace);
g_free (classname);
}
@@ -277,7 +277,7 @@ createWindowlist (ScreenInfo *screen_info, TabwinWidget *tbw)
{
Client *c;
GList *client_list;
- GtkWidget *windowlist, *icon, *selected, *window_button;
+ GtkWidget *windowlist, *icon, *selected, *window_button, *buttonbox, *buttonlabel, *selected_label;
int packpos, monitor_width;
Tabwin *t;
gint icon_size = WIN_ICON_SIZE;
@@ -300,15 +300,23 @@ createWindowlist (ScreenInfo *screen_info, TabwinWidget *tbw)
for (client_list = *t->client_list; client_list; client_list = g_list_next (client_list))
{
c = (Client *) client_list->data;
- TRACE ("createWindowlist: adding %s", c->name);
- icon = createWindowIcon (c, icon_size);
+ TRACE ("createWindowlist: adding %s", c->name);
- window_button = gtk_button_new_with_label ("");
- g_object_set_data (G_OBJECT (window_button), "client-ptr-val", c);
- gtk_button_set_image (GTK_BUTTON (window_button), icon);
- gtk_button_set_image_position (GTK_BUTTON (window_button), GTK_POS_TOP);
+ window_button = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (window_button), GTK_RELIEF_NONE);
gtk_widget_set_size_request (GTK_WIDGET (window_button), icon_size+24, icon_size+24);
+ g_object_set_data (G_OBJECT (window_button), "client-ptr-val", c);
+ buttonbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window_button), buttonbox);
+
+ icon = createWindowIcon (c, icon_size);
+ gtk_box_pack_start (GTK_BOX (buttonbox), icon, FALSE, TRUE, 0);
+
+ buttonlabel = gtk_label_new ("");
+ gtk_misc_set_alignment (GTK_MISC (buttonlabel), 0.5, 1.0);
+ gtk_label_set_justify (GTK_LABEL (buttonlabel), GTK_JUSTIFY_CENTER);
+ gtk_label_set_ellipsize (GTK_LABEL (buttonlabel), PANGO_ELLIPSIZE_END);
+ gtk_box_pack_start (GTK_BOX (buttonbox), buttonlabel, TRUE, TRUE, 0);
gtk_table_attach (GTK_TABLE (windowlist), GTK_WIDGET (window_button),
packpos % tbw->grid_cols, packpos % tbw->grid_cols + 1,
@@ -319,11 +327,12 @@ createWindowlist (ScreenInfo *screen_info, TabwinWidget *tbw)
if (c == t->selected->data)
{
selected = window_button;
+ selected_label = buttonlabel;
}
}
if (selected)
{
- tabwinSetSelected (tbw, selected);
+ tabwinSetSelected (tbw, selected, selected_label);
}
return windowlist;
}
@@ -453,7 +462,7 @@ static Client *
tabwinChange2Selected (Tabwin *t, GList *selected)
{
GList *tabwin_list, *widgets;
- GtkWidget *window_button;
+ GtkWidget *window_button, *buttonbox, *buttonlabel;
TabwinWidget *tbw;
t->selected = selected;
@@ -464,10 +473,13 @@ tabwinChange2Selected (Tabwin *t, GList *selected)
{
window_button = GTK_WIDGET (widgets->data);
gtk_button_set_relief (GTK_BUTTON (window_button), GTK_RELIEF_NONE);
- gtk_button_set_label (GTK_BUTTON (window_button), "");
+ buttonbox = GTK_WIDGET( gtk_container_get_children(GTK_CONTAINER(window_button))[0].data );
+ buttonlabel = GTK_WIDGET( g_list_nth_data( gtk_container_get_children(GTK_CONTAINER(buttonbox)), 1) );
+ gtk_label_set_text (GTK_LABEL (buttonlabel), "");
+
if (((Client *) g_object_get_data (G_OBJECT(window_button), "client-ptr-val")) == t->selected->data)
{
- tabwinSetSelected (tbw, window_button);
+ tabwinSetSelected (tbw, window_button, buttonlabel);
gtk_widget_queue_draw (GTK_WIDGET(tbw));
}
}
@@ -574,7 +586,7 @@ tabwinSelectHead (Tabwin *t)
{
GList *head;
GList *tabwin_list, *widgets;
- GtkWidget *icon;
+ GtkWidget *window_button, *buttonbox, *buttonlabel;
TabwinWidget *tbw;
g_return_val_if_fail (t != NULL, NULL);
@@ -591,10 +603,12 @@ tabwinSelectHead (Tabwin *t)
tbw = (TabwinWidget *) tabwin_list->data;
for (widgets = tbw->widgets; widgets; widgets = g_list_next (widgets))
{
- icon = GTK_WIDGET (widgets->data);
- if (((Client *) g_object_get_data (G_OBJECT(icon), "client-ptr-val")) == head->data)
+ window_button = GTK_WIDGET (widgets->data);
+ buttonbox = GTK_WIDGET( gtk_container_get_children(GTK_CONTAINER(window_button))[0].data );
+ buttonlabel = GTK_WIDGET( g_list_nth_data( gtk_container_get_children(GTK_CONTAINER(buttonbox)), 1) );
+ if (((Client *) g_object_get_data (G_OBJECT(window_button), "client-ptr-val")) == head->data)
{
- tabwinSetSelected (tbw, icon);
+ tabwinSetSelected (tbw, window_button, buttonlabel);
gtk_widget_queue_draw (GTK_WIDGET(tbw));
}
}
More information about the Xfce4-commits
mailing list