diff --git a/packages/media/cpp/dist/pm-image.exe b/packages/media/cpp/dist/pm-image.exe index 1163ee93..43b8ff15 100644 Binary files a/packages/media/cpp/dist/pm-image.exe and b/packages/media/cpp/dist/pm-image.exe differ diff --git a/packages/media/cpp/dist/pm-image.pdb b/packages/media/cpp/dist/pm-image.pdb index a73849ce..4b47fb58 100644 Binary files a/packages/media/cpp/dist/pm-image.pdb and b/packages/media/cpp/dist/pm-image.pdb differ diff --git a/packages/media/cpp/src/win/ui_next/DropView.h b/packages/media/cpp/src/win/ui_next/DropView.h index 6a1d1cee..28c9dbe2 100644 --- a/packages/media/cpp/src/win/ui_next/DropView.h +++ b/packages/media/cpp/src/win/ui_next/DropView.h @@ -62,7 +62,7 @@ private: class CDockGenPreview : public CDocker { public: - CDockGenPreview() { SetView(m_container); SetBarWidth(8); } + CDockGenPreview() { SetView(m_container); SetBarWidth(3); SetBarColor(RGB(204, 206, 210)); } virtual ~CDockGenPreview() override = default; CGenPreviewContainer& GetContainer() { return m_container; } diff --git a/packages/media/cpp/src/win/ui_next/FileInfoPanel.cpp b/packages/media/cpp/src/win/ui_next/FileInfoPanel.cpp index b8acaafe..34f70937 100644 --- a/packages/media/cpp/src/win/ui_next/FileInfoPanel.cpp +++ b/packages/media/cpp/src/win/ui_next/FileInfoPanel.cpp @@ -87,12 +87,13 @@ static std::wstring ReadExifShort(Gdiplus::Image* img, PROPID id) { int CFileInfoView::OnCreate(CREATESTRUCT&) { - m_hEdit = ::CreateWindowExW(WS_EX_CLIENTEDGE, L"EDIT", L"", + m_hEdit = ::CreateWindowExW(0, L"EDIT", L"", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_READONLY | ES_AUTOVSCROLL, 0, 0, 100, 100, GetHwnd(), nullptr, GetModuleHandleW(nullptr), nullptr); HFONT hFont = static_cast(::GetStockObject(DEFAULT_GUI_FONT)); ::SendMessage(m_hEdit, WM_SETFONT, (WPARAM)hFont, TRUE); + ::SendMessageW(m_hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELPARAM(4, 4)); return 0; } @@ -220,7 +221,8 @@ LRESULT CFileInfoContainer::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) CDockFileInfo::CDockFileInfo() { SetView(m_container); - SetBarWidth(8); + SetBarWidth(3); + SetBarColor(RGB(204, 206, 210)); } LRESULT CDockFileInfo::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) diff --git a/packages/media/cpp/src/win/ui_next/FileQueue.cpp b/packages/media/cpp/src/win/ui_next/FileQueue.cpp index 853648fb..a3ce100c 100644 --- a/packages/media/cpp/src/win/ui_next/FileQueue.cpp +++ b/packages/media/cpp/src/win/ui_next/FileQueue.cpp @@ -14,9 +14,16 @@ void CQueueListView::OnAttach() { CListView::OnAttach(); - SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER); + SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER); SetupColumns(); DragAcceptFiles(TRUE); + + // Flat header style + HWND hHeader = ListView_GetHeader(GetHwnd()); + if (hHeader) { + LONG_PTR s = ::GetWindowLongPtr(hHeader, GWL_STYLE); + ::SetWindowLongPtr(hHeader, GWL_STYLE, s | HDS_FLAT); + } } void CQueueListView::PreCreate(CREATESTRUCT& cs) @@ -185,7 +192,8 @@ LRESULT CQueueContainer::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) CDockQueue::CDockQueue() { SetView(m_container); - SetBarWidth(8); + SetBarWidth(3); + SetBarColor(RGB(204, 206, 210)); } LRESULT CDockQueue::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) diff --git a/packages/media/cpp/src/win/ui_next/LogPanel.cpp b/packages/media/cpp/src/win/ui_next/LogPanel.cpp index 3d33aa3d..4d0d35ac 100644 --- a/packages/media/cpp/src/win/ui_next/LogPanel.cpp +++ b/packages/media/cpp/src/win/ui_next/LogPanel.cpp @@ -10,7 +10,7 @@ int CLogView::OnCreate(CREATESTRUCT&) CRect rc = GetClientRect(); HINSTANCE inst = ::GetModuleHandleW(nullptr); m_hEdit = ::CreateWindowExW( - WS_EX_CLIENTEDGE, L"EDIT", L"", + 0, L"EDIT", L"", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY, 0, 0, rc.Width(), rc.Height(), @@ -18,6 +18,7 @@ int CLogView::OnCreate(CREATESTRUCT&) HFONT hFont = static_cast(::GetStockObject(DEFAULT_GUI_FONT)); ::SendMessageW(m_hEdit, WM_SETFONT, (WPARAM)hFont, TRUE); + ::SendMessageW(m_hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELPARAM(4, 4)); return 0; } @@ -84,7 +85,8 @@ LRESULT CLogContainer::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) CDockLog::CDockLog() { SetView(m_container); - SetBarWidth(6); + SetBarWidth(3); + SetBarColor(RGB(204, 206, 210)); } LRESULT CDockLog::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) diff --git a/packages/media/cpp/src/win/ui_next/Mainfrm.cpp b/packages/media/cpp/src/win/ui_next/Mainfrm.cpp index 72b386f9..85385f23 100644 --- a/packages/media/cpp/src/win/ui_next/Mainfrm.cpp +++ b/packages/media/cpp/src/win/ui_next/Mainfrm.cpp @@ -240,7 +240,7 @@ BOOL CMainFrame::OnHelp() void CMainFrame::OnInitialUpdate() { - DWORD style = DS_CLIENTEDGE; + DWORD style = 0; auto pDockQ = AddDockedChild(std::make_unique(), DS_DOCKED_BOTTOM | style, DpiScaleInt(220)); @@ -253,22 +253,36 @@ void CMainFrame::OnInitialUpdate() m_pDockLog->GetLogContainer().SetHideSingleTab(TRUE); auto pDockS = AddDockedChild(std::make_unique(), - DS_DOCKED_RIGHT | style, DpiScaleInt(320)); + DS_DOCKED_RIGHT | style, DpiScaleInt(280)); m_pDockSettings = static_cast(pDockS); m_pDockSettings->GetSettingsContainer().SetHideSingleTab(TRUE); - // Generated preview (transform mode) below settings auto pDockGP = m_pDockSettings->AddDockedChild(std::make_unique(), DS_DOCKED_BOTTOM | style, DpiScaleInt(200)); m_pDockGenPreview = static_cast(pDockGP); m_pDockGenPreview->GetContainer().SetHideSingleTab(TRUE); - // File Info panel below generated preview auto pDockFI = m_pDockGenPreview->AddDockedChild(std::make_unique(), DS_DOCKED_BOTTOM | style, DpiScaleInt(160)); m_pDockFileInfo = static_cast(pDockFI); m_pDockFileInfo->GetInfoContainer().SetHideSingleTab(TRUE); + // Modern flat dock caption styling + COLORREF capBg = RGB(240, 240, 240); + COLORREF capFg = RGB(68, 68, 68); + COLORREF capBgInv = RGB(240, 240, 240); + COLORREF capFgInv = RGB(140, 140, 140); + COLORREF capPen = RGB(220, 220, 220); + auto styleDocker = [&](CDocker* d) { + d->SetCaptionColors(capFg, capBg, capFgInv, capBgInv, capPen); + d->SetCaptionHeight(22); + }; + styleDocker(m_pDockQueue); + styleDocker(m_pDockLog); + styleDocker(m_pDockSettings); + styleDocker(m_pDockGenPreview); + styleDocker(m_pDockFileInfo); + DragAcceptFiles(TRUE); SetWindowText(L"pm-image"); GetStatusBar().SetPartText(0, L"Drop files or use Add Files to begin."); diff --git a/packages/media/cpp/src/win/ui_next/Resource.rc b/packages/media/cpp/src/win/ui_next/Resource.rc index e8f16889..e88b3f20 100644 --- a/packages/media/cpp/src/win/ui_next/Resource.rc +++ b/packages/media/cpp/src/win/ui_next/Resource.rc @@ -58,6 +58,10 @@ BEGIN IDW_READY "Ready" END +// Splitter resize cursors +IDW_SPLITH CURSOR "res/SplitH.cur" +IDW_SPLITV CURSOR "res/SplitV.cur" + // Docking bitmaps — required by Win32++ dock framework for drag indicators. IDW_SDBOTTOM BITMAP "res/SDbottom.bmp" IDW_SDCENTER BITMAP "res/SDcenter.bmp" diff --git a/packages/media/cpp/src/win/ui_next/SettingsPanel.cpp b/packages/media/cpp/src/win/ui_next/SettingsPanel.cpp index 19d6f598..9d845450 100644 --- a/packages/media/cpp/src/win/ui_next/SettingsPanel.cpp +++ b/packages/media/cpp/src/win/ui_next/SettingsPanel.cpp @@ -270,7 +270,8 @@ LRESULT CSettingsContainer::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) CDockSettings::CDockSettings() { SetView(m_container); - SetBarWidth(8); + SetBarWidth(3); + SetBarColor(RGB(204, 206, 210)); } LRESULT CDockSettings::WndProc(UINT msg, WPARAM wparam, LPARAM lparam) diff --git a/packages/media/cpp/src/win/ui_next/res/SplitH.cur b/packages/media/cpp/src/win/ui_next/res/SplitH.cur new file mode 100644 index 00000000..83aac27c Binary files /dev/null and b/packages/media/cpp/src/win/ui_next/res/SplitH.cur differ diff --git a/packages/media/cpp/src/win/ui_next/res/SplitV.cur b/packages/media/cpp/src/win/ui_next/res/SplitV.cur new file mode 100644 index 00000000..06a21969 Binary files /dev/null and b/packages/media/cpp/src/win/ui_next/res/SplitV.cur differ