Skip to content

Commit a7f6112

Browse files
committed
feat(ui): add KeepGalleryVisibleOnThumbnailClick setting (v6.29.0.0)
1 parent 9cd4b0a commit a7f6112

7 files changed

Lines changed: 66 additions & 6 deletions

File tree

‎QuickView/AppStrings.cpp‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,8 @@ const wchar_t *HUD_Label_Low = nullptr;
538538
const wchar_t *HUD_Label_Ref = nullptr;
539539
const wchar_t *Settings_Header_GalleryTrigger = nullptr;
540540
const wchar_t *Settings_Label_GalleryTriggerMode = nullptr;
541+
const wchar_t *Settings_Label_KeepGalleryVisibleOnThumbnailClick = nullptr;
542+
const wchar_t *Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick = nullptr;
541543
const wchar_t *Settings_Option_GalleryTriggerAuto = nullptr;
542544
const wchar_t *Settings_Option_GalleryTriggerDelay = nullptr;
543545
const wchar_t *Settings_Option_GalleryTriggerClick = nullptr;
@@ -1085,6 +1087,8 @@ struct LanguageTable {
10851087
const wchar_t *HUD_Label_Ref;
10861088
const wchar_t *Settings_Header_GalleryTrigger;
10871089
const wchar_t *Settings_Label_GalleryTriggerMode;
1090+
const wchar_t *Settings_Label_KeepGalleryVisibleOnThumbnailClick;
1091+
const wchar_t *Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick;
10881092
const wchar_t *Settings_Option_GalleryTriggerAuto;
10891093
const wchar_t *Settings_Option_GalleryTriggerDelay;
10901094
const wchar_t *Settings_Option_GalleryTriggerClick;
@@ -1635,6 +1639,8 @@ static const LanguageTable Table_EN = {
16351639
L"Ref: ", // HUD_Label_Ref
16361640
L"Gallery Filmstrip (Top Hover)", // Settings_Header_GalleryTrigger
16371641
L"Trigger Mode", // Settings_Label_GalleryTriggerMode
1642+
L"Keep visible after clicking thumbnail", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
1643+
L"This feature will automatically enable Window Lock and Keep Window Size On Navigation.", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
16381644
L"Auto Hover", // Settings_Option_GalleryTriggerAuto
16391645
L"Hotspot Hover", // Settings_Option_GalleryTriggerDelay
16401646
L"Click Hotspot", // Settings_Option_GalleryTriggerClick
@@ -2185,6 +2191,8 @@ static const LanguageTable Table_CN = {
21852191
L"参考: ", // HUD_Label_Ref
21862192
L"图库胶片带 (顶部悬浮)", // Settings_Header_GalleryTrigger
21872193
L"触发模式", // Settings_Label_GalleryTriggerMode
2194+
L"缩略图切图时不自动隐藏", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
2195+
L"开启此功能将自动开启“锁定窗口”和“导航时保持窗口尺寸不变”。", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
21882196
L"自动悬停", // Settings_Option_GalleryTriggerAuto
21892197
L"热点停留", // Settings_Option_GalleryTriggerDelay
21902198
L"点击热点", // Settings_Option_GalleryTriggerClick
@@ -2735,6 +2743,8 @@ static const LanguageTable Table_TW = {
27352743
L"參考: ", // HUD_Label_Ref
27362744
L"圖庫底片帶 (頂部懸浮)", // Settings_Header_GalleryTrigger
27372745
L"觸發模式", // Settings_Label_GalleryTriggerMode
2746+
L"縮圖切圖時不自動隱藏", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
2747+
L"開啟此功能將自動開啟「鎖定視窗」和「導覽時保持視窗尺寸不變」。", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
27382748
L"自動懸停", // Settings_Option_GalleryTriggerAuto
27392749
L"熱點停留", // Settings_Option_GalleryTriggerDelay
27402750
L"點擊熱點", // Settings_Option_GalleryTriggerClick
@@ -3285,6 +3295,8 @@ static const LanguageTable Table_JA = {
32853295
L"参考 : ", // HUD_Label_Ref
32863296
L"ギャラリー フィルムストリップ (上部ホバー)", // Settings_Header_GalleryTrigger
32873297
L"トリガーモード", // Settings_Label_GalleryTriggerMode
3298+
L"サムネイルクリック後に表示を維持", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
3299+
L"この機能をオンにすると、「ウィンドウをロック」と「ナビゲーション時にウィンドウサイズを維持」が自動的にオンになります。", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
32883300
L"自動ホバー", // Settings_Option_GalleryTriggerAuto
32893301
L"ホットスポットホバー", // Settings_Option_GalleryTriggerDelay
32903302
L"ホットスポットクリック", // Settings_Option_GalleryTriggerClick
@@ -3835,6 +3847,8 @@ static const LanguageTable Table_RU = {
38353847
L"Эталон: ", // HUD_Label_Ref
38363848
L"Диафильм из галереи (при наведении сверху)", // Settings_Header_GalleryTrigger
38373849
L"Режим триггера", // Settings_Label_GalleryTriggerMode
3850+
L"Не скрывать после клика", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
3851+
L"Эта функция автоматически включит блокировку окна и сохранение размера окна при навигации.", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
38383852
L"Автонаведение", // Settings_Option_GalleryTriggerAuto
38393853
L"Наведение на точку", // Settings_Option_GalleryTriggerDelay
38403854
L"Щелчок по точке", // Settings_Option_GalleryTriggerClick
@@ -4385,6 +4399,8 @@ static const LanguageTable Table_DE = {
43854399
L"Ref: ", // HUD_Label_Ref
43864400
L"Galerie-Filmstreifen (Hover oben)", // Settings_Header_GalleryTrigger
43874401
L"Trigger-Modus", // Settings_Label_GalleryTriggerMode
4402+
L"Nach Klick sichtbar bleiben", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
4403+
L"Diese Funktion aktiviert automatisch die Fenstersperre und die Beibehaltung der Fenstergröße bei der Navigation.", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
43884404
L"Automatischer Hover", // Settings_Option_GalleryTriggerAuto
43894405
L"Hotspot-Hover", // Settings_Option_GalleryTriggerDelay
43904406
L"Hotspot-Klick", // Settings_Option_GalleryTriggerClick
@@ -4935,6 +4951,8 @@ static const LanguageTable Table_ES = {
49354951
L"Ref: ", // HUD_Label_Ref
49364952
L"Tira de imágenes de galería (Hover superior)", // Settings_Header_GalleryTrigger
49374953
L"Modo de activación", // Settings_Label_GalleryTriggerMode
4954+
L"Mantener visible tras clic", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
4955+
L"Esta función habilitará automáticamente el bloqueo de ventana y mantener el tamaño de la ventana en la navegación.", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
49384956
L"Hover automático", // Settings_Option_GalleryTriggerAuto
49394957
L"Hover en punto caliente", // Settings_Option_GalleryTriggerDelay
49404958
L"Clic en punto caliente", // Settings_Option_GalleryTriggerClick
@@ -5485,6 +5503,8 @@ static const LanguageTable Table_FR = {
54855503
L"Ref: ", // HUD_Label_Ref
54865504
L"Film fixe de la galerie (Survol supérieur)", // Settings_Header_GalleryTrigger
54875505
L"Mode de déclenchement", // Settings_Label_GalleryTriggerMode
5506+
L"Maintenir visible après clic", // Settings_Label_KeepGalleryVisibleOnThumbnailClick
5507+
L"Cette fonction activera automatiquement le verrouillage de la fenêtre et le maintien de la taille de la fenêtre lors de la navigation.", // Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick
54885508
L"Survol automatique", // Settings_Option_GalleryTriggerAuto
54895509
L"Survol du point chaud", // Settings_Option_GalleryTriggerDelay
54905510
L"Clic sur le point chaud", // Settings_Option_GalleryTriggerClick
@@ -6039,6 +6059,8 @@ void Apply(const LanguageTable& t) {
60396059
HUD_Label_Ref = t.HUD_Label_Ref;
60406060
Settings_Header_GalleryTrigger = t.Settings_Header_GalleryTrigger;
60416061
Settings_Label_GalleryTriggerMode = t.Settings_Label_GalleryTriggerMode;
6062+
Settings_Label_KeepGalleryVisibleOnThumbnailClick = t.Settings_Label_KeepGalleryVisibleOnThumbnailClick;
6063+
Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick = t.Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick;
60426064
Settings_Option_GalleryTriggerAuto = t.Settings_Option_GalleryTriggerAuto;
60436065
Settings_Option_GalleryTriggerDelay = t.Settings_Option_GalleryTriggerDelay;
60446066
Settings_Option_GalleryTriggerClick = t.Settings_Option_GalleryTriggerClick;

‎QuickView/AppStrings.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ namespace AppStrings {
250250
// Gallery Trigger Mode (Top Hover Gallery)
251251
extern const wchar_t* Settings_Header_GalleryTrigger;
252252
extern const wchar_t* Settings_Label_GalleryTriggerMode;
253+
extern const wchar_t* Settings_Label_KeepGalleryVisibleOnThumbnailClick;
254+
extern const wchar_t* Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick;
253255
extern const wchar_t* Settings_Option_GalleryTriggerAuto;
254256
extern const wchar_t* Settings_Option_GalleryTriggerDelay;
255257
extern const wchar_t* Settings_Option_GalleryTriggerClick;

‎QuickView/EditState.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,7 @@ struct AppConfig {
626626
bool DisableEdgeNavInCompare = true;
627627
int NavIndicator = 0; // 0=Arrow
628628
int GalleryTriggerMode = 1; // 0=Hover Auto, 1=Hover Hotspot Delay, 2=Click Hotspot
629+
bool GalleryKeepVisibleOnThumbnailClick = false;
629630
float GalleryTriggerAreaHeight = 20.0f; // Auto hover trigger zone height in logical pixels (5 ~ 100)
630631
float GalleryDwellTime = 0.18f; // Dwell time for hotspot hover / expand hotspot in seconds (0.05 ~ 2.0)
631632
float GalleryExitDelay = 0.80f; // Exit dismissal delay in seconds (0.10 ~ 3.0)

‎QuickView/GalleryOverlay.cpp‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1702,7 +1702,9 @@ bool GalleryOverlay::OnLButtonUp(int x, int y, int& outSelectedIndex) {
17021702
m_selectedIndex = idx;
17031703
outSelectedIndex = idx;
17041704
if (!m_isPinned) {
1705-
Close(true);
1705+
if (!g_config.GalleryKeepVisibleOnThumbnailClick) {
1706+
Close(true);
1707+
}
17061708
} else if (m_mode == GalleryMode::FullGrid) {
17071709
SetMode(GalleryMode::Filmstrip);
17081710
}

‎QuickView/QuickView.rc‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
// Version Information - This sets the display name in Windows
1414
VS_VERSION_INFO VERSIONINFO
15-
FILEVERSION 6,28,1,0
16-
PRODUCTVERSION 6,28,1,0
15+
FILEVERSION 6,29,0,0
16+
PRODUCTVERSION 6,29,0,0
1717
FILEFLAGSMASK 0x3fL
1818
FILEFLAGS 0x0L
1919
FILEOS 0x40004L
@@ -26,12 +26,12 @@ BEGIN
2626
BEGIN
2727
VALUE "CompanyName", "QuickView"
2828
VALUE "FileDescription", "QuickView"
29-
VALUE "FileVersion", "6.28.1.0"
29+
VALUE "FileVersion", "6.29.0.0"
3030
VALUE "InternalName", "QuickView"
3131
VALUE "LegalCopyright", "Copyright (C) 2026"
3232
VALUE "OriginalFilename", "QuickView.exe"
3333
VALUE "ProductName", "QuickView"
34-
VALUE "ProductVersion", "6.28.1.0"
34+
VALUE "ProductVersion", "6.29.0.0"
3535
END
3636
END
3737
BLOCK "VarFileInfo"

‎QuickView/SettingsOverlay.cpp‎

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,12 +1621,26 @@ void SettingsOverlay::BuildMenu() {
16211621
g_toolbar.SetLockState(g_runtime.LockWindowSize);
16221622
if (!g_config.LockWindowSize) {
16231623
g_config.RememberLastWindowSizeAndPosition = false;
1624+
if (g_config.GalleryKeepVisibleOnThumbnailClick) {
1625+
g_config.GalleryKeepVisibleOnThumbnailClick = false;
1626+
if (overlay) overlay->BuildMenu();
1627+
}
16241628
}
16251629
SaveConfig();
16261630
};
16271631
tabVisuals.items.push_back(itemLockWindow);
16281632

1629-
tabVisuals.items.push_back({ AppStrings::Settings_Label_KeepWindowSizeOnNav, OptionType::Toggle, &g_config.KeepWindowSizeOnNav });
1633+
SettingsItem itemKeepWindowSize = { AppStrings::Settings_Label_KeepWindowSizeOnNav, OptionType::Toggle, &g_config.KeepWindowSizeOnNav };
1634+
itemKeepWindowSize.onChange = []([[maybe_unused]] SettingsOverlay* overlay, [[maybe_unused]] SettingsItem* item) {
1635+
if (!g_config.KeepWindowSizeOnNav) {
1636+
if (g_config.GalleryKeepVisibleOnThumbnailClick) {
1637+
g_config.GalleryKeepVisibleOnThumbnailClick = false;
1638+
if (overlay) overlay->BuildMenu();
1639+
}
1640+
}
1641+
SaveConfig();
1642+
};
1643+
tabVisuals.items.push_back(itemKeepWindowSize);
16301644
SettingsItem itemRememberWindow = { AppStrings::Settings_Label_RememberLastWindowSizeAndPosition, OptionType::Toggle, &g_config.RememberLastWindowSizeAndPosition };
16311645
itemRememberWindow.onChange = []([[maybe_unused]] SettingsOverlay* overlay, [[maybe_unused]] SettingsItem* item) {
16321646
if (g_config.RememberLastWindowSizeAndPosition) {
@@ -1916,6 +1930,23 @@ void SettingsOverlay::BuildMenu() {
19161930
};
19171931
tabControl.items.push_back(itemGalleryTrigger);
19181932

1933+
SettingsItem itemKeepVisible = { AppStrings::Settings_Label_KeepGalleryVisibleOnThumbnailClick, OptionType::Toggle, &g_config.GalleryKeepVisibleOnThumbnailClick };
1934+
itemKeepVisible.isNewOption = true;
1935+
itemKeepVisible.tooltipText = AppStrings::Settings_Tooltip_KeepGalleryVisibleOnThumbnailClick;
1936+
itemKeepVisible.onChange = []([[maybe_unused]] SettingsOverlay* overlay, [[maybe_unused]] SettingsItem* item) {
1937+
if (g_config.GalleryKeepVisibleOnThumbnailClick) {
1938+
g_config.LockWindowSize = true;
1939+
g_runtime.LockWindowSize = true;
1940+
g_toolbar.SetLockState(true);
1941+
g_config.KeepWindowSizeOnNav = true;
1942+
if (overlay) {
1943+
overlay->BuildMenu();
1944+
}
1945+
}
1946+
SaveConfig();
1947+
};
1948+
tabControl.items.push_back(itemKeepVisible);
1949+
19191950
if (g_config.GalleryTriggerMode == 0) {
19201951
SettingsItem itemAreaHeight = { AppStrings::Settings_Label_GalleryTriggerAreaHeight, OptionType::Slider, nullptr, &g_config.GalleryTriggerAreaHeight };
19211952
itemAreaHeight.minVal = 5.0f;

‎QuickView/main.cpp‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4427,6 +4427,7 @@ void SaveConfig() {
44274427
WriteConfigInt(L"Controls", L"MiddleClickAction", (int)g_config.MiddleClickAction, iniPath.c_str());
44284428
WriteConfigBool(L"Controls", L"EdgeNavClick", g_config.EdgeNavClick, iniPath.c_str());
44294429
WriteConfigInt(L"Controls", L"GalleryTriggerMode", g_config.GalleryTriggerMode, iniPath.c_str());
4430+
WriteConfigBool(L"Controls", L"GalleryKeepVisibleOnThumbnailClick", g_config.GalleryKeepVisibleOnThumbnailClick, iniPath.c_str());
44304431
WriteConfigFloat(L"Controls", L"GalleryTriggerAreaHeight", g_config.GalleryTriggerAreaHeight, iniPath.c_str());
44314432
WriteConfigFloat(L"Controls", L"GalleryDwellTime", g_config.GalleryDwellTime, iniPath.c_str());
44324433
WriteConfigFloat(L"Controls", L"GalleryExitDelay", g_config.GalleryExitDelay, iniPath.c_str());
@@ -4748,6 +4749,7 @@ void LoadConfig() {
47484749
g_config.MiddleClickIndex = (g_config.MiddleClickAction == MouseAction::ExitApp) ? 1 : 0;
47494750
g_config.EdgeNavClick = GetPrivateProfileIntW(L"Controls", L"EdgeNavClick", 1, iniPath.c_str()) != 0;
47504751
g_config.GalleryTriggerMode = GetPrivateProfileIntW(L"Controls", L"GalleryTriggerMode", 1, iniPath.c_str());
4752+
g_config.GalleryKeepVisibleOnThumbnailClick = GetPrivateProfileIntW(L"Controls", L"GalleryKeepVisibleOnThumbnailClick", 0, iniPath.c_str()) != 0;
47514753
GetPrivateProfileStringW(L"Controls", L"GalleryTriggerAreaHeight", L"20.0", buf, 64, iniPath.c_str());
47524754
g_config.GalleryTriggerAreaHeight = std::clamp((float)_wtof(buf), 5.0f, 100.0f);
47534755
GetPrivateProfileStringW(L"Controls", L"GalleryDwellTime", L"0.18", buf, 64, iniPath.c_str());

0 commit comments

Comments
 (0)