From 04ebc4170f215dcf38c85ae189dec6044e494c3a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=BCng?= Date: Mon, 27 Jun 2022 19:48:03 +0200 Subject: [PATCH] Fixed issue #3911: TortoiseGitMerge: "The text is identical ..." dialog causes display issues MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Set the default manager before creating the ribbon. Signed-off-by: Stefan Küng Signed-off-by: Sven Strickroth --- src/Changelog.txt | 1 + src/TortoiseMerge/MainFrm.cpp | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Changelog.txt b/src/Changelog.txt index cd6fc2e6a..a19442fd2 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -26,6 +26,7 @@ Released: unreleased * Fixed issue #3926: TortoiseGitMerge undo/redo can cause window to become unresponsive * Fixed issue #3930: TortoiseGitMerge optimized docking PatchFileView * Fixed issue #3927: Support deleted files for "Compare two files" + * Fixed issue #3911: TortoiseGitMerge: "The text is identical ..." dialog causes display issues = Release 2.13.0.1 = Released: 2022-02-06 diff --git a/src/TortoiseMerge/MainFrm.cpp b/src/TortoiseMerge/MainFrm.cpp index b2b3e04d0..469bce113 100644 --- a/src/TortoiseMerge/MainFrm.cpp +++ b/src/TortoiseMerge/MainFrm.cpp @@ -255,6 +255,10 @@ int CMainFrame::InitRibbon() { if (!m_bUseRibbons) return 0; + if (CTheme::Instance().IsDarkTheme()) + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CThemeMFCVisualManager)); + else + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); if (HRESULT hr = m_pRibbonFramework.CoCreateInstance(__uuidof(UIRibbonFramework)); FAILED(hr)) { @@ -277,7 +281,13 @@ int CMainFrame::InitRibbon() return -1; // fail to create } - m_themeCallbackId = CTheme::Instance().RegisterThemeChangeCallback([this]() { SetTheme(CTheme::Instance().IsDarkTheme()); }); + m_themeCallbackId = CTheme::Instance().RegisterThemeChangeCallback([this]() + { + if (CTheme::Instance().IsDarkTheme() || CTheme::Instance().IsHighContrastModeDark()) + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CThemeMFCVisualManager)); + else + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + SetTheme(CTheme::Instance().IsDarkTheme());}); SetTheme(CTheme::Instance().IsDarkTheme()); BuildRegexSubitems(); @@ -366,7 +376,14 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) } m_wndStatusBar.EnablePaneDoubleClick(); - m_themeCallbackId = CTheme::Instance().RegisterThemeChangeCallback([this]() { SetTheme(CTheme::Instance().IsDarkTheme());}); + m_themeCallbackId = CTheme::Instance().RegisterThemeChangeCallback([this]() + { + if (CTheme::Instance().IsDarkTheme() || CTheme::Instance().IsHighContrastModeDark()) + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CThemeMFCVisualManager)); + else + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + SetTheme(CTheme::Instance().IsDarkTheme()); + }); SetTheme(CTheme::Instance().IsDarkTheme()); } @@ -1346,10 +1363,7 @@ void CMainFrame::SetTheme(bool bDark) DarkModeHelper::Instance().SetWindowCompositionAttribute(*this, &data); DarkModeHelper::Instance().FlushMenuThemes(); DarkModeHelper::Instance().RefreshImmersiveColorPolicyState(); - CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); } - if (bDark || CTheme::Instance().IsHighContrastModeDark()) - CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CThemeMFCVisualManager)); ::RedrawWindow(GetSafeHwnd(), nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE | RDW_ERASE | RDW_INTERNALPAINT | RDW_ALLCHILDREN | RDW_UPDATENOW); } -- 2.11.4.GIT