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
81
src/view.c
81
src/view.c
|
|
@ -499,6 +499,7 @@ view_apply_special_geometry(struct view *view)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* For internal use only. Does not update geometry. */
|
||||||
static void
|
static void
|
||||||
set_maximized(struct view *view, bool maximized)
|
set_maximized(struct view *view, bool maximized)
|
||||||
{
|
{
|
||||||
|
|
@ -671,20 +672,15 @@ view_toggle_fullscreen(struct view *view)
|
||||||
view_set_fullscreen(view, !view->fullscreen, NULL);
|
view_set_fullscreen(view, !view->fullscreen, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
/* For internal use only. Does not update geometry. */
|
||||||
view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
static void
|
||||||
|
set_fullscreen(struct view *view, bool fullscreen)
|
||||||
{
|
{
|
||||||
assert(view);
|
/* Hide decorations when going fullscreen */
|
||||||
if (fullscreen == view->fullscreen) {
|
if (fullscreen && view->ssd_enabled) {
|
||||||
return;
|
undecorate(view);
|
||||||
}
|
|
||||||
if (fullscreen && !output_is_usable(output)) {
|
|
||||||
output = view_output(view);
|
|
||||||
if (!output_is_usable(output)) {
|
|
||||||
/* Prevent fullscreen with no available outputs */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->impl->set_fullscreen) {
|
if (view->impl->set_fullscreen) {
|
||||||
view->impl->set_fullscreen(view, fullscreen);
|
view->impl->set_fullscreen(view, fullscreen);
|
||||||
}
|
}
|
||||||
|
|
@ -692,33 +688,12 @@ view_set_fullscreen(struct view *view, bool fullscreen, struct output *output)
|
||||||
wlr_foreign_toplevel_handle_v1_set_fullscreen(
|
wlr_foreign_toplevel_handle_v1_set_fullscreen(
|
||||||
view->toplevel.handle, fullscreen);
|
view->toplevel.handle, fullscreen);
|
||||||
}
|
}
|
||||||
if (fullscreen) {
|
view->fullscreen = 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);
|
|
||||||
|
|
||||||
/* 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 */
|
/* Re-show decorations when no longer fullscreen */
|
||||||
if (view->ssd_enabled) {
|
if (!fullscreen && view->ssd_enabled) {
|
||||||
decorate(view);
|
decorate(view);
|
||||||
}
|
}
|
||||||
/* Restore non-fullscreen geometry */
|
|
||||||
if (!view_apply_special_geometry(view)) {
|
|
||||||
view_apply_natural_geometry(view);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Show fullscreen views above top-layer */
|
/* Show fullscreen views above top-layer */
|
||||||
if (view->output) {
|
if (view->output) {
|
||||||
|
|
@ -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
|
void
|
||||||
view_adjust_for_layout_change(struct view *view)
|
view_adjust_for_layout_change(struct view *view)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue