mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
wayland: add helper functions wayl_win_csd_{titlebar,borders}_visible()
This commit is contained in:
parent
7a0e7c6c01
commit
f9103d4381
3 changed files with 36 additions and 20 deletions
33
render.c
33
render.c
|
|
@ -1560,15 +1560,17 @@ get_csd_data(const struct terminal *term, enum csd_surface surf_idx)
|
|||
{
|
||||
xassert(term->window->csd_mode == CSD_YES);
|
||||
|
||||
const bool borders_visible = wayl_win_csd_borders_visible(term->window);
|
||||
const bool title_visible = wayl_win_csd_titlebar_visible(term->window);
|
||||
|
||||
/* Only title bar is rendered in maximized mode */
|
||||
const int border_width = !term->window->is_maximized
|
||||
const int border_width = borders_visible
|
||||
? term->conf->csd.border_width * term->scale : 0;
|
||||
|
||||
const int title_height = term->window->is_fullscreen
|
||||
? 0
|
||||
: term->conf->csd.title_height * term->scale;
|
||||
const int title_height = title_visible
|
||||
? term->conf->csd.title_height * term->scale : 0;
|
||||
|
||||
const int button_width = !term->window->is_fullscreen
|
||||
const int button_width = title_visible
|
||||
? term->conf->csd.button_width * term->scale : 0;
|
||||
|
||||
const int button_close_width = term->width >= 1 * button_width
|
||||
|
|
@ -3575,11 +3577,9 @@ maybe_resize(struct terminal *term, int width, int height, bool force)
|
|||
width = term->conf->size.width;
|
||||
height = term->conf->size.height;
|
||||
|
||||
if (term->window->csd_mode == CSD_YES) {
|
||||
/* Take CSD title bar into account */
|
||||
xassert(!term->window->is_fullscreen);
|
||||
/* Take CSDs into account */
|
||||
if (wayl_win_csd_titlebar_visible(term->window))
|
||||
height -= term->conf->csd.title_height;
|
||||
}
|
||||
|
||||
width *= scale;
|
||||
height *= scale;
|
||||
|
|
@ -3760,17 +3760,14 @@ damage_view:
|
|||
#endif
|
||||
|
||||
{
|
||||
bool title_shown =
|
||||
!term->window->is_fullscreen &&
|
||||
term->window->csd_mode == CSD_YES;
|
||||
const bool title_shown = wayl_win_csd_titlebar_visible(term->window);
|
||||
const bool border_shown = wayl_win_csd_borders_visible(term->window);
|
||||
|
||||
bool border_shown =
|
||||
!term->window->is_fullscreen &&
|
||||
!term->window->is_maximized &&
|
||||
term->window->csd_mode == CSD_YES;
|
||||
const int title_height =
|
||||
title_shown ? term->conf->csd.title_height : 0;
|
||||
const int border_width =
|
||||
border_shown ? term->conf->csd.border_width_visible : 0;
|
||||
|
||||
int title_height = title_shown ? term->conf->csd.title_height : 0;
|
||||
int border_width = border_shown ? term->conf->csd.border_width_visible : 0;
|
||||
xdg_surface_set_window_geometry(
|
||||
term->window->xdg_surface,
|
||||
-border_width,
|
||||
|
|
|
|||
20
wayland.c
20
wayland.c
|
|
@ -747,9 +747,10 @@ xdg_surface_configure(void *data, struct xdg_surface *xdg_surface,
|
|||
csd_destroy(win);
|
||||
|
||||
if (enable_csd && new_width > 0 && new_height > 0) {
|
||||
new_height -= win->term->conf->csd.title_height;
|
||||
if (wayl_win_csd_titlebar_visible(win))
|
||||
new_height -= win->term->conf->csd.title_height;
|
||||
|
||||
if (!win->is_maximized) {
|
||||
if (wayl_win_csd_borders_visible(win)) {
|
||||
new_height -= 2 * win->term->conf->csd.border_width_visible;
|
||||
new_width -= 2 * win->term->conf->csd.border_width_visible;
|
||||
}
|
||||
|
|
@ -1763,6 +1764,21 @@ wayl_win_set_urgent(struct wl_window *win)
|
|||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
wayl_win_csd_titlebar_visible(const struct wl_window *win)
|
||||
{
|
||||
return win->csd_mode == CSD_YES &&
|
||||
!win->is_fullscreen;
|
||||
}
|
||||
|
||||
bool
|
||||
wayl_win_csd_borders_visible(const struct wl_window *win)
|
||||
{
|
||||
return win->csd_mode == CSD_YES &&
|
||||
!win->is_fullscreen &&
|
||||
!win->is_maximized;
|
||||
}
|
||||
|
||||
bool
|
||||
wayl_win_subsurface_new_with_custom_parent(
|
||||
struct wl_window *win, struct wl_surface *parent,
|
||||
|
|
|
|||
|
|
@ -511,6 +511,9 @@ void wayl_win_destroy(struct wl_window *win);
|
|||
|
||||
bool wayl_win_set_urgent(struct wl_window *win);
|
||||
|
||||
bool wayl_win_csd_titlebar_visible(const struct wl_window *win);
|
||||
bool wayl_win_csd_borders_visible(const struct wl_window *win);
|
||||
|
||||
bool wayl_win_subsurface_new(
|
||||
struct wl_window *win, struct wl_surf_subsurf *surf);
|
||||
bool wayl_win_subsurface_new_with_custom_parent(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue