From 1d68f9ecca8870f2f2a6823072c77657436b123a Mon Sep 17 00:00:00 2001 From: emersion Date: Sat, 31 Mar 2018 18:07:44 -0400 Subject: Add sway_view_impl --- sway/tree/view.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'sway/tree') diff --git a/sway/tree/view.c b/sway/tree/view.c index 2950812a..d7a52e19 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -7,12 +7,14 @@ #include "sway/tree/layout.h" #include "sway/tree/view.h" -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) { struct sway_view *view = calloc(1, sizeof(struct sway_view)); if (view == NULL) { return NULL; } view->type = type; + view->impl = impl; wl_list_init(&view->unmanaged_view_link); return view; } @@ -33,29 +35,29 @@ void view_destroy(struct sway_view *view) { } const char *view_get_title(struct sway_view *view) { - if (view->iface.get_prop) { - return view->iface.get_prop(view, VIEW_PROP_TITLE); + if (view->impl->get_prop) { + return view->impl->get_prop(view, VIEW_PROP_TITLE); } return NULL; } const char *view_get_app_id(struct sway_view *view) { - if (view->iface.get_prop) { - return view->iface.get_prop(view, VIEW_PROP_APP_ID); + if (view->impl->get_prop) { + return view->impl->get_prop(view, VIEW_PROP_APP_ID); } return NULL; } const char *view_get_class(struct sway_view *view) { - if (view->iface.get_prop) { - return view->iface.get_prop(view, VIEW_PROP_CLASS); + if (view->impl->get_prop) { + return view->impl->get_prop(view, VIEW_PROP_CLASS); } return NULL; } const char *view_get_instance(struct sway_view *view) { - if (view->iface.get_prop) { - return view->iface.get_prop(view, VIEW_PROP_INSTANCE); + if (view->impl->get_prop) { + return view->impl->get_prop(view, VIEW_PROP_INSTANCE); } return NULL; } @@ -86,41 +88,41 @@ static void view_update_outputs(struct sway_view *view, } void view_set_size(struct sway_view *view, int width, int height) { - if (view->iface.set_size) { + if (view->impl->set_size) { struct wlr_box box = { .x = view->swayc->x, .y = view->swayc->y, .width = view->width, .height = view->height, }; - view->iface.set_size(view, width, height); + view->impl->set_size(view, width, height); view_update_outputs(view, &box); } } // TODO make view coordinates in layout coordinates void view_set_position(struct sway_view *view, double ox, double oy) { - if (view->iface.set_position) { + if (view->impl->set_position) { struct wlr_box box = { .x = view->swayc->x, .y = view->swayc->y, .width = view->width, .height = view->height, }; - view->iface.set_position(view, ox, oy); + view->impl->set_position(view, ox, oy); view_update_outputs(view, &box); } } void view_set_activated(struct sway_view *view, bool activated) { - if (view->iface.set_activated) { - view->iface.set_activated(view, activated); + if (view->impl->set_activated) { + view->impl->set_activated(view, activated); } } void view_close(struct sway_view *view) { - if (view->iface.close) { - view->iface.close(view); + if (view->impl->close) { + view->impl->close(view); } } -- cgit v1.2.3-54-g00ecf