diff options
Diffstat (limited to 'src/drivers/Cocoa')
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index 46428962b..bd5a0e79e 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -77,6 +77,7 @@ public: virtual void label(const char *name, const char *mininame); virtual void show(); virtual void resize(int X,int Y,int W,int H); + virtual void hide(); virtual void shape(const Fl_Image* img); // that one is implemented in Fl_Cocoa.mm because it uses Objective-c diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx index 127a84d6d..5d97ac91d 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx @@ -223,6 +223,22 @@ void Fl_Cocoa_Window_Driver::shape(const Fl_Image* img) { #endif } + +void Fl_Cocoa_Window_Driver::hide() { + Fl_X* ip = Fl_X::i(pWindow); + // MacOS X manages a single pointer per application. Make sure that hiding + // a toplevel window will not leave us with some random pointer shape, or + // worst case, an invisible pointer + if (ip && !pWindow->parent()) pWindow->cursor(FL_CURSOR_DEFAULT); + if ( hide_common() ) return; + Fl_X::q_release_context(ip); + if ( ip->xid == fl_window ) + fl_window = 0; + if (ip->region) XDestroyRegion(ip->region); + ip->destroy(); + delete ip; +} + // // End of "$Id$". // |
