mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	view: call wlr_foreign_toplevel_handle_v1_set_app_id() on map
Fix issue #74 Add view-impl.c with view_impl_map() containing common code for xdg-shell and xwayland-shell.
This commit is contained in:
		
							parent
							
								
									4d44659c08
								
							
						
					
					
						commit
						e140682528
					
				
					 5 changed files with 31 additions and 6 deletions
				
			
		| 
						 | 
					@ -338,6 +338,8 @@ void view_for_each_popup_surface(struct view *view,
 | 
				
			||||||
void view_move_to_edge(struct view *view, const char *direction);
 | 
					void view_move_to_edge(struct view *view, const char *direction);
 | 
				
			||||||
void view_update_title(struct view *view);
 | 
					void view_update_title(struct view *view);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void view_impl_map(struct view *view);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void foreign_toplevel_handle_create(struct view *view);
 | 
					void foreign_toplevel_handle_create(struct view *view);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ labwc_sources = files(
 | 
				
			||||||
  'theme.c',
 | 
					  'theme.c',
 | 
				
			||||||
  'view.c',
 | 
					  'view.c',
 | 
				
			||||||
  'view-child.c',
 | 
					  'view-child.c',
 | 
				
			||||||
 | 
					  'view-impl.c',
 | 
				
			||||||
  'xdg.c',
 | 
					  'xdg.c',
 | 
				
			||||||
  'xdg-deco.c',
 | 
					  'xdg-deco.c',
 | 
				
			||||||
  'xdg-popup.c',
 | 
					  'xdg-popup.c',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/view-impl.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/view-impl.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0-only
 | 
				
			||||||
 | 
					/* view-impl.c: common code for shell view->impl functions */
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <strings.h>
 | 
				
			||||||
 | 
					#include "labwc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					view_impl_map(struct view *view)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						desktop_focus_and_activate_view(&view->server->seat, view);
 | 
				
			||||||
 | 
						desktop_raise_view(view);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const char *app_id = view->impl->get_string_prop(view, "app_id");
 | 
				
			||||||
 | 
						if (app_id) {
 | 
				
			||||||
 | 
							wlr_foreign_toplevel_handle_v1_set_app_id(
 | 
				
			||||||
 | 
								view->toplevel_handle, app_id);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						view_update_title(view);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						damage_all_outputs(view->server);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -343,9 +343,7 @@ xdg_toplevel_view_map(struct view *view)
 | 
				
			||||||
	wl_signal_add(&view->surface->events.new_subsurface,
 | 
						wl_signal_add(&view->surface->events.new_subsurface,
 | 
				
			||||||
		&view->new_subsurface);
 | 
							&view->new_subsurface);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	desktop_focus_and_activate_view(&view->server->seat, view);
 | 
						view_impl_map(view);
 | 
				
			||||||
	desktop_raise_view(view);
 | 
					 | 
				
			||||||
	damage_all_outputs(view->server);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -146,6 +146,10 @@ get_string_prop(struct view *view, const char *prop)
 | 
				
			||||||
	if (!strcmp(prop, "class")) {
 | 
						if (!strcmp(prop, "class")) {
 | 
				
			||||||
		return view->xwayland_surface->class;
 | 
							return view->xwayland_surface->class;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						/* We give 'class' for wlr_foreign_toplevel_handle_v1_set_app_id() */
 | 
				
			||||||
 | 
						if (!strcmp(prop, "app_id")) {
 | 
				
			||||||
 | 
							return view->xwayland_surface->class;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return "";
 | 
						return "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -208,9 +212,7 @@ map(struct view *view)
 | 
				
			||||||
		      &view->commit);
 | 
							      &view->commit);
 | 
				
			||||||
	view->commit.notify = handle_commit;
 | 
						view->commit.notify = handle_commit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	desktop_focus_and_activate_view(&view->server->seat, view);
 | 
						view_impl_map(view);
 | 
				
			||||||
	desktop_raise_view(view);
 | 
					 | 
				
			||||||
	damage_all_outputs(view->server);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue