summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-03-23 20:16:23 +0000
committerManolo Gouy <Manolo>2016-03-23 20:16:23 +0000
commitd3b33cdaeaa17d5ee1f7208d467fd2edbb617c16 (patch)
tree2165456f353f2f240197145158f552e5ed1b702e /src/drivers
parentfdaad858ba78ac232df8b5a7d6f1ab3a64680a6c (diff)
Rewrite Fl_Window::hotspot(int X, int Y, int offscreen) under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11412 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H1
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx8
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H1
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx12
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.H1
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx9
6 files changed, 32 insertions, 0 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
index 8cce010f6..a9bc4b68a 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
@@ -84,6 +84,7 @@ public:
virtual void fullscreen_off(int X, int Y, int W, int H);
virtual void size_range();
virtual void iconize();
+ virtual void decoration_sizes(int *top, int *left, int *right, int *bottom);
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/Cocoa/Fl_Cocoa_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
index 0354b1255..ec1d2cf73 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
@@ -258,6 +258,14 @@ void Fl_Cocoa_Window_Driver::fullscreen_off(int X, int Y, int W, int H) {
Fl::handle(FL_FULLSCREEN, pWindow);
}
+
+void Fl_Cocoa_Window_Driver::decoration_sizes(int *top, int *left, int *right, int *bottom) {
+ *top = 24;
+ *left = 2;
+ *right = 2;
+ *bottom = 2;
+}
+
//
// End of "$Id$".
//
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
index 2cae854ef..a6fa71ec4 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
@@ -88,6 +88,7 @@ public:
virtual void fullscreen_on();
virtual void fullscreen_off(int X, int Y, int W, int H);
virtual void iconize();
+ virtual void decoration_sizes(int *top, int *left, int *right, int *bottom);
virtual void shape(const Fl_Image* img);
virtual void icons(const Fl_RGB_Image *icons[], int count);
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
index dd3b64168..c2afc67f3 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
@@ -613,6 +613,18 @@ void Fl_WinAPI_Window_Driver::iconize() {
ShowWindow(fl_xid(pWindow), SW_SHOWMINNOACTIVE);
}
+
+void Fl_WinAPI_Window_Driver::decoration_sizes(int *top, int *left, int *right, int *bottom) {
+ if (size_range_set() && (maxw() != minw() || maxh() != minh())) {
+ *left = *right = GetSystemMetrics(SM_CXSIZEFRAME);
+ *top = *bottom = GetSystemMetrics(SM_CYSIZEFRAME);
+ } else {
+ *left = *right = GetSystemMetrics(SM_CXFIXEDFRAME);
+ *top = *bottom = GetSystemMetrics(SM_CYFIXEDFRAME);
+ }
+ *top += GetSystemMetrics(SM_CYCAPTION);
+}
+
//
// End of "$Id$".
//
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H
index 35cee4afd..de2d65446 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.H
+++ b/src/drivers/X11/Fl_X11_Window_Driver.H
@@ -99,6 +99,7 @@ public:
virtual void use_border();
virtual void size_range();
virtual void iconize();
+ virtual void decoration_sizes(int *top, int *left, int *right, int *bottom);
virtual void shape(const Fl_Image* img);
virtual void icons(const Fl_RGB_Image *icons[], int count);
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx
index 2d6782eaf..7ae170284 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -508,6 +508,15 @@ void Fl_X11_Window_Driver::iconize() {
XIconifyWindow(fl_display, fl_xid(pWindow), fl_screen);
}
+void Fl_X11_Window_Driver::decoration_sizes(int *top, int *left, int *right, int *bottom) {
+ // Ensure border is on screen; these values are generic enough
+ // to work with many window managers, and are based on KDE defaults.
+ *top = 20;
+ *left = 4;
+ *right = 4;
+ *bottom = 8;
+}
+
//
// End of "$Id$".
//