summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_Double_Window.cxx2
-rw-r--r--src/Fl_cocoa.mm23
2 files changed, 23 insertions, 2 deletions
diff --git a/src/Fl_Double_Window.cxx b/src/Fl_Double_Window.cxx
index 3c20f8be0..189cae305 100644
--- a/src/Fl_Double_Window.cxx
+++ b/src/Fl_Double_Window.cxx
@@ -70,7 +70,7 @@ void Fl_Double_Window::show() {
\param srcx,srcy origin in offscreen buffer of rectangle to copy
*/
#if FLTK_ABI_VERSION >= 10302
-inline void fl_copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy) {
+void fl_copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy) {
fl_graphics_driver->copy_offscreen(x, y, w, h, pixmap, srcx, srcy);
}
#else
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index bd4778286..cc81e23e6 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -564,10 +564,28 @@ static void do_timer(CFRunLoopTimerRef timer, void* data)
{
containsGLsubwindow = contains;
}
+
- (BOOL)canBecomeKeyWindow
{
+ if (Fl::modal_ && (Fl::modal_ != w))
+ return NO; // prevent the caption to be redrawn as active on click
+ // when another modal window is currently the key win
+
+ return !(w->tooltip_window() || w->menu_window());
+}
+
+#if 0
+
+- (BOOL)canBecomeMainWindow
+{
+ if (Fl::modal_ && (Fl::modal_ != w))
+ return NO; // prevent the caption to be redrawn as active on click
+ // when another modal window is currently the key win
+
return !(w->tooltip_window() || w->menu_window());
}
+#endif
+
@end
@interface FLApplication : NSObject
@@ -2107,6 +2125,9 @@ void Fl_X::make(Fl_Window* w)
if ( w->border() || (!w->modal() && !w->tooltip_window()) ) {
Fl_Tooltip::enter(0);
}
+
+ if (w->modal()) Fl::modal_ = w;
+
w->set_visible();
if ( w->border() || (!w->modal() && !w->tooltip_window()) ) Fl::handle(FL_FOCUS, w);
Fl::first_window(w);
@@ -2129,7 +2150,7 @@ void Fl_X::make(Fl_Window* w)
w->handle(Fl::e_number = FL_SHOW);
Fl::e_number = old_event;
- if (w->modal()) { Fl::modal_ = w; fl_fix_focus(); }
+ // if (w->modal()) { Fl::modal_ = w; fl_fix_focus(); }
}
}