summaryrefslogtreecommitdiff
path: root/src/drivers/X11
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-03-22 17:47:44 +0000
committerManolo Gouy <Manolo>2016-03-22 17:47:44 +0000
commit6ec8ebc4f83fa2c143bff54e66672226cdf7d85c (patch)
treef91bde6630403fd3961ae4bdf9a2c554ea5c12d1 /src/drivers/X11
parent6302b3da00f8116e1bf62629c6d3ab0f719d1a33 (diff)
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
Diffstat (limited to 'src/drivers/X11')
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.H2
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx21
2 files changed, 23 insertions, 0 deletions
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$".
//