diff options
| author | monsta <[email protected]> | 2018-02-21 18:16:57 +0300 | 
|---|---|---|
| committer | raveit65 <[email protected]> | 2018-02-26 11:59:38 +0100 | 
| commit | 42410fe72d0ed2c654631e1755526482a80f4fca (patch) | |
| tree | 639d00ebead4ace9e0b437b09653a199b6b7bebb /src | |
| parent | 70d82d3a745651351d1b8d4e315f074bb83fded3 (diff) | |
| download | marco-42410fe72d0ed2c654631e1755526482a80f4fca.tar.bz2 marco-42410fe72d0ed2c654631e1755526482a80f4fca.tar.xz | |
window: add _NET_WM_STATE_FOCUSED hint to _NET_WM_STATE
ported from:
https://github.com/GNOME/metacity/commit/4ccb99a50c54f345c4c7d9ac77f1ea76bc6c7c74
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/atomnames.h | 1 | ||||
| -rw-r--r-- | src/core/window.c | 23 | 
2 files changed, 19 insertions, 5 deletions
| diff --git a/src/core/atomnames.h b/src/core/atomnames.h index cda2e33a..8e149060 100644 --- a/src/core/atomnames.h +++ b/src/core/atomnames.h @@ -158,6 +158,7 @@ item(_NET_WM_ACTION_ABOVE)  item(_NET_WM_ACTION_BELOW)  item(_NET_WM_STATE_STICKY)  item(_NET_WM_FULLSCREEN_MONITORS) +item(_NET_WM_STATE_FOCUSED)  #if 0  /* We apparently never use: */ diff --git a/src/core/window.c b/src/core/window.c index 3f6314d6..abd5af4b 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -1259,7 +1259,7 @@ static void  set_net_wm_state (MetaWindow *window)  {    int i; -  unsigned long data[12]; +  unsigned long data[13];    i = 0;    if (window->shaded) @@ -1322,6 +1322,11 @@ set_net_wm_state (MetaWindow *window)        data[i] = window->display->atom__NET_WM_STATE_STICKY;        ++i;      } +  if (window->has_focus) +    { +      data[i] = window->display->atom__NET_WM_STATE_FOCUSED; +      ++i; +    }    meta_verbose ("Setting _NET_WM_STATE with %d atoms\n", i); @@ -5490,6 +5495,15 @@ meta_window_client_message (MetaWindow *window,    return FALSE;  } +static void +meta_window_appears_focused_changed (MetaWindow *window) +{ +  set_net_wm_state (window); + +  if (window->frame) +    meta_frame_queue_draw (window->frame); +} +  gboolean  meta_window_notify_focus (MetaWindow *window,                            XEvent     *event) @@ -5599,8 +5613,7 @@ meta_window_notify_focus (MetaWindow *window,                                  window);              } -          if (window->frame) -            meta_frame_queue_draw (window->frame); +          meta_window_appears_focused_changed (window);            meta_error_trap_push (window->display);            XInstallColormap (window->display->xdisplay, @@ -5652,8 +5665,8 @@ meta_window_notify_focus (MetaWindow *window,            window->display->focus_window = NULL;            window->has_focus = FALSE; -          if (window->frame) -            meta_frame_queue_draw (window->frame); + +          meta_window_appears_focused_changed (window);            meta_compositor_set_active_window (window->display->compositor,                                               window->screen, NULL); | 
