mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
view: Factor out set_fullscreen() helper from view_set_fullscreen()
This commit is contained in:
parent
c639cdba06
commit
1f80cda061
1 changed files with 48 additions and 37 deletions
85
src/view.c
85
src/view.c
|
|
@ -499,6 +499,7 @@ view_apply_special_geometry(struct view *view)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* For internal use only. Does not update geometry. */
|
||||
static void
|
||||
set_maximized(struct view *view, bool maximized)
|
||||
{
|
||||
|
|
@ -671,20 +672,15 @@ view_toggle_fullscreen(struct view *view)
|
|||
view_set_fullscreen(view, !view->fullscreen, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
||||
/* For internal use only. Does not update geometry. */
|
||||
static void
|
||||
set_fullscreen(struct view *view, bool fullscreen)
|
||||
{
|
||||
assert(view);
|
||||
if (fullscreen == view->fullscreen) {
|
||||
return;
|
||||
}
|
||||
if (fullscreen && !output_is_usable(output)) {
|
||||
output = view_output(view);
|
||||
if (!output_is_usable(output)) {
|
||||
/* Prevent fullscreen with no available outputs */
|
||||
return;
|
||||
}
|
||||
/* Hide decorations when going fullscreen */
|
||||
if (fullscreen && view->ssd_enabled) {
|
||||
undecorate(view);
|
||||
}
|
||||
|
||||
if (view->impl->set_fullscreen) {
|
||||
view->impl->set_fullscreen(view, fullscreen);
|
||||
}
|
||||
|
|
@ -692,32 +688,11 @@ view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
|||
wlr_foreign_toplevel_handle_v1_set_fullscreen(
|
||||
view->toplevel.handle, fullscreen);
|
||||
}
|
||||
if (fullscreen) {
|
||||
/*
|
||||
* Fullscreen via keybind or client request cancels
|
||||
* interactive move/resize since we can't move/resize
|
||||
* a fullscreen view.
|
||||
*/
|
||||
interactive_cancel(view);
|
||||
view_store_natural_geometry(view);
|
||||
view->fullscreen = fullscreen;
|
||||
|
||||
/* Hide decorations when going fullscreen */
|
||||
if (view->ssd_enabled) {
|
||||
undecorate(view);
|
||||
}
|
||||
view->fullscreen = true;
|
||||
view->output = output;
|
||||
view_apply_fullscreen_geometry(view);
|
||||
} else {
|
||||
view->fullscreen = false;
|
||||
/* Re-show decorations when no longer fullscreen */
|
||||
if (view->ssd_enabled) {
|
||||
decorate(view);
|
||||
}
|
||||
/* Restore non-fullscreen geometry */
|
||||
if (!view_apply_special_geometry(view)) {
|
||||
view_apply_natural_geometry(view);
|
||||
}
|
||||
/* Re-show decorations when no longer fullscreen */
|
||||
if (!fullscreen && view->ssd_enabled) {
|
||||
decorate(view);
|
||||
}
|
||||
|
||||
/* Show fullscreen views above top-layer */
|
||||
|
|
@ -728,6 +703,42 @@ view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
||||
{
|
||||
assert(view);
|
||||
if (fullscreen == view->fullscreen) {
|
||||
return;
|
||||
}
|
||||
if (fullscreen) {
|
||||
if (!output_is_usable(output)) {
|
||||
output = view_output(view);
|
||||
if (!output_is_usable(output)) {
|
||||
/* Prevent fullscreen with no available outputs */
|
||||
return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Fullscreen via keybind or client request cancels
|
||||
* interactive move/resize since we can't move/resize
|
||||
* a fullscreen view.
|
||||
*/
|
||||
interactive_cancel(view);
|
||||
view_store_natural_geometry(view);
|
||||
view->output = output;
|
||||
}
|
||||
|
||||
set_fullscreen(view, fullscreen);
|
||||
if (fullscreen) {
|
||||
view_apply_fullscreen_geometry(view);
|
||||
} else {
|
||||
/* Restore non-fullscreen geometry */
|
||||
if (!view_apply_special_geometry(view)) {
|
||||
view_apply_natural_geometry(view);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
view_adjust_for_layout_change(struct view *view)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue