mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	view: try to reduce confusion in focused_view tracking
Our current approach to handling the focused/active view is a bit confusing. In particular, it's hard to be sure when server->focused_view is or isn't in sync with the real wlroots keyboard focus. Try to clean things up a bit. In particular: - Add comments to server->focused_view and desktop_focused_view() to clarify that they should match, but it's not guaranteed. - desktop_focused_view() now prints a warning if it detects that server->focused_view is out of sync. We should keep an eye out for this warning, and if we see it, try to figure out why it happened. - For consistency, use only "focus/defocus" as the verbs in function names rather than "activate". This is a bit arbitrary, but the idea is that focus is the primary action while the active/inactive state is a side effect. - view_focus/defocus() replace view_set_activated() and now update both focus and active/inactive state, to try to keep them in sync. - Add comments at view_focus/defocus() to warn against calling them directly (we should generally call the desktop.c functions). - desktop_focus_view(NULL) is now forbidden and is no longer handled as a special case to clear the focus. This was (at least to me) a surprising behavior and caused trouble when working on another change. - To maintain existing behavior, desktop_focus_topmost_mapped_view() now explicitly clears the focus if there are no mapped views. There should be no behavioral change here.
This commit is contained in:
		
							parent
							
								
									003d1fd494
								
							
						
					
					
						commit
						3022985ba7
					
				
					 11 changed files with 100 additions and 60 deletions
				
			
		| 
						 | 
				
			
			@ -51,7 +51,7 @@ view_impl_move_sub_views(struct view *parent, enum z_direction z_direction)
 | 
			
		|||
void
 | 
			
		||||
view_impl_map(struct view *view)
 | 
			
		||||
{
 | 
			
		||||
	desktop_focus_and_activate_view(&view->server->seat, view);
 | 
			
		||||
	desktop_focus_view(view);
 | 
			
		||||
	view_move_to_front(view);
 | 
			
		||||
	view_update_title(view);
 | 
			
		||||
	view_update_app_id(view);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue