From 2fd4dde9f5d682898b7fc387bb364fff2febf8fb Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Sun, 27 Mar 2016 07:47:52 +0000 Subject: Rewrite Fl_Menu_Window class under the driver model. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11441 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/X11/Fl_X11_Window_Driver.H | 2 ++ src/drivers/X11/Fl_X11_Window_Driver.cxx | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) (limited to 'src/drivers/X11') diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index ea6e3d649..2c4c432aa 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -84,6 +84,8 @@ public: virtual void take_focus(); virtual void flush_double(); virtual void flush_overlay(); + virtual void flush_menu(); + virtual void erase_menu(); virtual void draw_begin(); virtual void make_current(); virtual void show(); diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index 861aaf972..43cff28e9 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -633,6 +633,30 @@ void Fl_X11_Window_Driver::redraw_overlay() { Fl_Window_Driver::redraw_overlay(); } +void Fl_X11_Window_Driver::flush_menu() { +#if HAVE_OVERLAY + if (!fl_overlay_visual || !overlay()) {flush_single(); return;} + Fl_X *myi = Fl_X::i(pWindow); + fl_window = myi->xid; +# if defined(FLTK_USE_CAIRO) + // capture gc changes automatically to update the cairo context adequately + if(Fl::autolink_context()) Fl::cairo_make_current(fl_graphics_driver->gc()); +# endif + fl_overlay = 1; + fl_clip_region(myi->region); myi->region = 0; current(pWindow); + draw(); + fl_overlay = 0; +#else + flush_single(); +#endif +} + +void Fl_X11_Window_Driver::erase_menu() { +#if HAVE_OVERLAY + if (pWindow->shown()) XClearWindow(fl_display, fl_xid(pWindow)); +#endif +} + // // End of "$Id$". // -- cgit v1.2.3