diff options
| author | Manolo Gouy <Manolo> | 2016-03-23 07:08:17 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2016-03-23 07:08:17 +0000 |
| commit | 270b437500552cba0d082363f9124456f16a1fda (patch) | |
| tree | ac7245b95a138a5f64c6e6b8318632fd4dc45075 /src/drivers/Cocoa | |
| parent | bf7e4de688fc1f0e3008049a41c07543a7da0752 (diff) | |
Rewrite Fl_Window::hide() under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11402 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
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$". // |
