summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Window.H4
-rw-r--r--FL/Fl_Window_Driver.H6
-rw-r--r--FL/mac.H2
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/Fl.cxx1
-rw-r--r--src/Fl_Window.cxx2
-rw-r--r--src/Fl_Window_Driver.cxx2
-rw-r--r--src/Fl_Window_iconize.cxx2
-rw-r--r--src/Fl_cocoa.mm4
-rw-r--r--src/Fl_win32.cxx3
-rw-r--r--src/Fl_x.cxx2
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx13
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.h5
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx12
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.h5
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx12
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.h5
-rw-r--r--src/fl_cursor.cxx2
18 files changed, 66 insertions, 17 deletions
diff --git a/FL/Fl_Window.H b/FL/Fl_Window.H
index b4ba45034..9881d476c 100644
--- a/FL/Fl_Window.H
+++ b/FL/Fl_Window.H
@@ -34,6 +34,7 @@
#define FL_DOUBLE_WINDOW 0xF1 ///< double window type id
class Fl_X;
+class Fl_Window_Driver;
class Fl_RGB_Image;
class Fl_Shared_Image;
@@ -69,8 +70,9 @@ class FL_EXPORT Fl_Window : public Fl_Group {
int fullscreen_screen_right;
friend class Fl_X;
+ friend class Fl_Window_Driver;
friend class Fl_Paged_Device;
- Fl_X *i; // points at the system-specific stuff
+ Fl_Window_Driver *i; // points at the system-specific stuff
struct icon_data {
const void *legacy_icon;
diff --git a/FL/Fl_Window_Driver.H b/FL/Fl_Window_Driver.H
index 6b2e0ad89..f42360724 100644
--- a/FL/Fl_Window_Driver.H
+++ b/FL/Fl_Window_Driver.H
@@ -27,13 +27,17 @@
#include <FL/x.H>
+class Fl_Window;
+
+
/**
\brief A base class for platform specific window handling code.
*/
class FL_EXPORT Fl_Window_Driver : public Fl_X {
public:
- Fl_Window_Driver();
+ Fl_Window_Driver(Fl_Window *);
virtual ~Fl_Window_Driver();
+ static Fl_Window_Driver *newWindowDriver(Fl_Window *);
};
diff --git a/FL/mac.H b/FL/mac.H
index f5b3a0c2a..8da33239d 100644
--- a/FL/mac.H
+++ b/FL/mac.H
@@ -149,7 +149,7 @@ public:
int wait_for_expose;
NSCursor *cursor;
static Fl_X* first;
- static Fl_X* i(const Fl_Window* w) {return w->i;}
+ static Fl_X* i(const Fl_Window* w) {return (Fl_X*)w->i;}
static int fake_X_wm(const Fl_Window*,int&,int&,int&,int&,int&);
static void make(Fl_Window*);
void flush();
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c1064eb37..789331067 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -79,6 +79,7 @@ set(CPPFILES
Fl_Value_Slider.cxx
Fl_Widget.cxx
Fl_Window.cxx
+ Fl_Window_Driver.cxx
Fl_Window_fullscreen.cxx
Fl_Window_hotspot.cxx
Fl_Window_iconize.cxx
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 2bf37f064..a837eb6a3 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -47,6 +47,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Screen_Driver.H>
+#include <FL/Fl_Window_Driver.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Tooltip.H>
#include <FL/x.H>
diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx
index 75f423490..54d6e9cc2 100644
--- a/src/Fl_Window.cxx
+++ b/src/Fl_Window.cxx
@@ -22,7 +22,7 @@
// equivalent (but totally different) crap for MSWindows is in Fl_win32.cxx
#include <config.h>
#include <FL/Fl.H>
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
#include <FL/Fl_RGB_Image.H>
#include <FL/Fl_Window.H>
#include <stdlib.h>
diff --git a/src/Fl_Window_Driver.cxx b/src/Fl_Window_Driver.cxx
index 1bae27c59..22517bfc7 100644
--- a/src/Fl_Window_Driver.cxx
+++ b/src/Fl_Window_Driver.cxx
@@ -24,7 +24,7 @@
#include <FL/Fl.H>
-Fl_Window_Driver::Fl_Window_Driver()
+Fl_Window_Driver::Fl_Window_Driver(Fl_Window *win)
{
}
diff --git a/src/Fl_Window_iconize.cxx b/src/Fl_Window_iconize.cxx
index 807c01d26..bd5b7e93a 100644
--- a/src/Fl_Window_iconize.cxx
+++ b/src/Fl_Window_iconize.cxx
@@ -16,7 +16,7 @@
// http://www.fltk.org/str.php
//
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
extern char fl_show_iconic; // in Fl_x.cxx
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 19542d9b3..02d67a11b 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -36,7 +36,7 @@ extern "C" {
#include <FL/Fl.H>
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Tooltip.H>
#include <FL/Fl_Printer.H>
@@ -2946,7 +2946,7 @@ void Fl_X::make(Fl_Window* w)
yp -= by+bt;
}
- Fl_X* x = new Fl_X;
+ Fl_Window_Driver *x = Fl_Window_Driver::newWindowDriver(w);
x->other_xid = 0; // room for doublebuffering image map. On OS X this is only used by overlay windows
x->region = 0;
x->subRect(0);
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 7e757b2fe..471b7434c 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -24,6 +24,7 @@
#ifndef FL_DOXYGEN
#include <FL/Fl.H>
+#include <FL/Fl_Window_Driver.H>
#include <FL/fl_utf8.h>
#include <FL/Fl_Window.H>
#include <FL/fl_draw.H>
@@ -1900,7 +1901,7 @@ Fl_X* Fl_X::make(Fl_Window* w) {
} else if (Fl::grab()) parent = fl_xid(Fl::grab());
}
- Fl_X* x = new Fl_X;
+ Fl_Window_Driver *x = Fl_Window_Driver::newWindowDriver(w);
x->other_xid = 0;
x->setwindow(w);
x->region = 0;
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index 23b75c44a..bffb343d1 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -2285,7 +2285,7 @@ void Fl_Window::fullscreen_off_x(int X, int Y, int W, int H) {
void fl_fix_focus(); // in Fl.cxx
Fl_X* Fl_X::set_xid(Fl_Window* win, Window winxid) {
- Fl_X* xp = new Fl_X;
+ Fl_Window_Driver *x = Fl_Window_Driver::newWindowDriver(win);
xp->xid = winxid;
xp->other_xid = 0;
xp->setwindow(win);
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
index e18d4aa82..06ab4f79d 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
@@ -21,6 +21,19 @@
#include "Fl_Cocoa_Window_Driver.h"
+Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
+{
+ return new Fl_Cocoa_Window_Driver(w);
+}
+
+
+Fl_Cocoa_Window_Driver::Fl_Cocoa_Window_Driver(Fl_Window *win)
+: Fl_Window_Driver(win)
+{
+}
+
+
+
//
// End of "$Id$".
//
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.h b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.h
index 67d4f3d5a..b507e2ec4 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.h
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.h
@@ -25,7 +25,7 @@
#ifndef FL_COCOA_WINDOW_DRIVER_H
#define FL_COCOA_WINDOW_DRIVER_H
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
/*
Move everything here that manages the native window interface.
@@ -42,9 +42,10 @@
? where do we handle the interface between OpenGL/DirectX and Cocoa/WIN32/Glx?
*/
-class FL_EXPORT Fl_Cocoa_Window_Driver : public Fl_X
+class FL_EXPORT Fl_Cocoa_Window_Driver : public Fl_Window_Driver
{
public:
+ Fl_Cocoa_Window_Driver(Fl_Window*);
};
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
index f9897619a..b11b0ee00 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
@@ -21,6 +21,18 @@
#include "Fl_WinAPI_Window_Driver.h"
+Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
+{
+ return new Fl_WinAPI_Window_Driver(w);
+}
+
+
+Fl_WinAPI_Window_Driver::Fl_WinAPI_Window_Driver(Fl_Window *win)
+: Fl_Window_Driver(win)
+{
+}
+
+
//
// End of "$Id$".
//
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.h b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.h
index df4f6b7ef..6e4113ef1 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.h
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.h
@@ -25,7 +25,7 @@
#ifndef FL_WINAPI_WINDOW_DRIVER_H
#define FL_WINAPI_WINDOW_DRIVER_H
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
/*
Move everything here that manages the native window interface.
@@ -42,9 +42,10 @@
? where do we handle the interface between OpenGL/DirectX and Cocoa/WIN32/Glx?
*/
-class FL_EXPORT Fl_WinAPI_Window_Driver : public Fl_X
+class FL_EXPORT Fl_WinAPI_Window_Driver : public Fl_Window_Driver
{
public:
+ Fl_WinAPI_Window_Driver(Fl_Window*);
};
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx
index f02d92ed8..ccdcfcb5f 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -21,6 +21,18 @@
#include "Fl_X11_Window_Driver.h"
+Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
+{
+ return new Fl_X11_Window_Driver(w);
+}
+
+
+Fl_X11_Window_Driver::Fl_X11_Window_Driver(Fl_Window *win)
+: Fl_Window_Driver(win)
+{
+}
+
+
//
// End of "$Id$".
//
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.h b/src/drivers/X11/Fl_X11_Window_Driver.h
index 1c1da8391..b391ab5a1 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.h
+++ b/src/drivers/X11/Fl_X11_Window_Driver.h
@@ -25,7 +25,7 @@
#ifndef FL_X11_WINDOW_DRIVER_H
#define FL_X11_WINDOW_DRIVER_H
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
/*
Move everything here that manages the native window interface.
@@ -42,9 +42,10 @@
? where do we handle the interface between OpenGL/DirectX and Cocoa/WIN32/Glx?
*/
-class FL_EXPORT Fl_X11_Window_Driver : public Fl_X
+class FL_EXPORT Fl_X11_Window_Driver : public Fl_Window_Driver
{
public:
+ Fl_X11_Window_Driver(Fl_Window*);
};
diff --git a/src/fl_cursor.cxx b/src/fl_cursor.cxx
index 5375c4f30..22e207a56 100644
--- a/src/fl_cursor.cxx
+++ b/src/fl_cursor.cxx
@@ -26,7 +26,7 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_RGB_Image.H>
-#include <FL/x.H>
+#include <FL/Fl_Window_Driver.H>
#include <FL/fl_draw.H>
#include "fl_cursor_wait.xpm"