diff -Naur -w xfce4-panel-4.4.2-orig/plugins/pager/pager.c xfce4-panel-4.4.2/plugins/pager/pager.c --- xfce4-panel-4.4.2-orig/plugins/pager/pager.c 2007-11-17 20:30:58.000000000 +0100 +++ xfce4-panel-4.4.2/plugins/pager/pager.c 2008-05-06 18:47:45.000000000 +0200 @@ -45,6 +45,7 @@ int rows; guint scrolling:1; + guint invert_scrolling:1; } Pager; @@ -128,6 +129,7 @@ XfceRc *rc; int rows = 1; gboolean scrolling = TRUE; + gboolean invert_scrolling = FALSE; if ((file = xfce_panel_plugin_lookup_rc_file (plugin)) != NULL) { @@ -138,11 +140,13 @@ { rows = xfce_rc_read_int_entry (rc, "rows", 1); scrolling = xfce_rc_read_bool_entry (rc, "scrolling", TRUE); + scrolling = xfce_rc_read_bool_entry (rc, "invert_scrolling", FALSE); } } pager->rows = rows; pager->scrolling = scrolling; + pager->invert_scrolling = invert_scrolling; } static void @@ -164,6 +168,8 @@ xfce_rc_write_bool_entry (rc, "scrolling", pager->scrolling); + xfce_rc_write_bool_entry (rc, "invert_scrolling", pager->invert_scrolling); + xfce_rc_close (rc); } @@ -265,6 +271,7 @@ xfce_panel_plugin_get_orientation (plugin)); netk_pager_set_n_rows (NETK_PAGER (pager->pager), pager->rows); netk_pager_set_workspace_scrolling (NETK_PAGER (pager->pager), pager->scrolling); + netk_pager_set_workspace_invert_scrolling (NETK_PAGER (pager->pager), pager->invert_scrolling); gtk_widget_show (pager->pager); gtk_container_add (GTK_CONTAINER (plugin), pager->pager); @@ -318,6 +325,25 @@ } static void + cb_scroll_workspaces_changed (GtkWidget * widget, gpointer user_data) + { + gtk_widget_set_sensitive (GTK_WIDGET (user_data), gtk_toggle_button_get_active GTK_TOGGLE_BUTTON (widget)); + } + + static void + workspace_invert_scrolling_toggled (GtkWidget *button, Pager *pager) + { + gboolean invert_scrolling = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)); + + if (pager->invert_scrolling != invert_scrolling) + { + pager->invert_scrolling = invert_scrolling; + + netk_pager_set_workspace_invert_scrolling (NETK_PAGER (pager->pager), invert_scrolling); + } + } + + static void pager_dialog_response (GtkWidget *dlg, int reponse, Pager *pager) { g_object_set_data (G_OBJECT (pager->plugin), "dialog", NULL); @@ -330,7 +356,7 @@ static void pager_properties_dialog (XfcePanelPlugin *plugin, Pager *pager) { - GtkWidget *dlg, *vbox, *hbox, *label, *spin, *scrolling; + GtkWidget *dlg, *vbox, *hbox, *label, *spin, *scrolling, *invert_scrolling; int max; xfce_panel_plugin_block_menu (plugin); @@ -404,6 +430,17 @@ g_signal_connect (scrolling, "toggled", G_CALLBACK (workspace_scrolling_toggled), pager); + invert_scrolling = gtk_check_button_new_with_mnemonic (_("Invert mouse wheel workspace switching direction")); + gtk_widget_show (invert_scrolling); + gtk_box_pack_start (GTK_BOX (vbox), invert_scrolling, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (invert_scrolling), pager->invert_scrolling); + gtk_widget_set_sensitive (invert_scrolling, (gboolean) pager->scrolling); + + g_signal_connect (invert_scrolling, "toggled", + G_CALLBACK (workspace_invert_scrolling_toggled), pager); + g_signal_connect (G_OBJECT (scrolling), "toggled", + G_CALLBACK (cb_scroll_workspaces_changed), invert_scrolling); + gtk_widget_show (dlg); }