diff options
author | Richard Grenville <[email protected]> | 2012-09-26 19:48:36 +0800 |
---|---|---|
committer | Richard Grenville <[email protected]> | 2012-09-26 19:48:36 +0800 |
commit | 10ede8999852630fd375f3eb11e501f0e60eee4e (patch) | |
tree | 1a8422fdb69fdaa457b5a61581c434e5b272e7d3 | |
parent | 60f724a30a4814095bb219433f704d099ad46ebb (diff) | |
download | tdebase-10ede8999852630fd375f3eb11e501f0e60eee4e.tar.gz tdebase-10ede8999852630fd375f3eb11e501f0e60eee4e.zip |
Bug fix: Issue #46: Optionally mark override-redirect windows as active
Attempt to fix the transparency issue of Firefox and Chromium location
bar dropdown window by marking override_redirect windows as active. This
may not work completely and could have other side effects. Experimental.
Enable by using --mark-ovredir-focused.
-rw-r--r-- | compton.c | 17 | ||||
-rw-r--r-- | compton.h | 2 |
2 files changed, 17 insertions, 2 deletions
@@ -125,6 +125,7 @@ static options_t opts = { .frame_opacity = 0.0, .inactive_dim = 0.0, .mark_wmwin_focused = False, + .mark_ovredir_focused = False, .shadow_blacklist = NULL, .fade_blacklist = NULL, .fork_after_register = False, @@ -1584,8 +1585,10 @@ map_win(Display *dpy, Window id, if (opts.track_focus) { recheck_focus(dpy); // Consider a window without client window a WM window and mark it - // focused if mark_wmwin_focused is on - if (opts.mark_wmwin_focused && !w->client_win) + // focused if mark_wmwin_focused is on, or it's over-redirected and + // mark_ovredir_focused is on + if ((opts.mark_wmwin_focused && !w->client_win) + || (opts.mark_ovredir_focused && w->a.override_redirect)) w->focused = True; } @@ -2880,6 +2883,8 @@ usage(void) { " Try to detect WM windows and mark them as active.\n" "--shadow-exclude condition\n" " Exclude conditions for shadows.\n" + "--mark-ovredir-focused\n" + " Mark over-redirect windows as active.\n" "\n" "Format of a condition:\n" "\n" @@ -3127,6 +3132,9 @@ parse_config(char *cpath, struct options_tmp *pcfgtmp) { config_lookup_float(&cfg, "inactive-dim", &opts.inactive_dim); // --mark-wmwin-focused lcfg_lookup_bool(&cfg, "mark-wmwin-focused", &opts.mark_wmwin_focused); + // --mark-ovredir-focused + lcfg_lookup_bool(&cfg, "mark-ovredir-focused", + &opts.mark_ovredir_focused); // --shadow-exclude { config_setting_t *setting = @@ -3185,6 +3193,7 @@ get_cfg(int argc, char *const *argv) { { "inactive-dim", required_argument, NULL, 261 }, { "mark-wmwin-focused", no_argument, NULL, 262 }, { "shadow-exclude", required_argument, NULL, 263 }, + { "mark-ovredir-focused", no_argument, NULL, 264 }, // Must terminate with a NULL entry { NULL, 0, NULL, 0 }, }; @@ -3319,6 +3328,10 @@ get_cfg(int argc, char *const *argv) { // --shadow-exclude condlst_add(&opts.shadow_blacklist, optarg); break; + case 264: + // --mark-ovredir-focused + opts.mark_ovredir_focused = True; + break; default: usage(); break; @@ -246,6 +246,8 @@ typedef struct _options { char *display; /// Whether to try to detect WM windows and mark them as focused. Bool mark_wmwin_focused; + /// Whether to mark override-redirect windows as focused. + Bool mark_ovredir_focused; /// Whether to fork to background. Bool fork_after_register; Bool synchronize; |