summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2016-03-07 21:15:25 +0000
committerMatthias Melcher <fltk@matthiasm.com>2016-03-07 21:15:25 +0000
commit12eef8e64d2518c140770529ce6e03f046b33ecf (patch)
tree7c71d0d214f396e1daf3e14424293f3aea93cf59 /FL
parentb6b99d84e9513405ee381dbf93572914d195fc75 (diff)
Separating Fl_X and Fl_Window_Driver in Fl_Window.
This was needed because Fl_X only exists if a window is mapped, but we need the driver from the very beginning. Adding Fl_X in the ctor would create hidden bugs. Strategy is now to remove system specific stuff from Fl_X and move it one-by-one to Fl_Window_Driver while maintaining a working code base. X11 and WIN32 fixups will follow in 15 minutes. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11308 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL')
-rw-r--r--FL/Fl_Window.H5
-rw-r--r--FL/Fl_Window_Driver.H6
-rw-r--r--FL/porting.H2
3 files changed, 8 insertions, 5 deletions
diff --git a/FL/Fl_Window.H b/FL/Fl_Window.H
index 9dd443e8e..659495f32 100644
--- a/FL/Fl_Window.H
+++ b/FL/Fl_Window.H
@@ -71,7 +71,8 @@ class FL_EXPORT Fl_Window : public Fl_Group {
friend class Fl_X;
friend class Fl_Window_Driver;
- Fl_Window_Driver *i; // points at the system-specific stuff
+ Fl_X *i; // points at the system-specific stuff, but exists only after the window is mapped
+ Fl_Window_Driver *pWindowDriver; // points at the system-specific stuff at window creatino time
struct icon_data {
const void *legacy_icon;
@@ -635,7 +636,7 @@ public:
// Captures the titlebar and borders of the window, if they exist.
void capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right);
- Fl_Window_Driver *driver() { return i; }
+ Fl_Window_Driver *driver() { return pWindowDriver; }
/**
Return non-null if this is an Fl_Overlay_Window object.
diff --git a/FL/Fl_Window_Driver.H b/FL/Fl_Window_Driver.H
index 540b6971f..9f938606f 100644
--- a/FL/Fl_Window_Driver.H
+++ b/FL/Fl_Window_Driver.H
@@ -33,7 +33,9 @@ class Fl_Window;
/**
\brief A base class for platform specific window handling code.
*/
-class FL_EXPORT Fl_Window_Driver : public Fl_X {
+class FL_EXPORT Fl_Window_Driver {
+protected:
+ Fl_Window *pWindow;
public:
Fl_Window_Driver(Fl_Window *);
virtual ~Fl_Window_Driver();
@@ -42,7 +44,7 @@ public:
virtual void take_focus() { }
virtual int double_flush(int eraseoverlay);
virtual void destroy_double_buffer();
- void draw() {w->draw();}
+ void draw();
};
diff --git a/FL/porting.H b/FL/porting.H
index 7b0830189..776dd8779 100644
--- a/FL/porting.H
+++ b/FL/porting.H
@@ -78,7 +78,7 @@ public:
int wait_for_expose;
// NSCursor *cursor;
static Fl_X* first;
- static Fl_X* i(const Fl_Window* w) {return (Fl_X*)w->i;}
+ static Fl_X* i(const Fl_Window* w) {return w->i;}
static int fake_X_wm(const Fl_Window*,int&,int&,int&,int&,int&);
static Fl_X* make(Fl_Window*);
void flush();