@@ -1259,7 +1259,7 @@ static void
12591259set_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+
54935507gboolean
54945508meta_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