From 6ec8ebc4f83fa2c143bff54e66672226cdf7d85c Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Tue, 22 Mar 2016 17:47:44 +0000 Subject: Rewrite Fl_Window::show() and Fl_Menu_Window::show() under the driver model. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11400 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 1 + src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H | 1 + src/drivers/X11/Fl_X11_Window_Driver.H | 2 ++ src/drivers/X11/Fl_X11_Window_Driver.cxx | 21 +++++++++++++++++++++ 4 files changed, 25 insertions(+) (limited to 'src/drivers') diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index 057b5fcd2..4925f1c33 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -75,6 +75,7 @@ public: virtual void draw_end(); virtual void make_current(); virtual void label(const char *name, const char *mininame); + virtual void show(); 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/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H index 051a86300..70129e75b 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H @@ -79,6 +79,7 @@ public: virtual void flush_overlay(); virtual void draw_begin(); virtual void make_current(); + virtual void show(); virtual void label(const char *name,const char *iname); virtual void shape(const Fl_Image* img); diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index b28a19ab9..06e38a39c 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -86,6 +86,8 @@ public: virtual void flush_overlay(); virtual void draw_begin(); virtual void make_current(); + virtual void show(); + virtual void show_menu(); virtual void label(const char *name, const char *mininame); virtual void destroy_double_buffer(); diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index 1c64b24e9..0458c2b4f 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -32,6 +33,13 @@ #define ShapeBounding 0 #define ShapeSet 0 +#if HAVE_OVERLAY +extern XVisualInfo *fl_find_overlay_visual(); +extern XVisualInfo *fl_overlay_visual; +extern Colormap fl_overlay_colormap; +extern unsigned long fl_transparent_pixel; +#endif + Window fl_window; @@ -440,6 +448,19 @@ void Fl_X11_Window_Driver::make_current() { } +void Fl_X11_Window_Driver::show_menu() +{ +#if HAVE_OVERLAY + if (!pWindow->shown() && ((Fl_Menu_Window*)pWindow)->overlay() && fl_find_overlay_visual()) { + XInstallColormap(fl_display, fl_overlay_colormap); + fl_background_pixel = int(fl_transparent_pixel); + Fl_X::make_xid(pWindow, fl_overlay_visual, fl_overlay_colormap); + fl_background_pixel = -1; + } else +#endif + pWindow->Fl_Window::show(); +} + // // End of "$Id$". // -- cgit v1.2.3