Skip to contentSkip to conversation

More Gtk+3 fixes

PATCH New Jussi Kukkonen 1 participant 3 messages May 3, 2016

lore
Share & tools
lore
#0 lore raw

cover More Gtk+3 fixes

Two patches more on top of the 16 patch set earlier: these fix the last deprecation warnings (with GTK 3.20).

I've pushed these into the same branch and have nothing more planned for matchbox-desktop-2.

Jussi

The following changes since commit 606344f8b1652bcc3d369911990cf5bc46a16ab6:

Don't set the desktop fullscreen if MODE_DESKTOP (2016-04-28 10:49:55 +0300)

are available in the git repository at:

git://github.com/jku/matchbox-desktop-2 gtk3
https://github.com/jku/matchbox-desktop-2/tree/gtk3

Jussi Kukkonen (2):
TakuCategoryBar: Avoid deprecated API
TakuIconTile: Avoid deprecated icon API

 libtaku/taku-icon-tile.c     | 24 +++++++++++++++++++-----
 libtaku/taku-launcher-tile.c | 32 +++++++++++++++++---------------
 libtaku/taku-menu-desktop.c  |  8 ++------
 libtaku/taku-menu.h          |  3 +--
 src/desktop.c                |  4 ----
 src/taku-category-bar.c      | 27 ++++++---------------------
 6 files changed, 45 insertions(+), 53 deletions(-)
Signature · 1 line
2.8.1
#1 lore raw

PATCH 1/2 TakuCategoryBar: Avoid deprecated API

---
 src/taku-category-bar.c | 27 ++++++---------------------
 1 file changed, 6 insertions(+), 21 deletions(-)
src/taku-category-bar.c +6 -21
index 93bda61..5900d54 100644
@@ -192,7 +192,6 @@ popup_menu (GtkWidget *button, GdkEventButton *event, gpointer user_data)
 
     label = gtk_label_new (category->name);
     make_bold (GTK_LABEL (label));
-    gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.0);
     gtk_widget_show (label);
     gtk_container_add (GTK_CONTAINER (menu_item), label);
   }
@@ -216,16 +215,14 @@ static void
 taku_category_bar_init (TakuCategoryBar *bar)
 {
   TakuCategoryBarPrivate *priv;
-  GtkWidget *button, *arrow;
-  GtkSizeGroup *size_group;
+  GtkWidget *button;
 
   priv = GET_PRIVATE (bar);
 
-  size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
-
   /* Previous button */
 
-  priv->prev_button = button = gtk_button_new ();
+  priv->prev_button = button = gtk_button_new_from_icon_name ("go-previous-symbolic",
+                                                              GTK_ICON_SIZE_BUTTON);
   gtk_widget_set_name (button, "MatchboxDesktopPrevButton");
   atk_object_set_name (gtk_widget_get_accessible (button), "GroupPrevious");
   gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
@@ -233,11 +230,6 @@ taku_category_bar_init (TakuCategoryBar *bar)
   gtk_widget_show (button);
   gtk_box_pack_start (GTK_BOX (bar), button, FALSE, TRUE, 0);
 
-  arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_NONE);
-  gtk_widget_show (arrow);
-  gtk_container_add (GTK_CONTAINER (button), arrow);
-  gtk_size_group_add_widget (size_group, arrow);
-
   /* Category name button */
   
   priv->popup_button = button = gtk_toggle_button_new ();
@@ -252,11 +244,11 @@ taku_category_bar_init (TakuCategoryBar *bar)
   make_bold (GTK_LABEL (priv->switcher_label));
   gtk_widget_show (GTK_WIDGET (priv->switcher_label));
   gtk_container_add (GTK_CONTAINER (button), GTK_WIDGET (priv->switcher_label));
-  gtk_size_group_add_widget (size_group, GTK_WIDGET (priv->switcher_label));
 
   /* Next button */
 
-  priv->next_button = button = gtk_button_new ();
+  priv->next_button = button = gtk_button_new_from_icon_name ("go-next-symbolic",
+                                                              GTK_ICON_SIZE_BUTTON);
   gtk_widget_set_name (button, "MatchboxDesktopNextButton");
   atk_object_set_name (gtk_widget_get_accessible (button), "GroupNext");
 
@@ -264,13 +256,6 @@ taku_category_bar_init (TakuCategoryBar *bar)
   g_signal_connect_swapped (button, "clicked", G_CALLBACK (next_category), bar);
   gtk_widget_show (button);
   gtk_box_pack_end (GTK_BOX (bar), button, FALSE, TRUE, 0);
-
-  arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_NONE);
-  gtk_widget_show (arrow);
-  gtk_container_add (GTK_CONTAINER (button), arrow);
-  gtk_size_group_add_widget (size_group, arrow);
-  
-  g_object_unref (size_group);
 }
 
 
@@ -324,7 +309,7 @@ taku_category_bar_get_current (TakuCategoryBar *bar)
 {
   TakuCategoryBarPrivate *priv;
 
-  g_return_if_fail (TAKU_IS_CATEGORY_BAR (bar));
+  g_return_val_if_fail (TAKU_IS_CATEGORY_BAR (bar), NULL);
   priv = GET_PRIVATE (bar);
 
   return (TakuLauncherCategory*)priv->current_category->data;
Signature · 1 line
2.8.1
#2 lore raw

PATCH 2/2 TakuIconTile: Avoid deprecated icon API

Don't use a named icon size: that is no longer supported.

Instead add style property "taku-icon-size" to TakuIconTile and use that.

---
 libtaku/taku-icon-tile.c     | 24 +++++++++++++++++++-----
 libtaku/taku-launcher-tile.c | 32 +++++++++++++++++---------------
 libtaku/taku-menu-desktop.c  |  8 ++------
 libtaku/taku-menu.h          |  3 +--
 src/desktop.c                |  4 ----
 5 files changed, 39 insertions(+), 32 deletions(-)
libtaku/taku-icon-tile.c +19 -5
index 2e562aa..110db6b 100644
@@ -63,14 +63,14 @@ tile_arrange (TakuIconTile *tile)
     
     switch (orientation) {
     case GTK_ORIENTATION_VERTICAL :
-      gtk_misc_set_alignment (GTK_MISC (tile->priv->primary), 0.5, 0.5);
-      gtk_misc_set_alignment (GTK_MISC (tile->priv->secondary), 0.5, 0.5);
+      gtk_label_set_xalign (GTK_LABEL (tile->priv->primary), 0.5);
+      gtk_label_set_xalign (GTK_LABEL (tile->priv->secondary), 0.5);
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
       break;
     default:
     case GTK_ORIENTATION_HORIZONTAL :
-      gtk_misc_set_alignment (GTK_MISC (tile->priv->primary), 0.0, 0.5);
-      gtk_misc_set_alignment (GTK_MISC (tile->priv->secondary), 0.0, 0.5);
+      gtk_label_set_xalign (GTK_LABEL (tile->priv->primary), 0.0);
+      gtk_label_set_xalign (GTK_LABEL (tile->priv->secondary), 0.0);
       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
       break;
     }
@@ -243,6 +243,15 @@ taku_icon_tile_class_init (TakuIconTileClass *klass)
                                                               GTK_TYPE_ORIENTATION,
                                                               GTK_ORIENTATION_HORIZONTAL,
                                                               G_PARAM_READABLE));
+  gtk_widget_class_install_style_property (widget_class,
+                                           g_param_spec_uint ("taku-icon-size",
+                                                              "Taku icon size",
+                                                              "Icon size used by all Taku Icons",
+                                                              0,
+                                                              256,
+                                                              64,
+                                                              G_PARAM_READABLE));
+
 }
 
 static void
@@ -311,10 +320,15 @@ taku_icon_tile_set_pixbuf (TakuIconTile *tile, GdkPixbuf *pixbuf)
 void
 taku_icon_tile_set_icon_name (TakuIconTile *tile, const char *name)
 {
+  uint size;
   g_return_if_fail (TAKU_IS_ICON_TILE (tile));
 
+  gtk_widget_style_get (GTK_WIDGET (tile),
+                        "taku-icon-size", &size,
+                        NULL);
+
   gtk_image_set_from_icon_name (GTK_IMAGE (tile->priv->icon),
-                                name, gtk_icon_size_from_name ("taku-icon"));
+                                name, size);
 }
 
 void
libtaku/taku-launcher-tile.c +17 -15
index b453eac..e7f58f3 100644
@@ -38,8 +38,6 @@ struct _TakuLauncherTilePrivate
   gboolean loading_icon; /* If the icon is queued to be loaded */
 };
 
-/* Icon size ID for the TakuIcon size */
-static GtkIconSize icon_size;
 /* Queue of tiles with pending icons to load */
 static GQueue queue = G_QUEUE_INIT;
 
@@ -50,6 +48,7 @@ load_icon (gpointer data)
   TakuLauncherTile *tile;
   GdkPixbuf *pixbuf;
   int i;
+  guint size;
   
   /* Per iteration, load a few icons at once */
   for (i = 0; i < 5; i++) {
@@ -58,8 +57,11 @@ load_icon (gpointer data)
     if (tile == NULL) {
       return TRUE;
     }
-    
-    pixbuf = taku_menu_item_get_icon (tile->priv->item, (GtkWidget*)tile, icon_size);
+
+    gtk_widget_style_get (GTK_WIDGET (tile),
+                          "taku-icon-size", &size,
+                          NULL);
+    pixbuf = taku_menu_item_get_icon (tile->priv->item, size);
     
     if (pixbuf) {
       taku_icon_tile_set_pixbuf (TAKU_ICON_TILE (tile), pixbuf);
@@ -110,7 +112,7 @@ taku_launcher_tile_finalize (GObject *object)
 static gboolean
 reset_state (gpointer data)
 {
-  gtk_widget_set_state (GTK_WIDGET (data), GTK_STATE_NORMAL);
+  gtk_widget_unset_state_flags (GTK_WIDGET (data), GTK_STATE_FLAG_ACTIVE);
   return FALSE;
 }
 
@@ -119,7 +121,7 @@ taku_launcher_tile_activate (TakuLauncherTile *tile)
 {
   TakuLauncherTile *launcher = TAKU_LAUNCHER_TILE (tile);
 
-  gtk_widget_set_state (GTK_WIDGET (tile), GTK_STATE_ACTIVE);
+  gtk_widget_set_state_flags (GTK_WIDGET (tile), GTK_STATE_FLAG_ACTIVE, FALSE);
 
   g_timeout_add (500, reset_state, tile);
 
@@ -147,12 +149,6 @@ taku_launcher_tile_class_init (TakuLauncherTileClass *klass)
 
   object_class->finalize = taku_launcher_tile_finalize;
 
-  /* Lookup the icon size from the theme */
-  icon_size = gtk_icon_size_from_name ("taku-icon");
-  if (icon_size == GTK_ICON_SIZE_INVALID) {
-    g_warning ("taku-icon size not registered, falling back");
-    icon_size = GTK_ICON_SIZE_BUTTON;
-  }
   taku_idle_queue_add (&queue, load_icon, NULL);
 }
 
@@ -174,17 +170,23 @@ taku_launcher_tile_new_from_item (TakuMenuItem *item)
 {
   TakuLauncherTile *tile;
   GList *l;
+  uint size;
 
   tile = TAKU_LAUNCHER_TILE (taku_launcher_tile_new ());
   tile->priv->item = item;
-  
+
+ 
+  gtk_widget_style_get (GTK_WIDGET (tile),
+                        "taku-icon-size", &size,
+                        NULL);
+ 
   taku_icon_tile_set_primary (TAKU_ICON_TILE (tile), 
                               taku_menu_item_get_name (item));
   taku_icon_tile_set_secondary (TAKU_ICON_TILE (tile),
                                 taku_menu_item_get_description (item));
   taku_icon_tile_set_pixbuf (TAKU_ICON_TILE (tile),
-                             gtk_widget_render_icon (GTK_WIDGET (tile), GTK_STOCK_REFRESH, icon_size, NULL));
-                                                     
+                             get_icon ("view-refresh", size));
+
   /* Don't need to update the icon here, because we'll get a style-set signal
      when the widget is realised which will update the icon. */
 
libtaku/taku-menu-desktop.c +2 -6
index 03801d6..93c8a56 100644
@@ -122,15 +122,11 @@ taku_menu_item_get_description (TakuMenuItem *item)
 }
 
 GdkPixbuf*
-taku_menu_item_get_icon (TakuMenuItem *item, GtkWidget *widget, GtkIconSize size)
+taku_menu_item_get_icon (TakuMenuItem *item, int size)
 {
-  int width = 64;
-
   g_return_val_if_fail (item, NULL);
 
-  gtk_icon_size_lookup (size, &width, NULL);
-
-  return get_icon (item->icon_name, width);
+  return get_icon (item->icon_name, size);
 }
 
 GList*
libtaku/taku-menu.h +1 -2
index 1452458..9f78064 100644
@@ -103,8 +103,7 @@ taku_menu_item_get_description (TakuMenuItem *item);
 
 GdkPixbuf*
 taku_menu_item_get_icon (TakuMenuItem *item, 
-                         GtkWidget *widget, 
-                         GtkIconSize size);
+                         int           size);
 
 GList*
 taku_menu_item_get_categories (TakuMenuItem *item);
src/desktop.c +0 -4
index 8234e8c..a1943eb 100644
@@ -194,10 +194,6 @@ create_desktop (DesktopMode mode)
   GdkScreen *screen;
   int width, height;
 
-  /* Register the magic taku-icon size so that it can be controlled from the
-     theme. */
-  gtk_icon_size_register ("taku-icon", 64, 64);
-
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_set_name (window, "TakuWindow");
   gtk_window_set_title (GTK_WINDOW (window), _("Desktop"));
Signature · 1 line
2.8.1