mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	foreign-toplevel: create generic abstraction
This commit is contained in:
		
							parent
							
								
									5e1f91c9d1
								
							
						
					
					
						commit
						2a825008c6
					
				
					 15 changed files with 463 additions and 196 deletions
				
			
		
							
								
								
									
										34
									
								
								src/view.c
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								src/view.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
#include "common/mem.h"
 | 
			
		||||
#include "common/parse-bool.h"
 | 
			
		||||
#include "common/scene-helpers.h"
 | 
			
		||||
#include "foreign-toplevel.h"
 | 
			
		||||
#include "input/keyboard.h"
 | 
			
		||||
#include "labwc.h"
 | 
			
		||||
#include "menu/menu.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -469,10 +470,6 @@ view_set_activated(struct view *view, bool activated)
 | 
			
		|||
	if (view->impl->set_activated) {
 | 
			
		||||
		view->impl->set_activated(view, activated);
 | 
			
		||||
	}
 | 
			
		||||
	if (view->toplevel.handle) {
 | 
			
		||||
		wlr_foreign_toplevel_handle_v1_set_activated(
 | 
			
		||||
			view->toplevel.handle, activated);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	wl_signal_emit_mutable(&view->events.activated, &activated);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -529,9 +526,6 @@ view_update_outputs(struct view *view)
 | 
			
		|||
 | 
			
		||||
	if (new_outputs != view->outputs) {
 | 
			
		||||
		view->outputs = new_outputs;
 | 
			
		||||
		if (view->toplevel.handle) {
 | 
			
		||||
			foreign_toplevel_update_outputs(view);
 | 
			
		||||
		}
 | 
			
		||||
		wl_signal_emit_mutable(&view->events.new_outputs, NULL);
 | 
			
		||||
		desktop_update_top_layer_visiblity(view->server);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -738,10 +732,7 @@ _minimize(struct view *view, bool minimized)
 | 
			
		|||
	if (view->minimized == minimized) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	if (view->toplevel.handle) {
 | 
			
		||||
		wlr_foreign_toplevel_handle_v1_set_minimized(
 | 
			
		||||
			view->toplevel.handle, minimized);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (view->impl->minimize) {
 | 
			
		||||
		view->impl->minimize(view, minimized);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1312,10 +1303,6 @@ set_maximized(struct view *view, enum view_axis maximized)
 | 
			
		|||
	if (view->impl->maximize) {
 | 
			
		||||
		view->impl->maximize(view, (maximized == VIEW_AXIS_BOTH));
 | 
			
		||||
	}
 | 
			
		||||
	if (view->toplevel.handle) {
 | 
			
		||||
		wlr_foreign_toplevel_handle_v1_set_maximized(
 | 
			
		||||
			view->toplevel.handle, (maximized == VIEW_AXIS_BOTH));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	view->maximized = maximized;
 | 
			
		||||
	wl_signal_emit_mutable(&view->events.maximized, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -1676,10 +1663,6 @@ set_fullscreen(struct view *view, bool fullscreen)
 | 
			
		|||
	if (view->impl->set_fullscreen) {
 | 
			
		||||
		view->impl->set_fullscreen(view, fullscreen);
 | 
			
		||||
	}
 | 
			
		||||
	if (view->toplevel.handle) {
 | 
			
		||||
		wlr_foreign_toplevel_handle_v1_set_fullscreen(
 | 
			
		||||
			view->toplevel.handle, fullscreen);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	view->fullscreen = fullscreen;
 | 
			
		||||
	wl_signal_emit_mutable(&view->events.fullscreened, NULL);
 | 
			
		||||
| 
						 | 
				
			
			@ -2337,11 +2320,11 @@ view_update_title(struct view *view)
 | 
			
		|||
{
 | 
			
		||||
	assert(view);
 | 
			
		||||
	const char *title = view_get_string_prop(view, "title");
 | 
			
		||||
	if (!view->toplevel.handle || !title) {
 | 
			
		||||
	if (!title) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	ssd_update_title(view->ssd);
 | 
			
		||||
	wlr_foreign_toplevel_handle_v1_set_title(view->toplevel.handle, title);
 | 
			
		||||
 | 
			
		||||
	wl_signal_emit_mutable(&view->events.new_title, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2350,11 +2333,9 @@ view_update_app_id(struct view *view)
 | 
			
		|||
{
 | 
			
		||||
	assert(view);
 | 
			
		||||
	const char *app_id = view_get_string_prop(view, "app_id");
 | 
			
		||||
	if (!view->toplevel.handle || !app_id) {
 | 
			
		||||
	if (!app_id) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	wlr_foreign_toplevel_handle_v1_set_app_id(
 | 
			
		||||
		view->toplevel.handle, app_id);
 | 
			
		||||
 | 
			
		||||
	if (view->ssd_enabled) {
 | 
			
		||||
		ssd_update_window_icon(view->ssd);
 | 
			
		||||
| 
						 | 
				
			
			@ -2512,8 +2493,9 @@ view_destroy(struct view *view)
 | 
			
		|||
	wl_list_remove(&view->set_title.link);
 | 
			
		||||
	wl_list_remove(&view->destroy.link);
 | 
			
		||||
 | 
			
		||||
	if (view->toplevel.handle) {
 | 
			
		||||
		wlr_foreign_toplevel_handle_v1_destroy(view->toplevel.handle);
 | 
			
		||||
	if (view->foreign_toplevel) {
 | 
			
		||||
		foreign_toplevel_destroy(view->foreign_toplevel);
 | 
			
		||||
		view->foreign_toplevel = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (server->grabbed_view == view) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue