From 0ae927a00e9ecd45a45edf004e939ab2e5ce4813 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 4 Nov 2023 11:30:45 +0100 Subject: Add Fl_Window::maximize() and Fl_Window::un_maximize() --- src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 2 ++ src/drivers/Wayland/Fl_Wayland_Window_Driver.H | 2 ++ src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx | 14 ++++++++++++++ src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H | 3 +++ src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx | 9 +++++++++ src/drivers/X11/Fl_X11_Window_Driver.H | 2 ++ 6 files changed, 32 insertions(+) (limited to 'src/drivers') diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index 163d2e486..3c47c49c9 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -130,6 +130,8 @@ public: void unmap() FL_OVERRIDE; void fullscreen_on() FL_OVERRIDE; void fullscreen_off(int X, int Y, int W, int H) FL_OVERRIDE; + void maximize() FL_OVERRIDE; + void un_maximize() FL_OVERRIDE; void use_border() FL_OVERRIDE; void size_range() FL_OVERRIDE; void iconize() FL_OVERRIDE; diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.H b/src/drivers/Wayland/Fl_Wayland_Window_Driver.H index b758b658e..b8c7ff9fd 100644 --- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.H +++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.H @@ -114,6 +114,8 @@ public: void unmap() FL_OVERRIDE; void fullscreen_on() FL_OVERRIDE; void fullscreen_off(int X, int Y, int W, int H) FL_OVERRIDE; + void maximize() FL_OVERRIDE; + void un_maximize() FL_OVERRIDE; void use_border() FL_OVERRIDE; void size_range() FL_OVERRIDE; void iconize() FL_OVERRIDE; diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx index 6afc9588f..1c04bf575 100644 --- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx @@ -941,6 +941,8 @@ static void handle_configure(struct libdecor_frame *frame, } } + if (window->fl_win->border()) + driver->is_maximized(window_state & LIBDECOR_WINDOW_STATE_MAXIMIZED); if (window_state & LIBDECOR_WINDOW_STATE_MAXIMIZED) state = libdecor_state_new(width, height); else state = libdecor_state_new(int(ceil(width/f)*f), int(ceil(height/f)*f)); @@ -2135,3 +2137,15 @@ Fl_Wayland_Plugin *Fl_Wayland_Window_Driver::gl_plugin() { } return plugin; } + + +void Fl_Wayland_Window_Driver::maximize() { + struct wld_window *xid = (struct wld_window *)Fl_X::flx(pWindow)->xid; + if (xid->kind == DECORATED) libdecor_frame_set_maximized(xid->frame); +} + + +void Fl_Wayland_Window_Driver::un_maximize() { + struct wld_window *xid = (struct wld_window *)Fl_X::flx(pWindow)->xid; + if (xid->kind == DECORATED) libdecor_frame_unset_maximized(xid->frame); +} diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H index 4bde200a0..974f9060d 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H @@ -101,6 +101,9 @@ public: void unmap() FL_OVERRIDE; void fullscreen_on() FL_OVERRIDE; void fullscreen_off(int X, int Y, int W, int H) FL_OVERRIDE; + void maximize() FL_OVERRIDE; + void un_maximize() FL_OVERRIDE; + virtual bool maximize_needs_hide() FL_OVERRIDE { return true; } void iconize() FL_OVERRIDE; void decoration_sizes(int *top, int *left, int *right, int *bottom) FL_OVERRIDE; // --- window cursor stuff diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx index 063d24552..e2c0de1d7 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx @@ -616,6 +616,15 @@ void Fl_WinAPI_Window_Driver::fullscreen_off(int X, int Y, int W, int H) { } +void Fl_WinAPI_Window_Driver::maximize() { + ShowWindow(fl_xid(pWindow), SW_SHOWMAXIMIZED); +} + +void Fl_WinAPI_Window_Driver::un_maximize() { + ShowWindow(fl_xid(pWindow), SW_SHOWNORMAL); +} + + void Fl_WinAPI_Window_Driver::iconize() { ShowWindow(fl_xid(pWindow), SW_SHOWMINNOACTIVE); } diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index 57602360d..06c2d89e3 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -113,6 +113,8 @@ public: void unmap() FL_OVERRIDE; void fullscreen_on() FL_OVERRIDE; void fullscreen_off(int X, int Y, int W, int H) FL_OVERRIDE; + void maximize() FL_OVERRIDE; + void un_maximize() FL_OVERRIDE; void use_border() FL_OVERRIDE; void size_range() FL_OVERRIDE; void iconize() FL_OVERRIDE; -- cgit v1.2.3