summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H1
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H1
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.H2
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx21
4 files changed, 25 insertions, 0 deletions
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 <FL/Fl_Shared_Image.H>
#include <FL/Fl_Overlay_Window.H>
+#include <FL/Fl_Menu_Window.H>
#include <FL/fl_draw.H>
#include <FL/fl_ask.H>
#include <FL/Fl.H>
@@ -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$".
//