summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx37
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx6
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx16
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx4
4 files changed, 33 insertions, 30 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
index 8e52988c9..15983032f 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
@@ -89,23 +89,26 @@ void Fl_Cocoa_Window_Driver::draw_end()
{
// on OS X, windows have no frame. Before OS X 10.7, to resize a window, we drag the lower right
// corner. This code draws a little ribbed triangle for dragging.
- if (fl_mac_os_version < 100700 && !parent() && is_resizable() &&
- (!size_range_set() || minh() != maxh() || minw() != maxw())) {
- int dx = Fl::box_dw(pWindow->box())-Fl::box_dx(pWindow->box());
- int dy = Fl::box_dh(pWindow->box())-Fl::box_dy(pWindow->box());
- if (dx<=0) dx = 1;
- if (dy<=0) dy = 1;
- int x1 = w()-dx-1, x2 = x1, y1 = h()-dx-1, y2 = y1;
- Fl_Color c[4] = {
- pWindow->color(),
- fl_color_average(pWindow->color(), FL_WHITE, 0.7f),
- fl_color_average(pWindow->color(), FL_BLACK, 0.6f),
- fl_color_average(pWindow->color(), FL_BLACK, 0.8f),
- };
- int i;
- for (i=dx; i<12; i++) {
- fl_color(c[i&3]);
- fl_line(x1--, y1, x2, y2--);
+ if (fl_mac_os_version < 100700 && !parent() && is_resizable()) {
+ int minw, minh, maxw, maxh, set;
+ set = pWindow->get_size_range(&minw, &minh, &maxw, &maxh, NULL, NULL, NULL);
+ if (!set || minh != maxh || minw != maxw) {
+ int dx = Fl::box_dw(pWindow->box())-Fl::box_dx(pWindow->box());
+ int dy = Fl::box_dh(pWindow->box())-Fl::box_dy(pWindow->box());
+ if (dx<=0) dx = 1;
+ if (dy<=0) dy = 1;
+ int x1 = w()-dx-1, x2 = x1, y1 = h()-dx-1, y2 = y1;
+ Fl_Color c[4] = {
+ pWindow->color(),
+ fl_color_average(pWindow->color(), FL_WHITE, 0.7f),
+ fl_color_average(pWindow->color(), FL_BLACK, 0.6f),
+ fl_color_average(pWindow->color(), FL_BLACK, 0.8f),
+ };
+ int i;
+ for (i=dx; i<12; i++) {
+ fl_color(c[i&3]);
+ fl_line(x1--, y1, x2, y2--);
+ }
}
}
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
index 4d2dd1d24..647a1b461 100644
--- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
@@ -1873,11 +1873,7 @@ void *Fl_Wayland_Screen_Driver::control_maximize_button(void *data) {
LIBDECOR_WINDOW_STATE_MAXIMIZED) ) {
win_dims *dim = new win_dims;
dim->tracker = new Fl_Widget_Tracker(win);
- Fl_Window_Driver *dr = Fl_Window_Driver::driver(win);
- dim->minw = dr->minw();
- dim->minh = dr->minh();
- dim->maxw = dr->maxw();
- dim->maxh = dr->maxh();
+ win->get_size_range(&dim->minw, &dim->minh, &dim->maxw, &dim->maxh, NULL, NULL, NULL);
//make win un-resizable
win->size_range(win->w(), win->h(), win->w(), win->h());
dim->next = first_dim;
diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
index 76b7da691..fbe5dc9ab 100644
--- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
@@ -542,30 +542,32 @@ void Fl_Wayland_Window_Driver::size_range() {
Fl_X* ip = Fl_X::flx(pWindow);
struct wld_window *wl_win = (struct wld_window*)ip->xid;
float f = Fl::screen_scale(pWindow->screen_num());
+ int minw, minh, maxw, maxh;
+ pWindow->get_size_range(&minw, &minh, &maxw, &maxh, NULL, NULL, NULL);
if (wl_win->kind == DECORATED && wl_win->frame) {
int X,Y,W,H;
Fl::screen_work_area(X,Y,W,H, Fl::screen_num(x(),y(),w(),h()));
- if (maxw() && maxw() < W && maxh() && maxh() < H) {
+ if (maxw && maxw < W && maxh && maxh < H) {
libdecor_frame_unset_capabilities(wl_win->frame, LIBDECOR_ACTION_FULLSCREEN);
} else {
libdecor_frame_set_capabilities(wl_win->frame, LIBDECOR_ACTION_FULLSCREEN);
}
- if (maxw() && maxh() && (minw() >= maxw() || minh() >= maxh())) {
+ if (maxw && maxh && (minw >= maxw || minh >= maxh)) {
libdecor_frame_unset_capabilities(wl_win->frame, LIBDECOR_ACTION_RESIZE);
} else {
libdecor_frame_set_capabilities(wl_win->frame, LIBDECOR_ACTION_RESIZE);
}
- libdecor_frame_set_min_content_size(wl_win->frame, minw()*f, minh()*f);
- libdecor_frame_set_max_content_size(wl_win->frame, maxw()*f, maxh()*f);
+ libdecor_frame_set_min_content_size(wl_win->frame, minw*f, minh*f);
+ libdecor_frame_set_max_content_size(wl_win->frame, maxw*f, maxh*f);
if (xdg_toplevel()) {
struct libdecor_state *state = libdecor_state_new(int(w() * f), int(h() * f));
libdecor_frame_commit(wl_win->frame, state, NULL);
libdecor_state_free(state);
}
} else if (wl_win->kind == UNFRAMED && wl_win->xdg_toplevel) {
- xdg_toplevel_set_min_size(wl_win->xdg_toplevel, minw()*f, minh()*f);
- if (maxw() && maxh())
- xdg_toplevel_set_max_size(wl_win->xdg_toplevel, maxw()*f, maxh()*f);
+ xdg_toplevel_set_min_size(wl_win->xdg_toplevel, minw*f, minh*f);
+ if (maxw && maxh)
+ xdg_toplevel_set_max_size(wl_win->xdg_toplevel, maxw*f, maxh*f);
}
}
}
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
index e2c0de1d7..f6ad0bcad 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
@@ -631,7 +631,9 @@ void Fl_WinAPI_Window_Driver::iconize() {
void Fl_WinAPI_Window_Driver::decoration_sizes(int *top, int *left, int *right, int *bottom) {
- if (size_range_set() && (maxw() != minw() || maxh() != minh())) {
+ int minw, minh, maxw, maxh, set;
+ set = pWindow->get_size_range(&minw, &minh, &maxw, &maxh, NULL, NULL, NULL);
+ if (set && (maxw != minw || maxh != minh)) {
*left = *right = GetSystemMetrics(SM_CXSIZEFRAME);
*top = *bottom = GetSystemMetrics(SM_CYSIZEFRAME);
} else {