Release v0.6.27: menu and Alt access keys

This commit is contained in:
2026-11-02 01:23:33 +02:00
parent 22edece7cf
commit 738c81dce2
13 changed files with 138 additions and 114 deletions
+18
View File
@@ -627,6 +627,24 @@ int main(int argc, char **argv) {
require(fitted.left==-600&&fitted.top==680&&fitted.right==0,"negative-coordinate monitor supported");
ks::showSettings(app,false);
require(GetDlgItem(app.settingsWindow,258)!=nullptr,"sync available without local opt-in");
// Mnemonics only target visible controls; show without taking foreground focus.
ShowWindow(app.settingsWindow,SW_SHOWNOACTIVATE);
auto previousActive=SetActiveWindow(app.settingsWindow);
auto awakeBefore=SendDlgItemMessageW(app.settingsWindow,205,BM_GETCHECK,0,0);
MSG accessKey{}; accessKey.hwnd=GetDlgItem(app.settingsWindow,201);
accessKey.message=WM_SYSCHAR; accessKey.wParam=L'k'; accessKey.lParam=1LL<<29;
require(IsDialogMessageW(app.settingsWindow,&accessKey),"Alt+K is handled as a dialog access key");
MSG dispatched{};
while(PeekMessageW(&dispatched,nullptr,0,0,PM_REMOVE)) { TranslateMessage(&dispatched); DispatchMessageW(&dispatched); }
require(SendDlgItemMessageW(app.settingsWindow,205,BM_GETCHECK,0,0)!=awakeBefore,
"Alt+K toggles Keep screen awake");
IsDialogMessageW(app.settingsWindow,&accessKey);
while(PeekMessageW(&dispatched,nullptr,0,0,PM_REMOVE)) { TranslateMessage(&dispatched); DispatchMessageW(&dispatched); }
require(SendDlgItemMessageW(app.settingsWindow,205,BM_GETCHECK,0,0)==awakeBefore,
"repeated access key restores checkbox state");
ShowWindow(app.settingsWindow,SW_HIDE);
SetActiveWindow(previousActive);
DestroyWindow(app.settingsWindow);
ks::saveSyncConfig(app.data,ks::SyncConfig{});
ks::showSettings(app,false);