diff -Naur libxfcegui4-4.4.2-orig/libxfcegui4/netk-pager.c libxfcegui4-4.4.2/libxfcegui4/netk-pager.c --- libxfcegui4-4.4.2-orig/libxfcegui4/netk-pager.c 2007-11-17 20:29:54.000000000 +0100 +++ libxfcegui4-4.4.2/libxfcegui4/netk-pager.c 2008-05-06 17:18:13.000000000 +0200 @@ -48,6 +48,7 @@ NetkPagerDisplayMode display_mode; gboolean show_all_workspaces; gboolean workspace_scrolling; + gboolean workspace_invert_scrolling; GtkShadowType shadow_type; GtkOrientation orientation; @@ -146,6 +147,7 @@ pager->priv->display_mode = NETK_PAGER_DISPLAY_CONTENT; pager->priv->show_all_workspaces = TRUE; pager->priv->workspace_scrolling = TRUE; + pager->priv->workspace_invert_scrolling = FALSE; pager->priv->shadow_type = GTK_SHADOW_NONE; pager->priv->orientation = GTK_ORIENTATION_HORIZONTAL; pager->priv->workspace_size = 48; @@ -1256,27 +1258,57 @@ { case GDK_SCROLL_UP: case GDK_SCROLL_LEFT: - if (active > 0) + if (!pager->priv->workspace_invert_scrolling) { - ws = netk_screen_get_workspace (pager->priv->screen, - active - 1); + if (active > 0) + { + ws = netk_screen_get_workspace (pager->priv->screen, + active - 1); + } + else + { + ws = netk_screen_get_workspace (pager->priv->screen, n - 1); + } } else { - ws = netk_screen_get_workspace (pager->priv->screen, n - 1); + if (active < n - 1) + { + ws = netk_screen_get_workspace (pager->priv->screen, + active + 1); + } + else + { + ws = netk_screen_get_workspace (pager->priv->screen, 0); + } } netk_workspace_activate (ws); break; case GDK_SCROLL_DOWN: case GDK_SCROLL_RIGHT: - if (active < n - 1) + if (!pager->priv->workspace_invert_scrolling) { - ws = netk_screen_get_workspace (pager->priv->screen, - active + 1); + if (active < n - 1) + { + ws = netk_screen_get_workspace (pager->priv->screen, + active + 1); + } + else + { + ws = netk_screen_get_workspace (pager->priv->screen, 0); + } } else { - ws = netk_screen_get_workspace (pager->priv->screen, 0); + if (active > 0) + { + ws = netk_screen_get_workspace (pager->priv->screen, + active - 1); + } + else + { + ws = netk_screen_get_workspace (pager->priv->screen, n - 1); + } } netk_workspace_activate (ws); break; @@ -1487,6 +1519,18 @@ } void +netk_pager_set_workspace_invert_scrolling (NetkPager * pager, gboolean workspace_invert_scrolling) +{ + g_return_if_fail (NETK_IS_PAGER (pager)); + + if (pager->priv->workspace_invert_scrolling == workspace_invert_scrolling) + return; + + pager->priv->workspace_invert_scrolling = workspace_invert_scrolling; + gtk_widget_queue_resize (GTK_WIDGET (pager)); +} + +void netk_pager_set_shadow_type (NetkPager * pager, GtkShadowType shadow_type) { g_return_if_fail (NETK_IS_PAGER (pager)); diff -Naur libxfcegui4-4.4.2-orig/libxfcegui4/netk-pager.h libxfcegui4-4.4.2/libxfcegui4/netk-pager.h --- libxfcegui4-4.4.2-orig/libxfcegui4/netk-pager.h 2007-11-17 20:29:54.000000000 +0100 +++ libxfcegui4-4.4.2/libxfcegui4/netk-pager.h 2008-05-06 16:51:22.000000000 +0200 @@ -72,6 +72,8 @@ gboolean show_all_workspaces); void netk_pager_set_workspace_scrolling (NetkPager * pager, gboolean workspace_scrolling); + void netk_pager_set_workspace_invert_scrolling (NetkPager * pager, + gboolean workspace_invert_scrolling); void netk_pager_set_shadow_type (NetkPager * pager, GtkShadowType shadow_type);