summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-04-20 16:45:18 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-04-20 16:45:18 +0200
commit9a00f3611394e5ccae46581c8be0732c15b52ee2 (patch)
treed5a1243861122c552054b7991748a216a96db6bc
parentbcab001eb53b86eacdc3f739638cf1758ca42e94 (diff)
Wayland: keep window resizable after native file chooser - cont'd
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx4
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx5
2 files changed, 5 insertions, 4 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
index c50d1fabc..e76820057 100644
--- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
@@ -1641,10 +1641,6 @@ void *Fl_Wayland_Screen_Driver::control_maximize_button(void *data) {
if (dim->tracker->exists()) {
Fl_Window *win = (Fl_Window*)dim->tracker->widget();
win->size_range(dim->minw, dim->minh, dim->maxw, dim->maxh);
- float f = Fl::screen_scale(win->screen_num());
- struct libdecor_state *state = libdecor_state_new(int(win->w() * f), int(win->h() * f));
- libdecor_frame_commit(fl_wl_xid(win)->frame, state, NULL);
- libdecor_state_free(state);
}
first_dim = dim->next;
delete dim->tracker;
diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
index be8fe74ac..d96401d68 100644
--- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
@@ -536,6 +536,11 @@ void Fl_Wayland_Window_Driver::size_range() {
}
libdecor_frame_set_min_content_size(wl_win->frame, minw()*f, minh()*f);
libdecor_frame_set_max_content_size(wl_win->frame, maxw()*f, maxh()*f);
+ if (xdg_toplevel()) {
+ struct libdecor_state *state = libdecor_state_new(int(w() * f), int(h() * f));
+ libdecor_frame_commit(wl_win->frame, state, NULL);
+ libdecor_state_free(state);
+ }
} else if (wl_win->kind == UNFRAMED && wl_win->xdg_toplevel) {
xdg_toplevel_set_min_size(wl_win->xdg_toplevel, minw()*f, minh()*f);
if (maxw() && maxh())