Add sway_view_impl

This commit is contained in:
emersion 2018-03-31 18:07:44 -04:00
parent b2c2ee693b
commit 1d68f9ecca
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
5 changed files with 63 additions and 54 deletions

View file

@ -66,10 +66,23 @@ enum sway_view_prop {
VIEW_PROP_INSTANCE,
};
struct sway_view_impl {
const char *(*get_prop)(struct sway_view *view,
enum sway_view_prop prop);
void (*set_size)(struct sway_view *view,
int width, int height);
void (*set_position)(struct sway_view *view,
double ox, double oy);
void (*set_activated)(struct sway_view *view, bool activated);
void (*close)(struct sway_view *view);
};
struct sway_view {
enum sway_view_type type;
struct sway_container *swayc;
struct wlr_surface *surface;
const struct sway_view_impl *impl;
struct sway_container *swayc; // NULL for unmanaged views
struct wlr_surface *surface; // NULL for unmapped views
int width, height;
union {
@ -84,22 +97,12 @@ struct sway_view {
struct sway_wl_shell_surface *sway_wl_shell_surface;
};
struct {
const char *(*get_prop)(struct sway_view *view,
enum sway_view_prop prop);
void (*set_size)(struct sway_view *view,
int width, int height);
void (*set_position)(struct sway_view *view,
double ox, double oy);
void (*set_activated)(struct sway_view *view, bool activated);
void (*close)(struct sway_view *view);
} iface;
// only used for unmanaged views (shell specific)
struct wl_list unmanaged_view_link; // sway_root::unmanaged_views
};
struct sway_view *view_create(enum sway_view_type type);
struct sway_view *view_create(enum sway_view_type type,
const struct sway_view_impl *impl);
void view_destroy(struct sway_view *view);