diff --git a/NEWS b/NEWS index bf824b12d9c6831ecc2a5e03d4e03f4c1d154e16..d049215e3d761e2fe0cba5e5298aa88edc609842 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,7 @@ - Treat dialogs and utility windows as transients for group (bug #3102). - Add support for shape input with XShape extension 1.1 (Bug #3092). - Make the title button in the xfwm4 settings manager dragable (bug #3000). +- Make wireframe while cycling user configurable (Bug #4443) - Fix a misinterpretation of ICCCM about when to send a synthetic configureNotify event (bug #2977). - Add option to instruct xfwm4 not to bring window back on diff --git a/defaults/defaults b/defaults/defaults index e71bffc0c7724bb54ca6cf53e91cb58f42cf7dfe..182ab9cac7dbca876ae2fcb34595198196c145c6 100644 --- a/defaults/defaults +++ b/defaults/defaults @@ -6,23 +6,24 @@ button_layout=O|SHMC button_offset=0 button_spacing=0 click_to_focus=true +cycle_draw_frame=true cycle_hidden=true cycle_minimum=true cycle_workspaces=false dbl_click_time=400 double_click_action=maximize easy_click=true +focus_delay=250 focus_hint=true focus_new=true -focus_delay=250 frame_opacity=100 full_width_title=true inactive_opacity=100 keytheme=Default maximized_offset=0 move_opacity=100 -placement_ratio=20 placement_mode=center +placement_ratio=20 popup_opacity=100 prevent_focus_stealing=false raise_delay=250 diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c index d58588076476c7fc3544db0113fffeca28fc4203..2cfcfe876115adac4fae8278833f5502c27de5eb 100644 --- a/settings-dialogs/tweaks-settings.c +++ b/settings-dialogs/tweaks-settings.c @@ -58,7 +58,7 @@ void cb_easy_click_combo_box_changed (GtkComboBox *combo, XfconfChannel *channel) { guint n; - + n = 0; while (modifier_list[n]) { @@ -140,11 +140,12 @@ wm_tweaks_dialog_configure_widgets (GladeXML *gxml) gchar *default_placement = NULL; gboolean modifier_set = FALSE; guint n; - + /* Cycling tab */ GtkWidget *cycle_workspaces_check = glade_xml_get_widget (gxml, "cycle_workspaces_check"); GtkWidget *cycle_hidden_check = glade_xml_get_widget (gxml, "cycle_hidden_check"); GtkWidget *cycle_minimum_check = glade_xml_get_widget (gxml, "cycle_minimum_check"); + GtkWidget *cycle_draw_frame = glade_xml_get_widget (gxml, "cycle_draw_frame"); /* Focus tab */ GtkWidget *prevent_focus_stealing_check = glade_xml_get_widget (gxml, "prevent_focus_stealing_check"); @@ -268,110 +269,114 @@ wm_tweaks_dialog_configure_widgets (GladeXML *gxml) /* Bind easy properties */ /* Cycling tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/cycle_minimum", G_TYPE_BOOLEAN, (GObject *)cycle_minimum_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/cycle_hidden", G_TYPE_BOOLEAN, (GObject *)cycle_hidden_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/cycle_workspaces", G_TYPE_BOOLEAN, (GObject *)cycle_workspaces_check, "active"); + xfconf_g_property_bind (xfwm4_channel, + "/general/cycle_draw_frame", + G_TYPE_BOOLEAN, + (GObject *)cycle_draw_frame, "active"); /* Focus tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/prevent_focus_stealing", G_TYPE_BOOLEAN, (GObject *)prevent_focus_stealing_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/focus_hint", G_TYPE_BOOLEAN, (GObject *)focus_hint_check, "active"); - + /* Accessibility tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/raise_on_click", G_TYPE_BOOLEAN, (GObject *)raise_on_click_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/borderless_maximize", G_TYPE_BOOLEAN, (GObject *)borderless_maximize_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/restore_on_move", G_TYPE_BOOLEAN, (GObject *)restore_on_move_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/snap_resist", G_TYPE_BOOLEAN, (GObject *)snap_resist_check, "active"); /* Workspaces tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/toggle_workspaces", G_TYPE_BOOLEAN, (GObject *)toggle_workspaces_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/scroll_workspaces", G_TYPE_BOOLEAN, (GObject *)scroll_workspaces_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/wrap_layout", G_TYPE_BOOLEAN, (GObject *)wrap_layout_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/wrap_cycle", G_TYPE_BOOLEAN, (GObject *)wrap_cycle_check, "active"); /* Placement tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/placement_ratio", G_TYPE_INT, (GObject *)placement_ratio_scale, "value"); /* Compositing tab */ - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/use_compositing", G_TYPE_BOOLEAN, (GObject *)use_compositing_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/unredirect_overlays", G_TYPE_BOOLEAN, (GObject *)unredirect_overlays_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/show_frame_shadow", G_TYPE_BOOLEAN, (GObject *)show_frame_shadow_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/show_popup_shadow", G_TYPE_BOOLEAN, (GObject *)show_popup_shadow_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/show_dock_shadow", G_TYPE_BOOLEAN, (GObject *)show_dock_shadow_check, "active"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/frame_opacity", G_TYPE_INT, (GObject *)frame_opacity_scale, "value"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/resize_opacity", G_TYPE_INT, (GObject *)resize_opacity_scale, "value"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/move_opacity", G_TYPE_INT, (GObject *)move_opacity_scale, "value"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/inactive_opacity", G_TYPE_INT, (GObject *)inactive_opacity_scale, "value"); - xfconf_g_property_bind (xfwm4_channel, + xfconf_g_property_bind (xfwm4_channel, "/general/popup_opacity", G_TYPE_INT, (GObject *)popup_opacity_scale, "value"); @@ -385,12 +390,12 @@ wm_tweaks_dialog_configure_widgets (GladeXML *gxml) static GOptionEntry entries[] = { - { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &opt_socket_id, N_ ("Session manager socket"), N_ ("SOCKET ID") }, + { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &opt_socket_id, N_ ("Session manager socket"), N_ ("SOCKET ID") }, { "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &opt_version, N_ ("Version information"), NULL }, { NULL } }; -int +int main (int argc, gchar **argv) { GtkWidget *dialog; diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade index cdd2d20a65d41dbae01007c80417a2b912a2ca98..a9828783c421a66b1f9a4467e225ded2ac356330 100644 --- a/settings-dialogs/xfwm4-tweaks-dialog.glade +++ b/settings-dialogs/xfwm4-tweaks-dialog.glade @@ -69,6 +69,21 @@ or "skip taskbar" properties set</property> <property name="position">2</property> </packing> </child> + <child> + <widget class="GtkCheckButton" id="cycle_draw_frame"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Draw frame around selected windows while cycling</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> </widget> </child> <child> diff --git a/src/cycle.c b/src/cycle.c index c21ce3325e3143424160faccaefe117329df8110..6fe49504b8b59c6ac4c4bc559a72f6ef5187ecb1 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -149,7 +149,10 @@ clientCycleEventFilter (XEvent * xevent, gpointer data) { if (c) { - wireframeUpdate (c, passdata->wireframe); + if (passdata->wireframe) + { + wireframeUpdate (c, passdata->wireframe); + } } else { @@ -233,6 +236,7 @@ clientCycle (Client * c, XKeyEvent * ev) passdata.cycle_range |= INCLUDE_ALL_WORKSPACES; } passdata.c = clientGetNext (c, passdata.cycle_range); + passdata.wireframe = NULL; /* If there is one single client, and if it's eligible for focus, use it */ if ((passdata.c == NULL) && (c != clientGetFocus()) && @@ -244,7 +248,10 @@ clientCycle (Client * c, XKeyEvent * ev) if (passdata.c) { TRACE ("entering cycle loop"); - passdata.wireframe = wireframeCreate (passdata.c); + if (screen_info->params->cycle_draw_frame) + { + passdata.wireframe = wireframeCreate (passdata.c); + } passdata.tabwin = tabwinCreate (passdata.c->screen_info->gscr, c, passdata.c, passdata.cycle_range, screen_info->params->cycle_workspaces); @@ -254,7 +261,10 @@ clientCycle (Client * c, XKeyEvent * ev) TRACE ("leaving cycle loop"); tabwinDestroy (passdata.tabwin); g_free (passdata.tabwin); - wireframeDelete (screen_info, passdata.wireframe); + if (passdata.wireframe) + { + wireframeDelete (screen_info, passdata.wireframe); + } updateXserverTime (display_info); } diff --git a/src/settings.c b/src/settings.c index 65746cdc6522671aadb86a49f5e57cef273c80df..58997774a6b42e17489cf37661081ad23dfc3e21 100644 --- a/src/settings.c +++ b/src/settings.c @@ -665,6 +665,7 @@ loadSettings (ScreenInfo *screen_info) {"button_spacing", NULL, G_TYPE_INT, TRUE}, {"click_to_focus", NULL, G_TYPE_BOOLEAN, TRUE}, {"focus_delay", NULL, G_TYPE_INT, TRUE}, + {"cycle_draw_frame", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_hidden", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_minimum", NULL, G_TYPE_BOOLEAN, TRUE}, {"cycle_workspaces", NULL, G_TYPE_BOOLEAN, TRUE}, @@ -815,6 +816,8 @@ loadSettings (ScreenInfo *screen_info) getBoolValue ("click_to_focus", rc); screen_info->params->cycle_minimum = getBoolValue ("cycle_minimum", rc); + screen_info->params->cycle_draw_frame = + getBoolValue ("cycle_draw_frame", rc); screen_info->params->cycle_hidden = getBoolValue ("cycle_hidden", rc); screen_info->params->cycle_workspaces = @@ -1267,6 +1270,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ { screen_info->params->cycle_minimum = g_value_get_boolean (value); } + else if (!strcmp (name, "cycle_draw_frame")) + { + screen_info->params->cycle_draw_frame = g_value_get_boolean (value); + } else if (!strcmp (name, "cycle_hidden")) { screen_info->params->cycle_hidden = g_value_get_boolean (value); diff --git a/src/settings.h b/src/settings.h index c9ac90d25cec257f223d64675a3dc10fb331dcd6..8e9d171086c01fbdfe3406586d4b1d87c834adcf 100644 --- a/src/settings.h +++ b/src/settings.h @@ -168,15 +168,15 @@ struct _XfwmParams int button_spacing; int double_click_action; int easy_click; + int focus_delay; int frame_opacity; int inactive_opacity; int maximized_offset; int move_opacity; - int placement_ratio; int placement_mode; + int placement_ratio; int popup_opacity; int raise_delay; - int focus_delay; int resize_opacity; int restore_on_move; int shadow_delta_height; @@ -192,6 +192,7 @@ struct _XfwmParams gboolean box_move; gboolean box_resize; gboolean click_to_focus; + gboolean cycle_draw_frame; gboolean cycle_hidden; gboolean cycle_minimum; gboolean cycle_workspaces; @@ -207,9 +208,9 @@ struct _XfwmParams gboolean show_dock_shadow; gboolean show_frame_shadow; gboolean show_popup_shadow; + gboolean snap_resist; gboolean snap_to_border; gboolean snap_to_windows; - gboolean snap_resist; gboolean title_vertical_offset_active; gboolean title_vertical_offset_inactive; gboolean toggle_workspaces;