summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2022-02-27 20:45:07 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2022-03-01 13:45:51 +0100
commit47154602ddac68be9098cbb91011158ed69bdcf9 (patch)
tree573908b1e8dcec47c427c9b4c3af2bb013f42b1d
parent091712bea8ff5aab89f0f8483ca572c118ca5715 (diff)
Simplify internal Fl_WinAPI_Window_Driver::fake_X_wm() method
Add optional arguments 'style' and 'styleEx' to fake_X_wm(). Remove static function fake_X_wm_style() and include its code in the Window driver method Fl_WinAPI_Window_Driver::fake_X_wm(). This removes some calls and function arguments.
-rw-r--r--src/Fl_win32.cxx30
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H2
2 files changed, 16 insertions, 16 deletions
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 91a54215a..7f2e1f98e 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1711,9 +1711,9 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
/* Implementation note about the API to get the dimensions of the top/left borders and the title bar
- Function fake_X_wm_style() below is used before calling CreateWindowExW() to create
+ Function fake_X_wm() below is used before calling CreateWindowExW() to create
a window and before calling SetWindowPos(). Both of these Windows functions need the window size
- including borders and title bar. Function fake_X_wm_style() uses AdjustWindowRectExForDpi() or
+ including borders and title bar. Function fake_X_wm() uses AdjustWindowRectExForDpi() or
AdjustWindowRectEx() to get the sizes of borders and title bar. The gotten values don't always match
what is seen on the display, but they are the **required** values so the subsequent calls to
CreateWindowExW() or SetWindowPos() correctly size the window.
@@ -1727,7 +1727,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
DwmGetWindowAttribute().
*/
-////////////////////////////////////////////////////////////////
+// /////////////////////////////////////////////////////////////////
// This function gets the dimensions of the top/left borders and
// the title bar, if there is one, based on the FL_BORDER, FL_MODAL
// and FL_NONMODAL flags, and on the window's size range.
@@ -1738,13 +1738,15 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
// 1 | fix | yes
// 2 | size | yes
-static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx, int &by, DWORD style, DWORD styleEx,
- int w_maxw, int w_minw, int w_maxh, int w_minh, uchar w_size_range_set) {
+int Fl_WinAPI_Window_Driver::fake_X_wm(int &X, int &Y, int &bt, int &bx, int &by, DWORD style, DWORD styleEx) {
+
+ const Fl_Window *w = pWindow;
+
int W = 0, H = 0, xoff = 0, yoff = 0, dx = 0, dy = 0;
int ret = bx = by = bt = 0;
int fallback = 1;
- float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(w)->screen_num());
+ float s = Fl::screen_driver()->scale(screen_num());
if (!w->parent()) {
if (fl_xid(w) || style) {
// The block below calculates the window borders by requesting the
@@ -1773,7 +1775,7 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx,
BOOL ok;
if (is_dpi_aware && fl_AdjustWindowRectExForDpi) {
Fl_WinAPI_Screen_Driver *sd = (Fl_WinAPI_Screen_Driver*)Fl::screen_driver();
- UINT dpi = UINT(sd->dpi[Fl_Window_Driver::driver(w)->screen_num()][0]);
+ UINT dpi = UINT(sd->dpi[screen_num()][0]);
ok = fl_AdjustWindowRectExForDpi(&r, style, FALSE, styleEx, dpi);
} else
ok = AdjustWindowRectEx(&r, style, FALSE, styleEx);
@@ -1784,12 +1786,12 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx,
H = r.bottom - r.top;
bx = drawingX - r.left;
by = r.bottom - int(drawingY + w->h() * s); // height of the bottom frame
- bt = drawingY - r.top - by; // height of top caption bar
+ bt = drawingY - r.top - by; // height of top caption bar
xoff = bx;
yoff = by + bt;
dx = W - int(w->w() * s);
dy = H - int(w->h() * s);
- if (w_size_range_set && (w_maxw != w_minw || w_maxh != w_minh))
+ if (maxw() != minw() || maxh() != minh())
ret = 2;
else
ret = 1;
@@ -1800,7 +1802,7 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx,
// This is the original (pre 1.1.7) routine to calculate window border sizes.
if (fallback) {
if (w->border() && !w->parent()) {
- if (w_size_range_set && (w_maxw != w_minw || w_maxh != w_minh)) {
+ if (maxw() != minw() || maxh() != minh()) {
ret = 2;
bx = GetSystemMetrics(SM_CXSIZEFRAME);
by = GetSystemMetrics(SM_CYSIZEFRAME);
@@ -1863,10 +1865,6 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx,
return ret;
}
-int Fl_WinAPI_Window_Driver::fake_X_wm(int &X, int &Y, int &bt, int &bx, int &by) {
- return fake_X_wm_style(pWindow, X, Y, bt, bx, by, 0, 0, maxw(), minw(), maxh(), minh(), size_range_set());
-}
-
////////////////////////////////////////////////////////////////
void Fl_WinAPI_Window_Driver::resize(int X, int Y, int W, int H) {
@@ -2105,7 +2103,9 @@ Fl_X *Fl_WinAPI_Window_Driver::makeWindow() {
}
int xwm = xp, ywm = yp, bt, bx, by; // these are in graphical units
- fake_X_wm_style(w, xwm, ywm, bt, bx, by, style, styleEx, maxw(), minw(), maxh(), minh(), size_range_set());
+
+ fake_X_wm(xwm, ywm, bt, bx, by, style, styleEx);
+
if (by + bt) {
wp += 2 * bx;
hp += 2 * by + bt;
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
index 23a05be57..356eb8297 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H
@@ -80,7 +80,7 @@ public:
};
static type_for_resize_window_between_screens data_for_resize_window_between_screens_;
void set_minmax(LPMINMAXINFO minmax);
- int fake_X_wm(int &X, int &Y, int &bt,int &bx,int &by);
+ int fake_X_wm(int &X, int &Y, int &bt, int &bx, int &by, DWORD style = 0, DWORD styleEx = 0);
void make_fullscreen(int X, int Y, int W, int H);
// --- window data
virtual int decorated_w();