Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ All notable changes to Q1View are documented here. Releases follow [semantic ver

---

## [2.8.3] — 2026-10-19

### Changed

- Windows Viewer: show the current Browse folder in a distinct, medium-weight header with a neutral background and thin separator above both list and grid views, with compact path text and keyboard-accessible full-path copying; keep parent and drive navigation unchanged. (#121)

### Fixed

- Windows Viewer: prepare directory listings before replacing Browse contents, preserving the previous folder, selection, scroll and image on access or device failures; explain explicit failures without repeated background-refresh dialogs and discard superseded navigation results. (#121)

---

## [2.8.2] — 2026-10-19

### Changed
Expand Down Expand Up @@ -535,7 +547,8 @@ Native display checks passed at 100–175%; 200% layout/font calculations passed

---

[Unreleased]: https://github.com/chammoru/Q1View/compare/v2.8.2...HEAD
[Unreleased]: https://github.com/chammoru/Q1View/compare/v2.8.3...HEAD
[2.8.3]: https://github.com/chammoru/Q1View/compare/v2.8.2...v2.8.3
[2.8.2]: https://github.com/chammoru/Q1View/compare/v2.8.1...v2.8.2
[2.8.1]: https://github.com/chammoru/Q1View/compare/v2.8.0...v2.8.1
[2.8.0]: https://github.com/chammoru/Q1View/compare/v2.7.28...v2.8.0
Expand Down
4 changes: 2 additions & 2 deletions QVisionCore/Q1UiAppearanceWin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ WindowsUiPalette ResolveWindowsUiPalette(bool dark)
RGB(24,24,24), RGB(32,32,32), RGB(38,38,38), RGB(48,48,48), RGB(56,56,56),
RGB(69,69,69), RGB(119,129,142), RGB(242,242,242), RGB(183,190,199),
RGB(138,180,255), RGB(24,24,24), RGB(38,54,80), RGB(234,196,106),
RGB(255,154,164), RGB(125,217,170), RGB(24,24,24), RGB(242,242,242), 0,0,0
RGB(255,154,164), RGB(125,217,170), RGB(24,24,24), RGB(242,242,242), 0,0,0, RGB(48,48,48)
} : WindowsUiPalette{
RGB(243,244,246), RGB(255,255,255), RGB(247,248,250), RGB(238,240,243), RGB(228,231,236),
RGB(215,218,223), RGB(123,132,144), RGB(32,33,36), RGB(88,97,110),
RGB(37,102,217), RGB(255,255,255), RGB(234,241,255), RGB(135,90,0),
RGB(180,35,50), RGB(19,109,69), RGB(247,248,250), RGB(32,33,36), 0,0,0
RGB(180,35,50), RGB(19,109,69), RGB(247,248,250), RGB(32,33,36), 0,0,0, RGB(233,236,240)
};
// One theme controls chrome and the exposed image surround together.
colors[size_t(WindowsUiColor::Canvas)] = dark ? RGB(24,24,24) : RGB(236,236,236);
Expand Down
2 changes: 1 addition & 1 deletion QVisionCore/Q1UiAppearanceWin.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ enum class WindowsUiAppearance { System, Light, Dark };
enum class WindowsUiColor {
Window, Surface, SurfaceAlt, Hover, Pressed, Border, Boundary, Text, Muted,
Accent, OnAccent, Selection, Warning, Danger, Success, Overlay, OverlayText,
Canvas, CanvasText, CanvasMuted, Count
Canvas, CanvasText, CanvasMuted, LocationHeader, Count
};

using WindowsUiPalette = std::array<COLORREF, static_cast<size_t>(WindowsUiColor::Count)>;
Expand Down
14 changes: 13 additions & 1 deletion Tests/ComparerTypographyIntegrationTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -399,11 +399,23 @@ int RunComparerTypographyTests() {
}
const float savedN = doc->mN, savedD = doc->mD, savedX = doc->mXOff, savedY = doc->mYOff;
auto* view = doc->mPane[0].pView;
// This checks menu repaint/layout, not the fit/100-percent stop.
// Restoring a differently sized CI desktop can leave the opening fit
// below 1 even when the image now fits at 1; zoom-out at 1 is then a
// legitimate no-op. Start above that boundary and still require every
// real wheel action to change magnification in the correct direction.
doc->mN = 1.f; doc->mD = ZOOM_DELTA(doc->mN);
doc->ViewOnMouseWheel(-WHEEL_DELTA, doc->mW, doc->mH);
Check(doc->mN == 1.f, "zoom-out at 100 percent legitimately stops when the image already fits");
doc->mN = 2.f; doc->mD = ZOOM_DELTA(doc->mN); doc->setDstSize();
for (int slot = 0; slot < CComparatorDoc::IMG_VIEW_MAX; ++slot)
if (doc->mPane[slot].pView) doc->mPane[slot].pView->DeterminDestOriginCoord(doc);
frame->UpdateMagnication(doc->mN); doc->UpdateAllViews(nullptr); Pump(20);
CPoint center(view->mWCanvas / 2, view->mRcControls.bottom + view->mHCanvas / 2); view->ClientToScreen(&center);
for (int repeat = 0; repeat < 4; ++repeat) for (short delta : {short(WHEEL_DELTA), short(-WHEEL_DELTA)}) {
const float previousN = doc->mN;
view->OnMouseWheel(0, delta, center); Pump(5);
Check(doc->mN != previousN, "real image-wheel handler still zooms in and out");
Check(delta > 0 ? doc->mN > previousN : doc->mN < previousN, "real image-wheel handler still zooms in and out");
CRect helpAfter; ::GetWindowRect(help, helpAfter);
Check(helpAfter == helpBefore, "real wheel handler does not move Help");
}
Expand Down
Loading
Loading