diff -ur xfwm4-4.8.1.orig//defaults/defaults xfwm4-4.8.1/defaults/defaults --- xfwm4-4.8.1.orig//defaults/defaults 2011-02-16 18:13:57.000000000 +0100 +++ xfwm4-4.8.1/defaults/defaults 2011-02-16 18:14:27.000000000 +0100 @@ -9,6 +9,7 @@ cycle_draw_frame=true cycle_apps_only=false cycle_hidden=true +cycle_hidden_last=true cycle_minimum=true cycle_workspaces=false double_click_time=250 diff -ur xfwm4-4.8.1.orig//settings-dialogs/tweaks-settings.c xfwm4-4.8.1/settings-dialogs/tweaks-settings.c --- xfwm4-4.8.1.orig//settings-dialogs/tweaks-settings.c 2011-02-16 18:13:58.000000000 +0100 +++ xfwm4-4.8.1/settings-dialogs/tweaks-settings.c 2011-02-16 18:17:10.000000000 +0100 @@ -158,6 +158,7 @@ /* Cycling tab */ GtkWidget *cycle_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_workspaces_check")); GtkWidget *cycle_hidden_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_hidden_check")); + GtkWidget *cycle_hidden_last_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_hidden_last_check")); GtkWidget *cycle_minimum_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_minimum_check")); GtkWidget *cycle_draw_frame = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_draw_frame")); @@ -296,6 +297,10 @@ G_TYPE_BOOLEAN, (GObject *)cycle_hidden_check, "active"); xfconf_g_property_bind (xfwm4_channel, + "/general/cycle_hidden_last", + G_TYPE_BOOLEAN, + (GObject *)cycle_hidden_last_check, "active"); + xfconf_g_property_bind (xfwm4_channel, "/general/cycle_workspaces", G_TYPE_BOOLEAN, (GObject *)cycle_workspaces_check, "active"); diff -ur xfwm4-4.8.1.orig//settings-dialogs/xfwm4-tweaks-dialog.glade xfwm4-4.8.1/settings-dialogs/xfwm4-tweaks-dialog.glade --- xfwm4-4.8.1.orig//settings-dialogs/xfwm4-tweaks-dialog.glade 2011-02-16 18:13:58.000000000 +0100 +++ xfwm4-4.8.1/settings-dialogs/xfwm4-tweaks-dialog.glade 2011-02-16 18:46:18.000000000 +0100 @@ -94,6 +94,21 @@ + + True + True + _Hidden windows are shown last in cycle list + True + 0 + True + + + False + False + 2 + + + Cycle _through windows on all workspaces True @@ -105,7 +120,7 @@ False False - 2 + 3 @@ -120,7 +135,7 @@ False False - 3 + 4 diff -ur xfwm4-4.8.1.orig//settings-dialogs/xfwm4-tweaks-dialog_ui.h xfwm4-4.8.1/settings-dialogs/xfwm4-tweaks-dialog_ui.h --- xfwm4-4.8.1.orig//settings-dialogs/xfwm4-tweaks-dialog_ui.h 2011-02-16 18:13:58.000000000 +0100 +++ xfwm4-4.8.1/settings-dialogs/xfwm4-tweaks-dialog_ui.h 2011-02-16 19:00:30.000000000 +0100 @@ -59,505 +59,513 @@ "TrueFalseFalse1Cycle _through windows on all wo" - "rkspacesTrueTrueF" - "alseTrueTrueFalseFalse<" - "property name=\"position\">2_Draw frame around selected windows while cycl" - "ingTrueTrueFalse<" - "/property>TrueTrueTrueTrue_Hidden windows " + "are shown last in cycle listTrue0TrueFalseFalse3TrueC_yclingTrueFalseTrue12vertical6A" - "ctivate _focus stealing prevention2Cycle _through windows on all workspacesTrueTrueFalseTrueTrueFalseFalse3_Draw frame around selected windows while cyclingTrueTrueFalseTrueTrueFals" + "eFalse4TrueC_ycling<" + "/property>TrueFalseTr" + "ue12vertical6Activate _focus" + " stealing preventionTrueTrueFalseTrueTrue" + "FalseFalse" + "0Honor _standard ICCCM focus hintTrueTrueFalseTrueTrueFalseFalse1T" + "ruevertical6True0When a" + " window raises itself:0True612True6vertical6_Bring window on current workspaceTrueTrueFalseTrueTrueFalseFalse0Honor _standard ICCC" - "M focus hintTrueTrueFalseTrueTrueFalseFalse1Truevertical6True0When a window raises itself:TrueTrueTrue0Switch to win_dow\'s workspaceTrueTrueFalseTrueTrueTrueactivate_action_bring_option1Do _nothingTrueTrueFalseTrueTrueTruea" + "ctivate_action_bring_option21FalseFalse21True_FocusTrue1FalseTrue" + "12vertical6True12True0Key used to _grab and move windows:Trueeasy_click_combo_boxFalseFalse0TrueFalseFalse1FalseFalse0True612True6vertical6_Bring window on current workspaceTrueTrueFalseTrueTrueTrue0Switch to win_dow\'s workspace<" + "s=\"GtkCheckButton\" id=\"raise_with_any_button_check\">_Raise windows when any mouse button is " + "pressedTrueTrueFa" + "lseTrueTrueFalseFalse1Hide _frame of windows when maximized<" "/property>TrueTrueFalseTrueTrueTrueactivate_action_bring_option1" - "Do _nothingTrueTrueFalseTrue" - "TrueTrueactivate_action_bring_option2" - "1FalseFalse2" - "1True_FocusTrue1FalseTrue12vertical6True12True0Key used to _grab and move wind" - "ows:Trueeasy_click_combo_boxFalse" - "False0TrueFalseFalse1FalseFal" - "se0" - "_Raise windows when a" - "ny mouse button is pressedTrueTrueFalseTrue<" - "/property>TrueFalseFalse1Hide _frame of wind" - "ows when maximizedTrue" - "TrueFalseTrueTrueFalseFalse2Restore original _size of maxim" - "ized windows when movingTrueTrueFalseTrueTrueFalseF" - "alse3Use _edge resistance instead " - "of window snappingTrue" - "TrueFalseTrueTrueFalseFalse4Notify of _urgency by making window\'s d" - "ecoration blinkTrueTrueFalseTrue<" - "property name=\"draw_indicator\">TrueFalseFalse5" - "Keep urgent windows _blinking repeat" - "edlyTrueTrueFalse" - "TrueTrueFalseFalse6<" - "property name=\"position\">2True_Access" - "ibilityTrue2FalseTrue12verti" - "cal6Use the _mouse wheel on the desktop to swit" - "ch workspacesTrueTrueFalseTrueTrueFalseFalse0_Remember and recall previous work" - "space\nwhen switching via keyboard shortcutsTrueTrueFalseTrueTrueFalseFalse1Wrap works" - "paces depending on the actual desktop _layoutTrueTrue" - "FalseTrueTrueFalseFalse2Wrap work" - "spaces when the _first or the last workspace is reachedTrueFalseFalse2Restore original _size of maximized windows when m" + "ovingTrueTrueFals" + "eTrueTrueFalseFalse3Use _edge resistance instead of window snappingTrueTrueFalseTrueTrueFalseFalse4Notify of _urgency by making window\'s decoration blinkTrueTrueFalseTrueTrueFalseFalse5Keep urgent windows _blinking repeatedlyTrueTrue<" "/property>FalseTrueTrueFalseFalse33True_WorkspacesTrue3FalseTrue12<" - "/property>vertical6True0_Minimum siz" - "e of windows to trigger smart placement:Trueplacemen" - "t_ratio_scaleFal" - "seFalse0True612TrueTrue<i>Sm" - "all</i>TrueFalseFalse0TrueTrueadjustment1FalseFalse1True&" - "lt;i>Large</i>TrueFalse2FalseFalse1<" - "/packing>Truevertical6True0By default, place windows:0" - "True612True6v" - "ertical6At the _center of the screen" - "True" - "TrueFalseTrueTrue0" - "Under the mouse _pointerTrueTrueFalseTrueTrueTrueplacement_center_op" - "tion11FalseFalse<" - "property name=\"position\">24True_P" - "lacementTrue4FalseTrue12vert" - "ical6_Enable display compositingTrueTrueFalseTrueTrueFalseFalse0TrueFalseTrueneverautomaticTru" - "equeuenoneTrue612<" - "/property>Truevertical6Display _fullscreen overlay windows directly62True_AccessibilityTrue2FalseTrue" + "12vertical6Use the _mouse wheel on the desktop to switch workspacesTrueTrueFalseTrueTrueFals" + "eFalse0_Remember and recall previous workspace\nwhen switching v" + "ia keyboard shortcutsTrueTrueFalseTrueTrueFalseFals" + "e1<" + "child>Wrap workspaces depending on the" + " actual desktop _layoutTrueTrueFalseTrueTrueFalseFa" + "lse2Wrap workspaces when the _first" + " or the last workspace is reached" + "TrueTrueFalseTrueTrueFalseFalse33True_WorkspacesTrue3False<" + "child>True12vertical6True0_Minimum size of windows to tri" + "gger smart placement:Trueplacement_ratio_scaleFalseFalse0True612T" + "rueTrue<i>Small</i>TrueFalseFalse0TrueTrueadjustment1FalseFalse1" + "True<i>Large</i" + ">TrueFalse2" + "FalseFalse" + "1Truevertical<" + "/property>6True0By default, place windows:0True612True6vertical6At the _center of the screenTrueTrueFalseTrueTrue0<" + "/child>Under the mouse _po" + "interTrueTrueFals" + "eTrueTrueTrueplacement_center_option11Fals" + "eFalse24True_PlacementTrue4FalseTrue12vertical6_Enable display compositingTrueTrueFalseTrueTrueFalseFalse0TrueFalseTrue" + "neverautomaticTruequeue" + "none" + "True612Truevertical6Display _fullscreen overlay windows directlyTrueTrueFalseTrueTrueFalse0Show shadows under _regular windowsTrueTrueFalseTrueTrueFalse0Show shadows under _r" - "egular windowsTrueTrueFalseTrueTrueFalse1Sh" - "ow shadows under pop_up windowsTr" - "ueTrueFalse" - "TrueTrueFalse2Show shadows under _dock windowsTrueTrueFalseTrueTrueFalse3True0Opaci_ty of window decorations:True" - "frame_opacity_scaleFalse4True212TrueTrue<i>" - "Transparent</i>TrueFalseFalse0TrueTruediscontinuo" - "usadjustment2FalseFalse1True<i>Opaque</i>TrueFalseFalse2FalseFalse5True0Opacity of _inactive win" - "dows:Trueinactive_opacity_scale<" - "packing>FalseFalse6True212TrueTrue<i>" - "Transparent</i>TrueFalseFalse0TrueTruediscont" - "inuousadjustment3FalseFalse1True<i>Opaque</i>TrueFalseFalse<" - "property name=\"position\">2FalseFalse7True0Opacity of windows " - "during _move:Truemove_opacity_scaleFalseFalse8True212True" - "True<i" - ">Transparent</i>True<" + ">False1Show shadows under po" + "p_up windowsTrueTrueFalseTrueTrueFalse2Show " + "shadows under _dock windowsTrueTrueFalseTrue" + "TrueFalse3True0Op" + "aci_ty of window decorations:Trueframe_opacity_scale<" "/property>False<" - "property name=\"fill\">False0TrueTruediscont" - "inuousadjustment4FalseFalse1True<i>Opaque</i>TrueFalseFalse<" - "property name=\"position\">2FalseFalse9True0Opacity of windows " - "during resi_ze:Trueresize_opacity_scaleFalseFalse10" - "True212TrueTrue&" - "lt;i>Transparent</i>T" - "rueFalseFalse" - "0TrueTrued" - "iscontinuousadjustment5FalseFalse1True<i>Opaque</i>True4Tr" + "ue212TrueTrue<i>Transparent</i>" + ";TrueFalseF" + "alse0TrueTruediscontinuousadjustment2FalseFalse1True<i>Opaque</i>TrueFalseFalse2FalseFalse5True0Opacity of _inactive windows:Trueinactive_opacity_scaleFalseFalse6" + "True212TrueTrue<i>Transparent</i&g" + "t;TrueFalse" + "False0TrueTru" + "ediscontinuousadjustment3FalseFals" + "e1<" + "/packing>True<i>Opaque</i>TrueFalse" + "False2FalseFal" + "se7" + "True0Opacity of windows during _move:Truemove_opacity_scaleFalseFalse2" - "FalseFalse11True" - "0Opacity of po" - "pup window_s:Truepopup_opacity_scale8True212TrueTrue<i>Transparent<" + "/i>True" + "FalseFalse0<" + "/child>TrueTru" + "ediscontinuousadjustment4FalseFals" + "e1<" + "/packing>True<i>Opaque</i>TrueFalse" + "False2FalseFal" + "se9" + "True0Opacity of windows during resi_ze:Trueresize_opacity_scaleFalseFalse10True212TrueTrue<i>Transparent" + "</i>TrueFalseFalse12True2<" - "/property>12TrueTrue<" - "i>Transparent</i>True" - "False" - "False0TrueTruedisco" - "ntinuousadjustment6" - "FalseFalse1True<i>Opaque</i>TrueFalseFalse2FalseFalse131<" - "/child>5TrueC_ompositorTrue5False1<" - "child internal-child=\"action_area\">Trueendgtk-helpTrueFalse<" - "/property>TrueTrueTrueFalseFalse0True" - "gtk-closeTrueTrue" - "TrueTrueFalseFalse1Falseend0button2but" - "ton1" + "fill\">False0TrueTruediscontinuousadjustment5False" + "False1<" + "property name=\"visible\">True<i>Opaque</i>TrueF" + "alseFalse2False" + "False11True0Opacity of popup window_s:Truepopup_opacity_scaleFalseFalse12True212TrueTrue<i>Transparent<" + "/i>True" + "FalseFalse0<" + "/child>TrueTr" + "uediscontinuous<" + "property name=\"adjustment\">adjustment6FalseFal" + "se1" + "True<i>Opaque</i>TrueFals" + "eFalse2FalseFa" + "lse13" + "15TrueC" + "_ompositorTrue5False1Trueendgtk-helpTrueFalseTrueTrueTrueFalseFalse0Truegtk-closeTrueTrueTrueTrueFalseFalse1Falseend0butt" + "on2button1" }; -static const unsigned tweaks_dialog_ui_length = 37210u; +static const unsigned tweaks_dialog_ui_length = 37742u; diff -ur xfwm4-4.8.1.orig//src/client.c xfwm4-4.8.1/src/client.c --- xfwm4-4.8.1.orig//src/client.c 2011-02-16 18:13:57.000000000 +0100 +++ xfwm4-4.8.1/src/client.c 2011-02-16 18:20:12.000000000 +0100 @@ -2418,7 +2418,7 @@ { FLAG_SET (c->flags, CLIENT_FLAG_ICONIFIED); setWMState (display_info, c->window, IconicState); - if (!screen_info->show_desktop) + if (!screen_info->show_desktop && screen_info->params->cycle_hidden_last) { clientSetLast (c); } diff -ur xfwm4-4.8.1.orig//src/settings.c xfwm4-4.8.1/src/settings.c --- xfwm4-4.8.1.orig//src/settings.c 2011-02-16 18:13:57.000000000 +0100 +++ xfwm4-4.8.1/src/settings.c 2011-02-16 18:21:29.000000000 +0100 @@ -677,6 +677,7 @@ {"cycle_apps_only", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_draw_frame", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE}, + {"cycle_hidden_last", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_workspaces", NULL, G_TYPE_BOOLEAN, TRUE}, {"double_click_time", NULL, G_TYPE_INT, TRUE}, @@ -766,6 +767,8 @@ getBoolValue ("cycle_draw_frame", rc); screen_info->params->cycle_hidden = getBoolValue ("cycle_hidden", rc); + screen_info->params->cycle_hidden_last = + getBoolValue ("cycle_hidden_last", rc); screen_info->params->cycle_workspaces = getBoolValue ("cycle_workspaces", rc); screen_info->params->focus_hint = @@ -1276,6 +1279,10 @@ { screen_info->params->cycle_hidden = g_value_get_boolean (value); } + else if (!strcmp (name, "cycle_hidden_last")) + { + screen_info->params->cycle_hidden_last = g_value_get_boolean (value); + } else if (!strcmp (name, "cycle_workspaces")) { screen_info->params->cycle_workspaces = g_value_get_boolean (value); diff -ur xfwm4-4.8.1.orig//src/settings.h xfwm4-4.8.1/src/settings.h --- xfwm4-4.8.1.orig//src/settings.h 2011-02-16 18:13:57.000000000 +0100 +++ xfwm4-4.8.1/src/settings.h 2011-02-16 18:21:43.000000000 +0100 @@ -199,6 +199,7 @@ gboolean cycle_apps_only; gboolean cycle_draw_frame; gboolean cycle_hidden; + gboolean cycle_hidden_last; gboolean cycle_minimum; gboolean cycle_workspaces; gboolean focus_hint;