summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-03 17:50:49 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-03 17:50:49 +0100
commit130f5b6dc1c2258b1a05c9319d796b96dc2d4f7e (patch)
tree41d40ad5e87e2ffb207482dac00ec50310bc6263 /src
parentd832ab742a9247b928c530a91d195410b17387b4 (diff)
A window needs is_resizable() true to obey fullscreen() or maximize()
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Screen_Driver.cxx2
-rw-r--r--src/Fl_Window.cxx4
-rw-r--r--src/Fl_Window_fullscreen.cxx1
-rw-r--r--src/Fl_cocoa.mm10
4 files changed, 10 insertions, 7 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx
index fc70f7933..12453b89e 100644
--- a/src/Fl_Screen_Driver.cxx
+++ b/src/Fl_Screen_Driver.cxx
@@ -503,7 +503,7 @@ int Fl_Screen_Driver::scale_handler(int event)
if (!top->parent() &&
(Fl_Window_Driver::driver(top)->screen_num() == screen ||
screen_dr->rescalable() == SYSTEMWIDE_APP_SCALING)) {
- if (Fl_Window_Driver::driver(top)->is_resizable() && (top->fullscreen_active() || top->maximize_active())) return 0;
+ if (top->fullscreen_active() || top->maximize_active()) return 0;
}
top = Fl::next_window(top);
}
diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx
index 5d7f9be8e..bf2093118 100644
--- a/src/Fl_Window.cxx
+++ b/src/Fl_Window.cxx
@@ -931,7 +931,7 @@ fl_uintptr_t Fl_Window::os_id() { return pWindowDriver->os_id();}
\see Fl_Window::un_maximize(), Fl_Window::maximize_active()
*/
void Fl_Window::maximize() {
- if (!shown() || parent() || !resizable() || maximize_active()) return;
+ if (!shown() || parent() || !is_resizable() || maximize_active()) return;
set_flag(MAXIMIZED);
if (border()) pWindowDriver->maximize();
else pWindowDriver->Fl_Window_Driver::maximize();
@@ -942,7 +942,7 @@ void Fl_Window::maximize() {
\see Fl_Window::maximize()
*/
void Fl_Window::un_maximize() {
- if (!shown() || parent() || !resizable() || !maximize_active()) return;
+ if (!shown() || parent() || !is_resizable() || !maximize_active()) return;
clear_flag(MAXIMIZED);
if (border()) pWindowDriver->un_maximize();
else pWindowDriver->Fl_Window_Driver::un_maximize();
diff --git a/src/Fl_Window_fullscreen.cxx b/src/Fl_Window_fullscreen.cxx
index ab9e6c6bb..f6919f87c 100644
--- a/src/Fl_Window_fullscreen.cxx
+++ b/src/Fl_Window_fullscreen.cxx
@@ -36,6 +36,7 @@ void Fl_Window::border(int b) {
borders should not be *visible*.
*/
void Fl_Window::fullscreen() {
+ if (!is_resizable()) return;
no_fullscreen_x = x();
no_fullscreen_y = y();
no_fullscreen_w = w();
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 875109e45..9def92f70 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -1353,7 +1353,7 @@ static FLWindowDelegate *flwindowdelegate_instance = nil;
window->redraw();
}
#endif
- if (!window->parent() && window->border()) {
+ if (!window->parent() && window->border() && Fl_Window_Driver::driver(window)->is_resizable()) {
Fl_Cocoa_Window_Driver::driver(window)->is_maximized([nsw isZoomed]);
}
fl_unlock_function();
@@ -3215,7 +3215,7 @@ void Fl_Cocoa_Window_Driver::makeWindow()
void Fl_Cocoa_Window_Driver::fullscreen_on() {
pWindow->_set_fullscreen();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
- if (fl_mac_os_version >= 100700) {
+ if (fl_mac_os_version >= 100700 && pWindow->border()) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
FLWindow *nswin = fl_xid(pWindow);
[nswin toggleFullScreen:nil];
@@ -3277,7 +3277,7 @@ static NSUInteger calc_win_style(Fl_Window *win) {
NSUInteger winstyle;
if (win->border() && !win->fullscreen_active()) {
winstyle = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable;
- if (win->resizable()) winstyle |= NSWindowStyleMaskResizable;
+ if (Fl_Window_Driver::driver(win)->is_resizable()) winstyle |= NSWindowStyleMaskResizable;
if (!win->modal()) winstyle |= NSWindowStyleMaskMiniaturizable;
} else winstyle = NSWindowStyleMaskBorderless;
return winstyle;
@@ -3301,10 +3301,12 @@ static void restore_window_title_and_icon(Fl_Window *pWindow, NSImage *icon) {
void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) {
pWindow->_clear_fullscreen();
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
- if (fl_mac_os_version >= 100700) {
+ if (fl_mac_os_version >= 100700 && pWindow->border()) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
FLWindow *nswin = fl_xid(pWindow);
[nswin toggleFullScreen:nil];
+ [nswin setStyleMask:calc_win_style(pWindow)]; //10.6
+ pWindow->resize(*no_fullscreen_x(), *no_fullscreen_y(), *no_fullscreen_w(), *no_fullscreen_h());
# endif
} else if (fl_mac_os_version >= 100600) {
FLWindow *nswin = fl_xid(pWindow);