From 806fdb08bde1fccaaf5ceb74ffc58528b4076bfc Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Mon, 18 Oct 2021 20:01:10 +0100 Subject: [PATCH] view: add view_get_string_prop() --- include/labwc.h | 1 + src/foreign.c | 4 ++-- src/osd.c | 12 ++++++------ src/ssd.c | 12 +++++++----- src/view.c | 12 ++++++++++-- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/include/labwc.h b/include/labwc.h index cc04b6b7..ab8ad091 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -362,6 +362,7 @@ void view_for_each_popup_surface(struct view *view, wlr_surface_iterator_func_t iterator, void *data); void view_move_to_edge(struct view *view, const char *direction); void view_snap_to_edge(struct view *view, const char *direction); +const char *view_get_string_prop(struct view *view, const char *prop); void view_update_title(struct view *view); void view_update_app_id(struct view *view); diff --git a/src/foreign.c b/src/foreign.c index 0a0824aa..6a9be61d 100644 --- a/src/foreign.c +++ b/src/foreign.c @@ -35,14 +35,14 @@ foreign_toplevel_handle_create(struct view *view) view->server->foreign_toplevel_manager); if (!view->toplevel_handle) { wlr_log(WLR_ERROR, "cannot create foreign toplevel handle for (%s)", - view->impl->get_string_prop(view, "title")); + view_get_string_prop(view, "title")); return; } struct wlr_output *wlr_output = view_wlr_output(view); if (!wlr_output) { wlr_log(WLR_ERROR, "no wlr_output for (%s)", - view->impl->get_string_prop(view, "title")); + view_get_string_prop(view, "title")); return; } wlr_foreign_toplevel_handle_v1_output_enter(view->toplevel_handle, diff --git a/src/osd.c b/src/osd.c index 70d49639..8b3ea94c 100644 --- a/src/osd.c +++ b/src/osd.c @@ -29,11 +29,11 @@ is_title_different(struct view *view) { switch (view->type) { case LAB_XDG_SHELL_VIEW: - return strcmp(view->impl->get_string_prop(view, "title"), - view->impl->get_string_prop(view, "app_id")); + return strcmp(view_get_string_prop(view, "title"), + view_get_string_prop(view, "app_id")); #if HAVE_XWAYLAND case LAB_XWAYLAND_VIEW: - return strcmp(view->impl->get_string_prop(view, "title"), + return strcmp(view_get_string_prop(view, "title"), view->xwayland_surface->class); #endif } @@ -43,7 +43,7 @@ is_title_different(struct view *view) static const char * get_formatted_app_id(struct view *view) { - char *s = (char *)view->impl->get_string_prop(view, "app_id"); + char *s = (char *)view_get_string_prop(view, "app_id"); /* remove the first two nodes of 'org.' strings */ if (!strncmp(s, "org.", 4)) { char *p = s + 4; @@ -156,14 +156,14 @@ osd_update(struct server *server) #if HAVE_XWAYLAND case LAB_XWAYLAND_VIEW: buf_add(&buf, "[xwayland]\t"); - buf_add(&buf, view->impl->get_string_prop(view, "class")); + buf_add(&buf, view_get_string_prop(view, "class")); buf_add(&buf, "\t"); break; #endif } if (is_title_different(view)) { - buf_add(&buf, view->impl->get_string_prop(view, "title")); + buf_add(&buf, view_get_string_prop(view, "title")); } pango_layout_set_text(layout, buf.buf, -1); diff --git a/src/ssd.c b/src/ssd.c index 1380c237..4928175a 100644 --- a/src/ssd.c +++ b/src/ssd.c @@ -151,7 +151,8 @@ center_vertically(struct wlr_box *box, struct wlr_texture *texture) } static void -center_horizontally(struct view *view, struct wlr_box *box, struct wlr_texture *texture) +center_horizontally(struct view *view, struct wlr_box *box, + struct wlr_texture *texture) { if (!texture) { return; @@ -160,7 +161,8 @@ center_horizontally(struct view *view, struct wlr_box *box, struct wlr_texture * } static void -justify_right(struct view *view, struct wlr_box *box, struct wlr_texture *texture) +justify_right(struct view *view, struct wlr_box *box, + struct wlr_texture *texture) { if (!texture) { return; @@ -193,7 +195,7 @@ ssd_visible_box(struct view *view, enum ssd_part_type type) center_vertically(&box, view->title.active); if (theme->window_label_text_justify == LAB_JUSTIFY_CENTER) { center_horizontally(view, &box, view->title.active); - } else if (theme->window_label_text_justify == LAB_JUSTIFY_RIGHT) { + } else if (theme->window_label_text_justify == LAB_JUSTIFY_RIGHT) { justify_right(view, &box, view->title.active); } if (view->title.active) { @@ -313,11 +315,11 @@ ssd_update_title(struct view *view) int max_width = part->box.width > 0 ? part->box.width : 1000; font_texture_create(view->server, &view->title.active, max_width, - view->impl->get_string_prop(view, "title"), + view_get_string_prop(view, "title"), &font, theme->window_active_label_text_color); font_texture_create(view->server, &view->title.inactive, max_width, - view->impl->get_string_prop(view, "title"), + view_get_string_prop(view, "title"), &font, theme->window_inactive_label_text_color); part->box = ssd_visible_box(view, part->type); diff --git a/src/view.c b/src/view.c index b968ee30..f70e1bac 100644 --- a/src/view.c +++ b/src/view.c @@ -398,10 +398,18 @@ view_snap_to_edge(struct view *view, const char *direction) view_move_resize(view, dst); } +const char * +view_get_string_prop(struct view *view, const char *prop) +{ + if (view->impl->get_string_prop) { + return view->impl->get_string_prop(view, "title"); + } +} + void view_update_title(struct view *view) { - const char *title = view->impl->get_string_prop(view, "title"); + const char *title = view_get_string_prop(view, "title"); if (!view->toplevel_handle || !title) { return; } @@ -412,7 +420,7 @@ view_update_title(struct view *view) void view_update_app_id(struct view *view) { - const char *app_id = view->impl->get_string_prop(view, "app_id"); + const char *app_id = view_get_string_prop(view, "app_id"); if (!view->toplevel_handle || !app_id) { return; } -- 2.52.0