Author: nick
Date: 2007-10-25 18:23:36 +0000 (Thu, 25 Oct 2007)
New Revision: 26196

Modified:
   xfce4-panel/trunk/plugins/tasklist/tasklist.c
   xfce4-panel/trunk/plugins/tasklist/tasklist.h
Log:
* Force size on taskbar maybe that fixes the weird problem Jannis has.


Modified: xfce4-panel/trunk/plugins/tasklist/tasklist.c
===================================================================
--- xfce4-panel/trunk/plugins/tasklist/tasklist.c       2007-10-25 17:51:07 UTC 
(rev 26195)
+++ xfce4-panel/trunk/plugins/tasklist/tasklist.c       2007-10-25 18:23:36 UTC 
(rev 26196)
@@ -171,7 +171,6 @@
 tasklist_plugin_new (XfcePanelPlugin *panel_plugin)
 {
     TasklistPlugin *tasklist;
-    GtkWidget      *alignment;
     GdkScreen      *screen;
     gint            screen_n;
 
@@ -204,14 +203,9 @@
     /* set the icon theme */
     tasklist->icon_theme = gtk_icon_theme_get_for_screen (screen);
 
-    /* alignment to avoid streched buttons */
-    alignment = gtk_alignment_new (0.00,  0.50,  0.00,  1.00);
-    gtk_box_pack_start (GTK_BOX (tasklist->box), alignment, TRUE, TRUE, 0);
-    gtk_widget_show (alignment);
-
     /* create tasklist */
     tasklist->list = wnck_tasklist_new (wnck_screen_get (screen_n));
-    gtk_container_add (GTK_CONTAINER (alignment), tasklist->list);
+    gtk_box_pack_start (GTK_BOX (tasklist->box), tasklist->list, FALSE, FALSE, 
0);
     gtk_widget_show (tasklist->list);
 
     /* set the tasklist settings */
@@ -315,11 +309,43 @@
             requisition->width = size;
         else
             requisition->height = size;
+
+        /* save the requested size */
+        tasklist->req_size = size;
     }
 }
 
 
 static void
+tasklist_plugin_size_allocate (TasklistPlugin *tasklist,
+                               GtkAllocation  *allocation)
+{
+  GtkOrientation  orientation;
+  gint            a_size, p_size;
+
+  /* get orientation */
+  orientation = xfce_panel_plugin_get_orientation (tasklist->panel_plugin);
+
+  /* get plugin size */
+  p_size = xfce_panel_plugin_get_size (tasklist->panel_plugin);
+
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    a_size = MIN (tasklist->req_size, allocation->width);
+  else
+    a_size = MIN (tasklist->req_size, allocation->height);
+
+  if (tasklist->show_handles)
+    a_size -= TASKLIST_HANDLE_SIZE;
+
+  /* force the size request of the taskbar */
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    gtk_widget_set_size_request (GTK_WIDGET (tasklist->list), a_size, p_size);
+  else
+    gtk_widget_set_size_request (GTK_WIDGET (tasklist->list), p_size, a_size);
+}
+
+
+static void
 tasklist_plugin_read (TasklistPlugin *tasklist)
 {
     gchar  *file;
@@ -441,6 +467,8 @@
                               G_CALLBACK (tasklist_plugin_size_changed), 
tasklist);
     g_signal_connect_swapped (G_OBJECT (panel_plugin), "size-request",
                               G_CALLBACK (tasklist_plugin_size_request), 
tasklist);
+    g_signal_connect_swapped (G_OBJECT (panel_plugin), "size-allocate",
+                              G_CALLBACK (tasklist_plugin_size_allocate), 
tasklist);
     g_signal_connect_swapped (G_OBJECT (panel_plugin), "save",
                               G_CALLBACK (tasklist_plugin_write), tasklist);
     g_signal_connect_swapped (G_OBJECT (panel_plugin), "free-data",

Modified: xfce4-panel/trunk/plugins/tasklist/tasklist.h
===================================================================
--- xfce4-panel/trunk/plugins/tasklist/tasklist.h       2007-10-25 17:51:07 UTC 
(rev 26195)
+++ xfce4-panel/trunk/plugins/tasklist/tasklist.h       2007-10-25 18:23:36 UTC 
(rev 26196)
@@ -43,6 +43,9 @@
     /* icon theme */
     GtkIconTheme             *icon_theme;
 
+    /* requested width */
+    gint                      req_size;
+
     /* settings */
     gint                      width;
     WnckTasklistGroupingType  grouping;

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to