diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Window.cxx | 10 | ||||
| -rw-r--r-- | src/Fl_cocoa.mm | 6 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx | 9 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.cxx | 8 |
7 files changed, 25 insertions, 12 deletions
diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx index 53b300817..0646d5912 100644 --- a/src/Fl_Window.cxx +++ b/src/Fl_Window.cxx @@ -363,8 +363,6 @@ void Fl_Window::free_icons() { pWindowDriver->free_icons(); } - -#ifndef __APPLE__ // PORTME: Fl_Window_Driver - platform window driver /** Waits for the window to be displayed after calling show(). @@ -425,16 +423,10 @@ void Fl_Window::free_icons() { Note that the window will not be responsive until the event loop is started with Fl::run(). */ - void Fl_Window::wait_for_expose() { - if (!shown()) return; - while (!i || i->wait_for_expose) { - Fl::wait(); - } + pWindowDriver->wait_for_expose(); } -#endif // ! __APPLE__ // PORTME: Fl_Window_Driver - platform window driver - // // End of "$Id$". // diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index f4c57659e..425f844bd 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3095,11 +3095,11 @@ void Fl_Window::size_range_() { } } -void Fl_Window::wait_for_expose() +void Fl_Cocoa_Window_Driver::wait_for_expose() { - if (shown()) { + if (pWindow->shown()) { //TODO: do that also for pWindow's subwindows // this makes freshly created windows appear on the screen, if they are not there already - NSModalSession session = [NSApp beginModalSessionForWindow:i->xid]; + NSModalSession session = [NSApp beginModalSessionForWindow:Fl_X::i(pWindow)->xid]; [NSApp runModalSession:session]; [NSApp endModalSession:session]; } diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index 36be7ee7d..86cf1c8d1 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -65,6 +65,8 @@ public: virtual void draw(); // that one is implemented in Fl_Cocoa.mm because it uses Objective-c virtual void capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right); + //this one is in Fl_cocoa.mm because it uses Objective-c + virtual void wait_for_expose(); }; diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H index 53c00cad4..7000356e3 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H @@ -75,6 +75,7 @@ public: void icons(HICON big_icon, HICON small_icon); // this one is implemented in Fl_win32.cxx virtual void capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right); + virtual void wait_for_expose(); }; diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx index 796f60c36..f1b086566 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx @@ -18,6 +18,7 @@ #include "../../config_lib.h" +#include <FL/Fl.H> #include "Fl_WinAPI_Window_Driver.H" #include <windows.h> @@ -247,6 +248,14 @@ void Fl_WinAPI_Window_Driver::icons(HICON big_icon, HICON small_icon) Fl_X::i(pWindow)->set_icons(); } +void Fl_WinAPI_Window_Driver::wait_for_expose() { + if (!pWindow->shown()) return; + Fl_X *i = Fl_X::i(pWindow); + while (!i || i->wait_for_expose) { + Fl::wait(); + } +} + // // End of "$Id$". // diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index 1eb161e0b..2d42b4410 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -74,6 +74,7 @@ public: virtual void icon(const void * ic); virtual void free_icons(); virtual void capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right); + virtual void wait_for_expose(); }; diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index 32ac787a2..05c27a972 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -331,6 +331,14 @@ void Fl_X11_Window_Driver::capture_titlebar_and_borders(Fl_Shared_Image*& top, F previous->Fl_Surface_Device::set_current(); } +void Fl_X11_Window_Driver::wait_for_expose() { + if (!pWindow->shown()) return; + Fl_X *i = Fl_X::i(pWindow); + while (!i || i->wait_for_expose) { + Fl::wait(); + } +} + // // End of "$Id$". // |
