From 51a83b486323d7876b31b9cbf65762364fd1fdb8 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Sun, 14 Feb 2021 21:14:03 +0200 Subject: Windows: Improved custom frame behavior; default to disabled --- src/prefs.c | 2 +- src/ui/window.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/prefs.c b/src/prefs.c index 89e7f203..6af8f1d8 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -26,7 +26,7 @@ void init_Prefs(iPrefs *d) { d->dialogTab = 0; d->useSystemTheme = iTrue; d->theme = dark_ColorTheme; - d->customFrame = iTrue; + d->customFrame = iFalse; /* needs some more work to be default */ d->retainWindowSize = iTrue; d->uiScale = 1.0f; /* default set elsewhere */ d->zoomPercent = 100; diff --git a/src/ui/window.c b/src/ui/window.c index 998f5681..c5eb7e03 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -841,12 +841,12 @@ static SDL_HitTestResult hitTest_Window_(SDL_Window *win, const SDL_Point *pos, if (isTop) { return pos->x < captionHeight ? SDL_HITTEST_RESIZE_TOPLEFT : pos->x > w - captionHeight ? SDL_HITTEST_RESIZE_TOPRIGHT - : SDL_HITTEST_RESIZE_TOP; + : (d->place.lastHit = SDL_HITTEST_RESIZE_TOP); } if (isBottom) { return pos->x < captionHeight ? SDL_HITTEST_RESIZE_BOTTOMLEFT : pos->x > w - captionHeight ? SDL_HITTEST_RESIZE_BOTTOMRIGHT - : SDL_HITTEST_RESIZE_BOTTOM; + : (d->place.lastHit = SDL_HITTEST_RESIZE_BOTTOM); } } if (pos->x < rightEdge && pos->y < captionHeight) { @@ -1058,7 +1058,7 @@ static iBool unsnap_Window_(iWindow *d, const iInt2 *newPos) { if (snap_Window(d) == yMaximized_WindowSnap && newPos) { d->place.normalRect.pos = *newPos; } - printf("unsnap\n"); fflush(stdout); + //printf("unsnap\n"); fflush(stdout); setSnap_Window(d, none_WindowSnap); return iTrue; } @@ -1120,7 +1120,10 @@ static iBool handleWindowEvent_Window_(iWindow *d, const SDL_WindowEvent *ev) { return iTrue; } if (iAbs(mouse.y - usable.y) < 2) { - setSnap_Window(d, redo_WindowSnap | maximized_WindowSnap); + setSnap_Window(d, + redo_WindowSnap | (d->place.lastHit == SDL_HITTEST_RESIZE_TOP + ? yMaximized_WindowSnap + : maximized_WindowSnap)); return iTrue; } } @@ -1448,7 +1451,8 @@ void setSnap_Window(iWindow *d, int snapMode) { d->place.snap = snapMode & ~redo_WindowSnap; switch (snapMode & mask_WindowSnap) { case none_WindowSnap: - newRect = d->place.normalRect; + newRect = intersect_Rect(d->place.normalRect, + init_Rect(usable.x, usable.y, usable.w, usable.h)); break; case left_WindowSnap: newRect = init_Rect(usable.x, usable.y, usable.w / 2, usable.h); -- cgit v1.2.3