Skip to content

Commit 42410fe

Browse files
monstaraveit65
authored andcommitted
window: add _NET_WM_STATE_FOCUSED hint to _NET_WM_STATE
ported from: GNOME/metacity@4ccb99a
1 parent 70d82d3 commit 42410fe

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/core/atomnames.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ item(_NET_WM_ACTION_ABOVE)
158158
item(_NET_WM_ACTION_BELOW)
159159
item(_NET_WM_STATE_STICKY)
160160
item(_NET_WM_FULLSCREEN_MONITORS)
161+
item(_NET_WM_STATE_FOCUSED)
161162

162163
#if 0
163164
/* We apparently never use: */

src/core/window.c

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,7 @@ static void
12591259
set_net_wm_state (MetaWindow *window)
12601260
{
12611261
int i;
1262-
unsigned long data[12];
1262+
unsigned long data[13];
12631263

12641264
i = 0;
12651265
if (window->shaded)
@@ -1322,6 +1322,11 @@ set_net_wm_state (MetaWindow *window)
13221322
data[i] = window->display->atom__NET_WM_STATE_STICKY;
13231323
++i;
13241324
}
1325+
if (window->has_focus)
1326+
{
1327+
data[i] = window->display->atom__NET_WM_STATE_FOCUSED;
1328+
++i;
1329+
}
13251330

13261331
meta_verbose ("Setting _NET_WM_STATE with %d atoms\n", i);
13271332

@@ -5490,6 +5495,15 @@ meta_window_client_message (MetaWindow *window,
54905495
return FALSE;
54915496
}
54925497

5498+
static void
5499+
meta_window_appears_focused_changed (MetaWindow *window)
5500+
{
5501+
set_net_wm_state (window);
5502+
5503+
if (window->frame)
5504+
meta_frame_queue_draw (window->frame);
5505+
}
5506+
54935507
gboolean
54945508
meta_window_notify_focus (MetaWindow *window,
54955509
XEvent *event)
@@ -5599,8 +5613,7 @@ meta_window_notify_focus (MetaWindow *window,
55995613
window);
56005614
}
56015615

5602-
if (window->frame)
5603-
meta_frame_queue_draw (window->frame);
5616+
meta_window_appears_focused_changed (window);
56045617

56055618
meta_error_trap_push (window->display);
56065619
XInstallColormap (window->display->xdisplay,
@@ -5652,8 +5665,8 @@ meta_window_notify_focus (MetaWindow *window,
56525665

56535666
window->display->focus_window = NULL;
56545667
window->has_focus = FALSE;
5655-
if (window->frame)
5656-
meta_frame_queue_draw (window->frame);
5668+
5669+
meta_window_appears_focused_changed (window);
56575670

56585671
meta_compositor_set_active_window (window->display->compositor,
56595672
window->screen, NULL);

0 commit comments

Comments
 (0)