File gnome-panel-allow-smaller-panels.patch of Package gnome-panel
From cff8f9f22a031ca1ccab06a1460f8984d97f871f Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@gnome.org>
Date: Mon, 17 Oct 2011 13:07:15 +0200
Subject: [PATCH 1/4] panel: Fix panels forced to be big because of user menu
The user menu item was created with some functions that change the way
the size of the menu item is negotiated, and we don't want this when
this user menu item is in the user menu applet (we want this when it's
in the main menu, though).
Helps with https://bugzilla.gnome.org/show_bug.cgi?id=661790
---
gnome-panel/menu.c | 2 +-
gnome-panel/panel-menu-items.c | 48 ++++++++++++++++++++++++++-------------
gnome-panel/panel-menu-items.h | 1 +
gnome-panel/panel-user-menu.c | 2 +-
4 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/gnome-panel/menu.c b/gnome-panel/menu.c
index 4077940..497b7fd 100644
--- a/gnome-panel/menu.c
+++ b/gnome-panel/menu.c
@@ -1388,7 +1388,7 @@ main_menu_append (GtkWidget *main_menu,
gtk_menu_shell_append (GTK_MENU_SHELL (main_menu), item);
gtk_widget_show (item);
- item = panel_desktop_menu_item_new (TRUE, FALSE);
+ item = panel_desktop_menu_item_new (TRUE, FALSE, FALSE);
panel_desktop_menu_item_set_panel (item, panel);
gtk_menu_shell_append (GTK_MENU_SHELL (main_menu), item);
gtk_widget_show (item);
diff --git a/gnome-panel/panel-menu-items.c b/gnome-panel/panel-menu-items.c
index 0e48181..a58801d 100644
--- a/gnome-panel/panel-menu-items.c
+++ b/gnome-panel/panel-menu-items.c
@@ -48,6 +48,7 @@
#include <libpanel-util/panel-glib.h>
#include <libpanel-util/panel-keyfile.h>
#include <libpanel-util/panel-launch.h>
+#include <libpanel-util/panel-menu-item.h>
#include <libpanel-util/panel-session-manager.h>
#include <libpanel-util/panel-show.h>
@@ -1693,10 +1694,12 @@ panel_desktop_menu_item_on_presence_changed (PanelSessionManager *ma
GtkWidget *
panel_desktop_menu_item_new (gboolean use_image,
+ gboolean in_menubar,
gboolean append_lock_logout)
{
PanelDesktopMenuItem *menuitem;
char *name;
+ const char *icon_name;
#ifdef HAVE_TELEPATHY_GLIB
PanelSessionManager *manager;
#endif
@@ -1704,27 +1707,40 @@ panel_desktop_menu_item_new (gboolean use_image,
menuitem = g_object_new (PANEL_TYPE_DESKTOP_MENU_ITEM, NULL);
name = panel_util_get_user_name ();
+#ifdef HAVE_TELEPATHY_GLIB
+ icon_name = PANEL_ICON_USER_AVAILABLE;
+#else
+ icon_name = PANEL_ICON_COMPUTER;
+#endif
+
+ /* if we're in a menubar, we don't want to use setup_* as it changes
+ * the size requests and can make the panels bigger than we'd like */
+ if (in_menubar) {
+ gtk_menu_item_set_label (GTK_MENU_ITEM (menuitem), name);
+ if (use_image) {
+ GtkWidget *image;
+ image = gtk_image_new_from_icon_name (icon_name,
+ panel_menu_icon_get_size ());
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
+ image);
+ }
+ } else {
+ if (use_image)
+ setup_menu_item_with_icon (GTK_WIDGET (menuitem),
+ panel_menu_icon_get_size (),
+ icon_name, NULL, NULL,
+ name);
+ else
+ setup_menuitem (GTK_WIDGET (menuitem),
+ GTK_ICON_SIZE_INVALID, NULL,
+ name);
+ }
- if (use_image) {
#ifdef HAVE_TELEPATHY_GLIB
- setup_menu_item_with_icon (GTK_WIDGET (menuitem),
- panel_menu_icon_get_size (),
- PANEL_ICON_USER_AVAILABLE,
- NULL, NULL,
- name);
+ if (use_image)
gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem),
TRUE);
-#else
- setup_menu_item_with_icon (GTK_WIDGET (menuitem),
- panel_menu_icon_get_size (),
- PANEL_ICON_COMPUTER,
- NULL, NULL,
- name);
#endif
- } else
- setup_menuitem (GTK_WIDGET (menuitem),
- GTK_ICON_SIZE_INVALID, NULL,
- name);
g_free (name);
diff --git a/gnome-panel/panel-menu-items.h b/gnome-panel/panel-menu-items.h
index 44c000c..86d766b 100644
--- a/gnome-panel/panel-menu-items.h
+++ b/gnome-panel/panel-menu-items.h
@@ -80,6 +80,7 @@ GType panel_desktop_menu_item_get_type (void) G_GNUC_CONST;
GtkWidget *panel_place_menu_item_new (gboolean use_image);
GtkWidget *panel_desktop_menu_item_new (gboolean use_image,
+ gboolean in_menubar,
gboolean append_lock_logout);
void panel_place_menu_item_set_panel (GtkWidget *item,
diff --git a/gnome-panel/panel-user-menu.c b/gnome-panel/panel-user-menu.c
index 2ff36f4..fa68dba 100644
--- a/gnome-panel/panel-user-menu.c
+++ b/gnome-panel/panel-user-menu.c
@@ -51,7 +51,7 @@ panel_user_menu_init (PanelUserMenu *usermenu)
usermenu->priv->info = NULL;
- usermenu->priv->desktop_item = panel_desktop_menu_item_new (TRUE, TRUE);
+ usermenu->priv->desktop_item = panel_desktop_menu_item_new (TRUE, TRUE, TRUE);
gtk_menu_shell_append (GTK_MENU_SHELL (usermenu),
usermenu->priv->desktop_item);
gtk_widget_show (usermenu->priv->desktop_item);
--
1.7.7
From 743b3deaa1c7b4caac2d4fc74f5796af5e136880 Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@gnome.org>
Date: Mon, 17 Oct 2011 13:15:05 +0200
Subject: [PATCH 2/4] panel: Fix wrong height of Places menu item in main menu
When not in the menu bar, the Places menu item should be of fixed width,
like all other items -- regardless of whether the icon is shown or not.
---
gnome-panel/menu.c | 2 +-
gnome-panel/panel-menu-bar.c | 2 +-
gnome-panel/panel-menu-items.c | 37 ++++++++++++++++++++++++++-----------
gnome-panel/panel-menu-items.h | 3 ++-
4 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/gnome-panel/menu.c b/gnome-panel/menu.c
index 497b7fd..9bd069a 100644
--- a/gnome-panel/menu.c
+++ b/gnome-panel/menu.c
@@ -1383,7 +1383,7 @@ main_menu_append (GtkWidget *main_menu,
if (add_separator)
add_menu_separator (main_menu);
- item = panel_place_menu_item_new (TRUE);
+ item = panel_place_menu_item_new (TRUE, FALSE);
panel_place_menu_item_set_panel (item, panel);
gtk_menu_shell_append (GTK_MENU_SHELL (main_menu), item);
gtk_widget_show (item);
diff --git a/gnome-panel/panel-menu-bar.c b/gnome-panel/panel-menu-bar.c
index de70925..be037da 100644
--- a/gnome-panel/panel-menu-bar.c
+++ b/gnome-panel/panel-menu-bar.c
@@ -143,7 +143,7 @@ panel_menu_bar_init (PanelMenuBar *menubar)
menubar->priv->applications_item);
gtk_widget_show (menubar->priv->applications_item);
- menubar->priv->places_item = panel_place_menu_item_new (FALSE);
+ menubar->priv->places_item = panel_place_menu_item_new (FALSE, TRUE);
gtk_menu_shell_append (GTK_MENU_SHELL (menubar),
menubar->priv->places_item);
gtk_widget_show (menubar->priv->places_item);
diff --git a/gnome-panel/panel-menu-items.c b/gnome-panel/panel-menu-items.c
index a58801d..821e638 100644
--- a/gnome-panel/panel-menu-items.c
+++ b/gnome-panel/panel-menu-items.c
@@ -1615,23 +1615,38 @@ panel_desktop_menu_item_class_init (PanelDesktopMenuItemClass *klass)
}
GtkWidget *
-panel_place_menu_item_new (gboolean use_image)
+panel_place_menu_item_new (gboolean use_image,
+ gboolean in_menubar)
{
PanelPlaceMenuItem *menuitem;
- GtkWidget *image;
+ const char *name;
+ const char *icon_name;
menuitem = g_object_new (PANEL_TYPE_PLACE_MENU_ITEM, NULL);
- if (use_image)
- image = gtk_image_new_from_icon_name (PANEL_ICON_FOLDER,
- panel_menu_icon_get_size ());
- else
- image = NULL;
+ name = _("Places");
+ icon_name = PANEL_ICON_FOLDER;
- setup_menuitem (GTK_WIDGET (menuitem),
- image ? panel_menu_icon_get_size () : GTK_ICON_SIZE_INVALID,
- image,
- _("Places"));
+ if (in_menubar) {
+ gtk_menu_item_set_label (GTK_MENU_ITEM (menuitem), name);
+ if (use_image) {
+ GtkWidget *image;
+ image = gtk_image_new_from_icon_name (icon_name,
+ panel_menu_icon_get_size ());
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
+ image);
+ }
+ } else {
+ if (use_image)
+ setup_menu_item_with_icon (GTK_WIDGET (menuitem),
+ panel_menu_icon_get_size (),
+ icon_name, NULL, NULL,
+ name);
+ else
+ setup_menuitem (GTK_WIDGET (menuitem),
+ GTK_ICON_SIZE_INVALID, NULL,
+ name);
+ }
menuitem->priv->menu = panel_place_menu_item_create_menu (menuitem);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
diff --git a/gnome-panel/panel-menu-items.h b/gnome-panel/panel-menu-items.h
index 86d766b..1548b93 100644
--- a/gnome-panel/panel-menu-items.h
+++ b/gnome-panel/panel-menu-items.h
@@ -78,7 +78,8 @@ struct _PanelDesktopMenuItemClass {
GType panel_desktop_menu_item_get_type (void) G_GNUC_CONST;
-GtkWidget *panel_place_menu_item_new (gboolean use_image);
+GtkWidget *panel_place_menu_item_new (gboolean use_image,
+ gboolean in_menubar);
GtkWidget *panel_desktop_menu_item_new (gboolean use_image,
gboolean in_menubar,
gboolean append_lock_logout);
--
1.7.7
From 12b371c4211ec5d17cf799cb3ee628ffd577cbf6 Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@gnome.org>
Date: Mon, 17 Oct 2011 13:41:50 +0200
Subject: [PATCH 3/4] panel: Change default size of icon in menu bar & user
menu applets to 16
This makes it possible to make the panel smaller than it used to be (the
size of the icon was the blocker) and it also makes the icon consistent
with the notification area icons.
Note that this size doesn't apply to the user menu when it appears in
the main menu (as opposed to the user menu applet).
This can be changed in settings.ini (see GtkSettings doc) with:
gtk-icon-sizes = panel-menu-bar=16,16
This used to be called panel-foobar, but that name was horrible.
https://bugzilla.gnome.org/show_bug.cgi?id=660846
https://bugzilla.gnome.org/show_bug.cgi?id=661790
---
gnome-panel/panel-menu-bar-object.c | 18 ++++++++++++++++++
gnome-panel/panel-menu-bar-object.h | 2 ++
gnome-panel/panel-menu-bar.c | 19 +------------------
gnome-panel/panel-menu-items.c | 14 ++++++++++----
4 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/gnome-panel/panel-menu-bar-object.c b/gnome-panel/panel-menu-bar-object.c
index fe0fd64..9752f2a 100644
--- a/gnome-panel/panel-menu-bar-object.c
+++ b/gnome-panel/panel-menu-bar-object.c
@@ -49,6 +49,19 @@ enum {
static void panel_menu_bar_object_update_text_gravity (PanelMenuBarObject *menubar);
static void panel_menu_bar_object_update_orientation (PanelMenuBarObject *menubar);
+/* themeable size - "panel-menu-bar" -- This is only used for the icon of the
+ * Applications item in the menu bar. To set it, use this in gtk+'s
+ * settings.ini: "gtk-icon-sizes = panel-menu-bar=16,16" */
+#define PANEL_DEFAULT_MENU_BAR_OBJECT_ICON_SIZE 16
+
+static GtkIconSize panel_menu_bar_object_icon_size = 0;
+
+GtkIconSize
+panel_menu_bar_object_icon_get_size (void)
+{
+ return panel_menu_bar_object_icon_size;
+}
+
static void
panel_menu_bar_object_init (PanelMenuBarObject *menubar)
{
@@ -172,6 +185,11 @@ panel_menu_bar_object_class_init (PanelMenuBarObjectClass *klass)
PANEL_TYPE_ORIENTATION,
PANEL_ORIENTATION_TOP,
G_PARAM_READWRITE));
+
+ if (panel_menu_bar_object_icon_size == 0)
+ panel_menu_bar_object_icon_size = gtk_icon_size_register ("panel-menu-bar",
+ PANEL_DEFAULT_MENU_BAR_OBJECT_ICON_SIZE,
+ PANEL_DEFAULT_MENU_BAR_OBJECT_ICON_SIZE);
}
static gboolean
diff --git a/gnome-panel/panel-menu-bar-object.h b/gnome-panel/panel-menu-bar-object.h
index 9091164..351321e 100644
--- a/gnome-panel/panel-menu-bar-object.h
+++ b/gnome-panel/panel-menu-bar-object.h
@@ -63,6 +63,8 @@ void panel_menu_bar_object_set_orientation (PanelMenuBarObject *
PanelOrientation orientation);
PanelOrientation panel_menu_bar_object_get_orientation (PanelMenuBarObject *menubar);
+GtkIconSize panel_menu_bar_object_icon_get_size (void);
+
G_END_DECLS
#endif /* __PANEL_MENU_BAR_OBJECT_H__ */
diff --git a/gnome-panel/panel-menu-bar.c b/gnome-panel/panel-menu-bar.c
index be037da..0988144 100644
--- a/gnome-panel/panel-menu-bar.c
+++ b/gnome-panel/panel-menu-bar.c
@@ -58,18 +58,6 @@ struct _PanelMenuBarPrivate {
GtkWidget *places_item;
};
-/* themeable size - "panel-foobar" -- This is only used for the icon of the
- * Applications item in the menu bar */
-#define PANEL_DEFAULT_MENU_BAR_ICON_SIZE 24
-
-static GtkIconSize panel_menu_bar_icon_size = 0;
-
-static GtkIconSize
-panel_menu_bar_icon_get_size (void)
-{
- return panel_menu_bar_icon_size;
-}
-
static gboolean
panel_menu_bar_reinit_tooltip (GtkWidget *widget,
PanelMenuBar *menubar)
@@ -135,7 +123,7 @@ panel_menu_bar_init (PanelMenuBar *menubar)
gtk_menu_item_set_label (GTK_MENU_ITEM (menubar->priv->applications_item),
_("Applications"));
menubar->priv->image = gtk_image_new_from_icon_name (PANEL_ICON_MAIN_MENU,
- panel_menu_bar_icon_get_size ());
+ panel_menu_bar_object_icon_get_size ());
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menubar->priv->applications_item),
menubar->priv->applications_menu);
@@ -207,11 +195,6 @@ panel_menu_bar_class_init (PanelMenuBarClass *klass)
"Whether the menubar icon is visible",
FALSE,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- if (panel_menu_bar_icon_size == 0)
- panel_menu_bar_icon_size = gtk_icon_size_register ("panel-foobar",
- PANEL_DEFAULT_MENU_BAR_ICON_SIZE,
- PANEL_DEFAULT_MENU_BAR_ICON_SIZE);
}
void
diff --git a/gnome-panel/panel-menu-items.c b/gnome-panel/panel-menu-items.c
index 821e638..9b84e18 100644
--- a/gnome-panel/panel-menu-items.c
+++ b/gnome-panel/panel-menu-items.c
@@ -58,6 +58,7 @@
#include "panel-globals.h"
#include "panel-icon-names.h"
#include "panel-lockdown.h"
+#include "panel-menu-bar-object.h"
#include "panel-recent.h"
#include "panel-stock-icons.h"
#include "panel-util.h"
@@ -100,6 +101,7 @@ struct _PanelPlaceMenuItemPrivate {
struct _PanelDesktopMenuItemPrivate {
GtkWidget *menu;
PanelWidget *panel;
+ GtkIconSize icon_size;
#ifdef HAVE_TELEPATHY_GLIB
GList *presence_items;
@@ -1632,7 +1634,7 @@ panel_place_menu_item_new (gboolean use_image,
if (use_image) {
GtkWidget *image;
image = gtk_image_new_from_icon_name (icon_name,
- panel_menu_icon_get_size ());
+ panel_menu_bar_object_icon_get_size ());
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
image);
}
@@ -1686,7 +1688,7 @@ panel_desktop_menu_item_on_presence_changed (PanelSessionManager *ma
* menu */
if (image) {
gtk_image_set_from_icon_name (GTK_IMAGE (image),
- icon, panel_menu_icon_get_size ());
+ icon, desktop_item->priv->icon_size);
}
for (l = desktop_item->priv->presence_items; l != NULL; l = l->next) {
@@ -1732,17 +1734,21 @@ panel_desktop_menu_item_new (gboolean use_image,
* the size requests and can make the panels bigger than we'd like */
if (in_menubar) {
gtk_menu_item_set_label (GTK_MENU_ITEM (menuitem), name);
+ menuitem->priv->icon_size = panel_menu_bar_object_icon_get_size ();
+
if (use_image) {
GtkWidget *image;
image = gtk_image_new_from_icon_name (icon_name,
- panel_menu_icon_get_size ());
+ menuitem->priv->icon_size);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
image);
}
} else {
+ menuitem->priv->icon_size = panel_menu_icon_get_size ();
+
if (use_image)
setup_menu_item_with_icon (GTK_WIDGET (menuitem),
- panel_menu_icon_get_size (),
+ menuitem->priv->icon_size,
icon_name, NULL, NULL,
name);
else
--
1.7.7
From 9042d29697038c78e4c8da32e8a9f5a136a90bea Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@gnome.org>
Date: Mon, 17 Oct 2011 14:34:42 +0200
Subject: [PATCH 4/4] panel: Doh, fix addition of non-existing include
---
gnome-panel/panel-menu-items.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/gnome-panel/panel-menu-items.c b/gnome-panel/panel-menu-items.c
index 9b84e18..1882ad71 100644
--- a/gnome-panel/panel-menu-items.c
+++ b/gnome-panel/panel-menu-items.c
@@ -48,7 +48,6 @@
#include <libpanel-util/panel-glib.h>
#include <libpanel-util/panel-keyfile.h>
#include <libpanel-util/panel-launch.h>
-#include <libpanel-util/panel-menu-item.h>
#include <libpanel-util/panel-session-manager.h>
#include <libpanel-util/panel-show.h>
--
1.7.7