summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrzej <ndrwrdck@gmail.com>2012-03-03 02:59:37 +0900
committerAndrzej <ndrwrdck@gmail.com>2012-03-03 02:59:37 +0900
commit77c3ac772ec79f3a8020d86db26b7583fd2a9223 (patch)
tree39975203b55128f2ff6ce781549e96cfdd89af47
parent8a34b46a0569eb19d31055e8cdbe3d73c191df42 (diff)
pager plugin: making use of a fixed libwnck version (>=2.31.0)
libwnck pager (2.31.0) has been extended with a versioning api and a layout policy mechanism. This makes our aspect ratio hack for pager in a deskbar mode unnecessary. The modified libwnck version is currently available at: http://git.gnome.org/browse/libwnck/log/?h=wip/xfce-4.10-fixes
-rw-r--r--plugins/pager/pager.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/plugins/pager/pager.c b/plugins/pager/pager.c
index 65be4cc7..e8b7d077 100644
--- a/plugins/pager/pager.c
+++ b/plugins/pager/pager.c
@@ -42,6 +42,7 @@
#define WORKSPACE_SETTINGS_COMMAND "xfwm4-workspace-settings"
+#define WNCK_PAGER_HAS_LAYOUT_POLICY (defined (WNCK_CHECK_VERSION) && WNCK_CHECK_VERSION (2,31,0))
@@ -66,10 +67,12 @@ static void pager_plugin_mode_changed (XfcePanelPlugin *
static void pager_plugin_configure_workspace_settings (GtkWidget *button);
static void pager_plugin_configure_plugin (XfcePanelPlugin *panel_plugin);
static void pager_plugin_screen_layout_changed (PagerPlugin *plugin);
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
static void pager_plugin_size_request (GtkWidget *widget,
GtkRequisition *requisition);
static void pager_plugin_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
+#endif
@@ -91,11 +94,13 @@ struct _PagerPlugin
guint miniature_view : 1;
gint rows;
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
/* panel size */
gint size;
/* last height of the WNCK pager in deskbar mode */
gint height;
+#endif
};
enum
@@ -127,8 +132,10 @@ pager_plugin_class_init (PagerPluginClass *klass)
widget_class = GTK_WIDGET_CLASS (klass);
widget_class->scroll_event = pager_plugin_scroll_event;
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
widget_class->size_request = pager_plugin_size_request;
widget_class->size_allocate = pager_plugin_size_allocate;
+#endif
plugin_class = XFCE_PANEL_PLUGIN_CLASS (klass);
plugin_class->construct = pager_plugin_construct;
@@ -169,8 +176,10 @@ pager_plugin_init (PagerPlugin *plugin)
plugin->miniature_view = TRUE;
plugin->rows = 1;
plugin->pager = NULL;
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
plugin->size = 0;
plugin->height = 1;
+#endif
}
@@ -293,7 +302,8 @@ pager_plugin_scroll_event (GtkWidget *widget,
static void
pager_plugin_screen_layout_changed (PagerPlugin *plugin)
{
- GtkOrientation orientation;
+ XfcePanelPluginMode mode;
+ GtkOrientation orientation;
panel_return_if_fail (XFCE_IS_PAGER_PLUGIN (plugin));
panel_return_if_fail (WNCK_IS_SCREEN (plugin->wnck_screen));
@@ -304,8 +314,9 @@ pager_plugin_screen_layout_changed (PagerPlugin *plugin)
wnck_screen_force_update (plugin->wnck_screen);
}
+ mode = xfce_panel_plugin_get_mode (XFCE_PANEL_PLUGIN (plugin));
orientation =
- (xfce_panel_plugin_get_mode (XFCE_PANEL_PLUGIN (plugin)) != XFCE_PANEL_PLUGIN_MODE_VERTICAL) ?
+ (mode != XFCE_PANEL_PLUGIN_MODE_VERTICAL) ?
GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
if (plugin->miniature_view)
@@ -314,6 +325,12 @@ pager_plugin_screen_layout_changed (PagerPlugin *plugin)
wnck_pager_set_display_mode (WNCK_PAGER (plugin->pager), WNCK_PAGER_DISPLAY_CONTENT);
if (!wnck_pager_set_n_rows (WNCK_PAGER (plugin->pager), plugin->rows))
g_message ("Setting the pager rows returned false. Maybe the setting is not applied.");
+#if WNCK_PAGER_HAS_LAYOUT_POLICY
+ wnck_pager_set_layout_policy (WNCK_PAGER (plugin->pager),
+ (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL) ?
+ WNCK_PAGER_LAYOUT_POLICY_WIDTH_FOR_HEIGHT :
+ WNCK_PAGER_LAYOUT_POLICY_HEIGHT_FOR_WIDTH);
+#endif
wnck_pager_set_orientation (WNCK_PAGER (plugin->pager), orientation);
}
else
@@ -402,6 +419,7 @@ pager_plugin_free_data (XfcePanelPlugin *panel_plugin)
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
static void
pager_plugin_size_request (GtkWidget *widget,
GtkRequisition *requisition)
@@ -459,6 +477,7 @@ pager_plugin_size_allocate (GtkWidget *widget,
}
gtk_widget_size_allocate (plugin->pager, allocation);
}
+#endif
@@ -466,6 +485,7 @@ static gboolean
pager_plugin_size_changed (XfcePanelPlugin *panel_plugin,
gint size)
{
+#if !WNCK_PAGER_HAS_LAYOUT_POLICY
PagerPlugin *plugin = XFCE_PAGER_PLUGIN (panel_plugin);
if (plugin->size != size)
@@ -480,6 +500,7 @@ pager_plugin_size_changed (XfcePanelPlugin *panel_plugin,
gtk_widget_queue_resize (GTK_WIDGET (panel_plugin));
}
}
+#endif
/* do not set fixed size */
return TRUE;
@@ -499,7 +520,15 @@ pager_plugin_mode_changed (XfcePanelPlugin *panel_plugin,
GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
if (plugin->miniature_view)
- wnck_pager_set_orientation (WNCK_PAGER (plugin->pager), orientation);
+ {
+#if WNCK_PAGER_HAS_LAYOUT_POLICY
+ wnck_pager_set_layout_policy (WNCK_PAGER (plugin->pager),
+ (mode == XFCE_PANEL_PLUGIN_MODE_HORIZONTAL) ?
+ WNCK_PAGER_LAYOUT_POLICY_WIDTH_FOR_HEIGHT :
+ WNCK_PAGER_LAYOUT_POLICY_HEIGHT_FOR_WIDTH);
+#endif
+ wnck_pager_set_orientation (WNCK_PAGER (plugin->pager), orientation);
+ }
else
pager_buttons_set_orientation (XFCE_PAGER_BUTTONS (plugin->pager), orientation);
}