[gnome-applets/wip/segeiger/window-picker-in-process: 2/2] Need to think about this



commit 6a075e88f037f7a99340ca7b115e19d828d7f800
Author: Sebastian Geiger <sbastig gmx net>
Date:   Thu Jun 11 00:51:02 2015 +0200

    Need to think about this

 windowpicker/src/applet.c    |    4 ++
 windowpicker/src/task-item.c |   71 +++++++++++++++++++++++++++++++----------
 2 files changed, 57 insertions(+), 18 deletions(-)
---
diff --git a/windowpicker/src/applet.c b/windowpicker/src/applet.c
index 17a3016..bf6ad7f 100644
--- a/windowpicker/src/applet.c
+++ b/windowpicker/src/applet.c
@@ -153,15 +153,19 @@ load_window_picker (PanelApplet *applet) {
                         = panel_applet_settings_new(applet, SETTINGS_SCHEMA);
 
     GtkWidget *outer_box = priv->outer_box = gtk_box_new (panel_applet_get_gtk_orientation (applet), 0);
+    gtk_widget_set_hexpand (priv->outer_box, TRUE);
+    gtk_widget_set_vexpand (priv->outer_box, TRUE);
     gtk_container_add (GTK_CONTAINER (applet), outer_box);
     gtk_container_set_border_width (GTK_CONTAINER (applet), 0);
     gtk_container_set_border_width (GTK_CONTAINER (outer_box), 0);
 
     priv->tasks = task_list_new (windowPickerApplet);
     gtk_widget_set_vexpand (priv->tasks, TRUE);
+    gtk_widget_set_hexpand (priv->tasks, TRUE);
     gtk_box_pack_start (GTK_BOX (outer_box), priv->tasks, TRUE, TRUE, 0);
 
     priv->title = task_title_new (windowPickerApplet);
+    gtk_widget_set_vexpand (priv->title, TRUE);
     gtk_widget_set_hexpand (priv->title, TRUE);
     gtk_box_pack_start (GTK_BOX (outer_box), priv->title, TRUE, TRUE, 0);
 
diff --git a/windowpicker/src/task-item.c b/windowpicker/src/task-item.c
index b2579c5..3069c2d 100644
--- a/windowpicker/src/task-item.c
+++ b/windowpicker/src/task-item.c
@@ -188,9 +188,8 @@ task_item_get_preferred_width (GtkWidget *widget,
                                gint      *minimal_width,
                                gint      *natural_width)
 {
-    GtkRequisition requisition;
-    requisition.width = DEFAULT_TASK_ITEM_WIDTH;
-    *minimal_width = *natural_width = requisition.width;
+    g_message ("Setting preferred_width to: %d", DEFAULT_TASK_ITEM_WIDTH + 10);
+    *minimal_width = *natural_width = 46; //DEFAULT_TASK_ITEM_WIDTH + 16;
 }
 
 static void
@@ -198,9 +197,52 @@ task_item_get_preferred_height (GtkWidget *widget,
                                 gint      *minimal_height,
                                 gint      *natural_height)
 {
-    GtkRequisition requisition;
-    requisition.height = DEFAULT_TASK_ITEM_HEIGHT;
-    *minimal_height = *natural_height = requisition.height;
+    /* This sets the MINIMUM height of the item. The actual height will be determined by
+     * task_item_get_preferred_height_for_width. */
+    g_message ("Setting preferred_height to: %d", DEFAULT_TASK_ITEM_HEIGHT + 10);
+    *minimal_height = *natural_height = 40; //DEFAULT_TASK_ITEM_HEIGHT + 10;
+}
+
+static GtkSizeRequestMode
+task_item_get_request_mode (GtkWidget* widget)
+{
+    WindowPickerApplet *applet = TASK_ITEM (widget)->priv->windowPickerApplet;
+    GtkOrientation orientation = panel_applet_get_gtk_orientation (applet);
+
+    if (orientation == GTK_ORIENTATION_HORIZONTAL)
+        return GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT;
+    else
+        return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH;
+}
+
+static void
+task_item_get_preferred_height_for_width (GtkWidget *widget,
+                                          gint width,
+                                          gint *minimum_height,
+                                          gint *natural_height)
+{
+    WindowPickerApplet *applet = TASK_ITEM (widget)->priv->windowPickerApplet;
+    GtkOrientation orientation = panel_applet_get_gtk_orientation (applet);
+
+    if (orientation == GTK_ORIENTATION_VERTICAL) {
+        g_message("Setting preferred minimum_height=natural_height=%d for width: %d", width + 6, width);
+        *minimum_height = *natural_height = width + 6;
+    }
+}
+
+static void
+task_item_get_preferred_width_for_height (GtkWidget *widget,
+                                          gint height,
+                                          gint *minimum_width,
+                                          gint *natural_width)
+{
+    WindowPickerApplet *applet = TASK_ITEM (widget)->priv->windowPickerApplet;
+    GtkOrientation orientation = panel_applet_get_gtk_orientation (applet);
+
+    if (orientation == GTK_ORIENTATION_HORIZONTAL) {
+        g_message("Setting preferred minimum_width=natural_width=%d for height: %d", height + 6, height);
+        *minimum_width = *natural_width = height + 6;
+    }
 }
 
 static GdkPixbuf *task_item_sized_pixbuf_for_window (
@@ -357,22 +399,12 @@ static void on_size_allocate (
 {
     g_return_if_fail (TASK_IS_ITEM (widget));
     TaskItem *item = TASK_ITEM (widget);
-    TaskItemPrivate *priv;
-    PanelAppletOrient orientation = panel_applet_get_orient (PANEL_APPLET (applet));
-
-    if (orientation == PANEL_APPLET_ORIENT_RIGHT || orientation == PANEL_APPLET_ORIENT_LEFT) {
-        if (allocation->height != allocation->width + 6)
-            gtk_widget_set_size_request (widget, -1, allocation->width + 6);
-    } else {
-        if (allocation->width != allocation->height + 6)
-            gtk_widget_set_size_request (widget, allocation->height + 6, -1);
-    }
-
-    priv = item->priv;
+    TaskItemPrivate *priv = item->priv;
     priv->area.x = allocation->x;
     priv->area.y = allocation->y;
     priv->area.width = allocation->width;
     priv->area.height = allocation->height;
+    g_message ("New size for draw function: area.width: %d, area.height: %d", priv->area.width, 
priv->area.height);
     update_hints (item);
 }
 
@@ -765,6 +797,9 @@ static void task_item_class_init (TaskItemClass *klass) {
     obj_class->finalize = task_item_finalize;
     widget_class->get_preferred_width = task_item_get_preferred_width;
     widget_class->get_preferred_height = task_item_get_preferred_height;
+    widget_class->get_request_mode = task_item_get_request_mode;
+    widget_class->get_preferred_height_for_width = task_item_get_preferred_height_for_width;
+    widget_class->get_preferred_width_for_height = task_item_get_preferred_width_for_height;
     g_type_class_add_private (obj_class, sizeof (TaskItemPrivate));
     task_item_signals [TASK_ITEM_CLOSED_SIGNAL] =
     g_signal_new ("task-item-closed",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]