diff --git a/defaults/defaults b/defaults/defaults index 3fa8e662c3f3a8a9446b55a6cb5772e44f444d08..6fa5ed70ca1d94e9286abfaeee33ec97466804d5 100644 --- a/defaults/defaults +++ b/defaults/defaults @@ -34,6 +34,7 @@ shadow_delta_width=0 shadow_delta_x=0 shadow_delta_y=0 show_app_icon=false +show_dock_shadow=true show_frame_shadow=false show_popup_shadow=false snap_resist=false diff --git a/mcs-plugin/wmtweaks_plugin.c b/mcs-plugin/wmtweaks_plugin.c index 214301ad544027fa330f9cfd3616844227695a3c..2f6bfe63d28fb5d75de4b40ae8e5d3d269a223c4 100644 --- a/mcs-plugin/wmtweaks_plugin.c +++ b/mcs-plugin/wmtweaks_plugin.c @@ -60,6 +60,7 @@ static gboolean cycle_minimum = TRUE; static gboolean cycle_hidden = TRUE; static gboolean cycle_workspaces = FALSE; static gboolean focus_hint = TRUE; +static gboolean show_dock_shadow = FALSE; static gboolean show_frame_shadow = FALSE; static gboolean show_popup_shadow = FALSE; static gboolean prevent_focus_stealing = FALSE; @@ -99,6 +100,7 @@ static char *easy_click = "Alt"; "Xfwm/RestoreOnMove" "Xfwm/ScrollWorkspaces" "Xfwm/ScrollWorkspaces" + "Xfwm/ShowDockShadow" "Xfwm/ShowFrameShadow" "Xfwm/ShowPopupShadow" "Xfwm/SnapResist" @@ -575,6 +577,12 @@ create_dialog (McsPlugin * mcs_plugin) gtk_box_pack_start (GTK_BOX (compositor_options_vbox), check_button, FALSE, TRUE, 0); gtk_widget_show (check_button); + check_button = + create_gboolean_button (mcs_plugin, _("Show shadows under dock windows"), + "Xfwm/ShowDockShadow", &show_dock_shadow); + gtk_box_pack_start (GTK_BOX (compositor_options_vbox), check_button, FALSE, TRUE, 0); + gtk_widget_show (check_button); + check_button = create_gboolean_button (mcs_plugin, _("Show shadows under regular windows"), "Xfwm/ShowFrameShadow", &show_frame_shadow); @@ -744,6 +752,7 @@ xfwm4_create_channel (McsPlugin * mcs_plugin) init_gboolean_setting (mcs_plugin, "Xfwm/CycleHidden", &cycle_hidden); init_gboolean_setting (mcs_plugin, "Xfwm/CycleWorkspaces", &cycle_workspaces); init_gboolean_setting (mcs_plugin, "Xfwm/FocusHint", &focus_hint); + init_gboolean_setting (mcs_plugin, "Xfwm/ShowDockShadow", &show_dock_shadow); init_gboolean_setting (mcs_plugin, "Xfwm/ShowFrameShadow", &show_frame_shadow); init_gboolean_setting (mcs_plugin, "Xfwm/ShowPopupShadow", &show_popup_shadow); init_gboolean_setting (mcs_plugin, "Xfwm/PreventFocusStealing", &prevent_focus_stealing); diff --git a/src/compositor.c b/src/compositor.c index 7a50abff936572c36ffcfcb1c15183ae9983b4db..adb46a53af70701aac8133710b58e69007f4f438 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -69,7 +69,8 @@ !FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN)) #define WIN_NO_SHADOW(cw) ((cw->c) && \ (FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN | CLIENT_FLAG_BELOW) || \ - (cw->c->type & (WINDOW_DOCK | WINDOW_DESKTOP)))) + (cw->c->type & WINDOW_DESKTOP))) +#define WIN_IS_DOCK(cw) (WIN_HAS_CLIENT(cw) && (cw->c->type & WINDOW_DOCK)) #define WIN_IS_OVERRIDE(cw) (cw->attr.override_redirect) #define WIN_IS_ARGB(cw) (cw->argb) #define WIN_IS_OPAQUE(cw) (((cw->opacity == NET_WM_OPAQUE) && !WIN_IS_ARGB(cw)) || (cw->screen_info->overlays)) @@ -933,7 +934,13 @@ win_extents (CWindow *cw) (screen_info->params->show_frame_shadow && !WIN_IS_OVERRIDE(cw) && !WIN_NO_SHADOW(cw) && - (WIN_HAS_FRAME(cw) || !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)))))) + !WIN_IS_DOCK(cw) && + (WIN_HAS_FRAME(cw) || !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)))) || + (screen_info->params->show_dock_shadow && + WIN_IS_DOCK(cw) && + !WIN_NO_SHADOW(cw) && + !WIN_IS_OVERRIDE(cw) && + (!(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)))))) { XRectangle sr; diff --git a/src/settings.c b/src/settings.c index 654803c9c050b35b0ebaa7f87ae2f49db5c2d16e..aa273ef5462c9ff18282268e799796159a7922f5 100644 --- a/src/settings.c +++ b/src/settings.c @@ -408,6 +408,11 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett { screen_info->params->placement_ratio = setting->data.v_int; } + else if (!strcmp (name, "Xfwm/ShowDockShadow")) + { + screen_info->params->show_dock_shadow = setting->data.v_int; + reloadScreenSettings (screen_info, UPDATE_FRAME); + } else if (!strcmp (name, "Xfwm/ShowFrameShadow")) { screen_info->params->show_frame_shadow = setting->data.v_int; @@ -795,6 +800,12 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc) setIntValueFromInt ("popup_opacity", setting->data.v_int, rc); mcs_setting_free (setting); } + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowDockShadow", CHANNEL5, + &setting) == MCS_SUCCESS) + { + setBooleanValueFromInt ("show_dock_shadow", setting->data.v_int, rc); + mcs_setting_free (setting); + } if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowFrameShadow", CHANNEL5, &setting) == MCS_SUCCESS) { @@ -1330,6 +1341,7 @@ loadSettings (ScreenInfo *screen_info) {"shadow_delta_x", NULL, TRUE}, {"shadow_delta_y", NULL, TRUE}, {"show_app_icon", NULL, TRUE}, + {"show_dock_shadow", NULL, TRUE}, {"show_frame_shadow", NULL, TRUE}, {"show_popup_shadow", NULL, TRUE}, {"snap_resist", NULL, TRUE}, @@ -1473,6 +1485,8 @@ loadSettings (ScreenInfo *screen_info) abs (TOINT (getValue ("placement_ratio", rc))); screen_info->params->show_app_icon = !g_ascii_strcasecmp ("true", getValue ("show_app_icon", rc)); + screen_info->params->show_dock_shadow = + !g_ascii_strcasecmp ("true", getValue ("show_dock_shadow", rc)); screen_info->params->show_frame_shadow = !g_ascii_strcasecmp ("true", getValue ("show_frame_shadow", rc)); screen_info->params->show_popup_shadow = diff --git a/src/settings.h b/src/settings.h index fbfb67dc5d623bef229bb32aa4fd8b891ed8ac3c..5ea15296a2b1728db3686da8d1eed8d76c45298e 100644 --- a/src/settings.h +++ b/src/settings.h @@ -210,6 +210,7 @@ struct _XfwmParams gboolean raise_with_any_button; gboolean scroll_workspaces; gboolean show_app_icon; + gboolean show_dock_shadow; gboolean show_frame_shadow; gboolean show_popup_shadow; gboolean snap_to_border; diff --git a/themes/default/themerc b/themes/default/themerc index ad6ed398cd0da3e8beef8e6c6014d63a84063429..054ee6d9af954c064db111215ad642f6e9686625 100644 --- a/themes/default/themerc +++ b/themes/default/themerc @@ -3,10 +3,10 @@ button_offset=-1 button_spacing=0 full_width_title=false maximized_offset=0 -shadow_delta_height=-2 -shadow_delta_width=-2 -shadow_delta_x=-2 -shadow_delta_y=-2 +shadow_delta_height=2 +shadow_delta_width=0 +shadow_delta_x=0 +shadow_delta_y=0 show_app_icon=true title_horizontal_offset=1 title_shadow_active=frame diff --git a/themes/largeprint/themerc b/themes/largeprint/themerc index ad6ed398cd0da3e8beef8e6c6014d63a84063429..9cd678d75763dc8be4a6d77f72ecc24dca087357 100644 --- a/themes/largeprint/themerc +++ b/themes/largeprint/themerc @@ -3,10 +3,10 @@ button_offset=-1 button_spacing=0 full_width_title=false maximized_offset=0 -shadow_delta_height=-2 -shadow_delta_width=-2 -shadow_delta_x=-2 -shadow_delta_y=-2 +shadow_delta_height=4 +shadow_delta_width=1 +shadow_delta_x=1 +shadow_delta_y=1 show_app_icon=true title_horizontal_offset=1 title_shadow_active=frame