Release v0.6.14: resize correction settings and personal dictionaries
This commit is contained in:
+31
-2
@@ -35,6 +35,7 @@ struct WindowLayout
|
||||
int wheelRemainder{}, horizontalWheelRemainder{};
|
||||
std::vector<std::pair<HWND, RECT>> controls; // Original 96-DPI geometry; never rescale rounded pixels.
|
||||
HWND stretch{}, bottomLeft{}, bottomRight{};
|
||||
bool autoOptions{};
|
||||
};
|
||||
WindowLayout *windowLayoutState(HWND w)
|
||||
{
|
||||
@@ -70,7 +71,7 @@ void arrangeWindow(HWND w)
|
||||
layout->y = SetScrollInfo(w, SB_VERT, &vertical, TRUE);
|
||||
}
|
||||
RECT client{}; GetClientRect(w, &client);
|
||||
bool expandable = layout->history || layout->stretch;
|
||||
bool expandable = layout->history || layout->stretch || layout->autoOptions;
|
||||
int extraWidth = expandable ? std::max(0, int(client.right) - scale(w, layout->width)) : 0;
|
||||
int extraHeight = expandable ? std::max(0, int(client.bottom) - scale(w, layout->height)) : 0;
|
||||
struct Move { HWND child; RECT rect; };
|
||||
@@ -89,6 +90,28 @@ void arrangeWindow(HWND w)
|
||||
}
|
||||
if (child == layout->bottomLeft || child == layout->bottomRight)
|
||||
OffsetRect(&next, child == layout->bottomRight ? extraWidth : 0, extraHeight);
|
||||
if (layout->autoOptions)
|
||||
{
|
||||
if (r.top >= 396) OffsetRect(&next, 0, extraHeight);
|
||||
if (r.top == 302 || r.top == 328 || (id >= 401 && id <= 403))
|
||||
{
|
||||
int column = id >= 401 && id <= 403 ? id - 401 : (r.left - 18) / 178;
|
||||
int leftExtra = extraWidth * column / 3;
|
||||
OffsetRect(&next, leftExtra, 0);
|
||||
next.right += extraWidth * (column + 1) / 3 - leftExtra;
|
||||
if (r.top == 328) next.bottom += extraHeight;
|
||||
}
|
||||
else if (r.top == 474 || r.top == 500)
|
||||
{
|
||||
bool rightColumn = r.left >= 290;
|
||||
OffsetRect(&next, rightColumn ? extraWidth / 2 : 0, 0);
|
||||
next.right += rightColumn ? extraWidth - extraWidth / 2 : extraWidth / 2;
|
||||
}
|
||||
else if (id == 406 || id == 410 || id == IDOK || id == IDCANCEL)
|
||||
OffsetRect(&next, extraWidth, 0);
|
||||
else if (r.right - r.left >= 500)
|
||||
next.right += extraWidth;
|
||||
}
|
||||
RECT current{}; GetWindowRect(child, ¤t);
|
||||
MapWindowPoints(nullptr, w, reinterpret_cast<POINT *>(¤t), 2);
|
||||
if (!EqualRect(¤t, &next)) moves.push_back({child, next});
|
||||
@@ -1072,7 +1095,8 @@ LRESULT CALLBACK autoOptionsProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
void showAutoOptions(HWND parent, SettingsView *v)
|
||||
{
|
||||
HWND w = makeWindow(*v->app, L"KSwitcher.AutoOptions", L"Automatic layout correction", autoOptionsProc,
|
||||
560, 680, 0, false);
|
||||
560, 680);
|
||||
windowLayoutState(w)->autoOptions = true;
|
||||
SetWindowLongPtrW(w, GWLP_HWNDPARENT, (LONG_PTR)parent);
|
||||
SetWindowLongPtrW(w, GWLP_USERDATA, (LONG_PTR) new AutoOptionsView{parent, v});
|
||||
label(w, L"Offline dictionaries (only layouts in your cycle are used)", 18, 16, 525);
|
||||
@@ -1113,6 +1137,11 @@ void showAutoOptions(HWND parent, SettingsView *v)
|
||||
label(w, L"After editing files, click OK here, then Save in Settings to reload.", 18, 600, 525);
|
||||
button(w, L"OK", IDOK, 326, 632, 100);
|
||||
button(w, L"Cancel", IDCANCEL, 440, 632, 100);
|
||||
RECT initial{};
|
||||
GetWindowRect(w, &initial);
|
||||
initial.right += scale(w, 200);
|
||||
initial.bottom += scale(w, 140);
|
||||
fitToMonitor(w, initial);
|
||||
EnableWindow(parent, FALSE);
|
||||
showRequestedWindow(w);
|
||||
SetForegroundWindow(w);
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
#include "platform.h"
|
||||
namespace ks
|
||||
{
|
||||
inline constexpr wchar_t AppVersion[] = L"0.6.13";
|
||||
inline constexpr wchar_t AppVersion[] = L"0.6.14";
|
||||
inline constexpr UINT UpdateMessage = WM_APP + 7;
|
||||
inline constexpr UINT UpdateCheckIntervalMs = 6 * 60 * 60 * 1000;
|
||||
inline constexpr UINT UpdateNotificationRetryMs = 5 * 60 * 1000;
|
||||
|
||||
Reference in New Issue
Block a user