mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	Currently, the dependencies between foreign-toplevel[-internal],
ext-foreign, and wlr-foreign are cyclical and a bit complex.
I suggest we reorganize it into a simpler hierarchy:
  foreign-toplevel/
    -> foreign.c/h
      -> (depends on) ext-foreign.c/h
      -> (depends on) wlr-foreign.c/h
The refactored code is smaller and (IMO) easier to follow.
In detail:
- Add include/foreign-toplevel folder mirroring src/foreign-toplevel
- Split foreign-toplevel-internal.h to ext-foreign.h and wlr-foreign.h
- Eliminate ext-/wlr-foreign.c -> foreign.c reverse dependencies
  (including internal signals and foreign_request* functions)
- Make struct foreign_toplevel private to foreign.c
Lightly tested with qmpanel (which uses wlr-foreign-toplevel).
v2: reorder foreign-toplevel internal API funcs
		
	
			
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			680 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			680 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-only */
 | 
						|
#ifndef LABWC_EXT_FOREIGN_TOPLEVEL_H
 | 
						|
#define LABWC_EXT_FOREIGN_TOPLEVEL_H
 | 
						|
 | 
						|
#include <wayland-server-core.h>
 | 
						|
 | 
						|
struct ext_foreign_toplevel {
 | 
						|
	struct view *view;
 | 
						|
	struct wlr_ext_foreign_toplevel_handle_v1 *handle;
 | 
						|
 | 
						|
	/* Client side events */
 | 
						|
	struct {
 | 
						|
		struct wl_listener handle_destroy;
 | 
						|
	} on;
 | 
						|
 | 
						|
	/* Compositor side state updates */
 | 
						|
	struct {
 | 
						|
		struct wl_listener new_app_id;
 | 
						|
		struct wl_listener new_title;
 | 
						|
	} on_view;
 | 
						|
};
 | 
						|
 | 
						|
void ext_foreign_toplevel_init(struct ext_foreign_toplevel *ext_toplevel,
 | 
						|
	struct view *view);
 | 
						|
void ext_foreign_toplevel_finish(struct ext_foreign_toplevel *ext_toplevel);
 | 
						|
 | 
						|
#endif /* LABWC_EXT_FOREIGN_TOPLEVEL_H */
 |