From 1cf0212e876526c36254c49ad9c90ad679e5ea14 Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Sat, 12 Jul 2014 15:50:26 -0700 Subject: [PATCH] Manage Layouts: Fix missing entries in the displayed list of layouts This fixes http://rainmeter.net/forum/viewtopic.php?p=101697 --- Library/DialogManage.cpp | 20 +++++++++++++++----- Library/DialogManage.h | 3 +++ Library/Rainmeter.cpp | 2 ++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Library/DialogManage.cpp b/Library/DialogManage.cpp index c9046257..eff83e47 100644 --- a/Library/DialogManage.cpp +++ b/Library/DialogManage.cpp @@ -149,10 +149,6 @@ void DialogManage::Open(const WCHAR* tabName, const WCHAR* param1, const WCHAR* } } -/* -** Updates Skins tab. -** -*/ void DialogManage::UpdateSkins(MeterWindow* meterWindow, bool deleted) { if (c_Dialog && c_Dialog->m_TabSkins.IsInitialized()) @@ -161,6 +157,14 @@ void DialogManage::UpdateSkins(MeterWindow* meterWindow, bool deleted) } } +void DialogManage::UpdateLayouts() +{ + if (c_Dialog && c_Dialog->m_TabLayouts.IsInitialized()) + { + c_Dialog->m_TabLayouts.Update(); + } +} + Dialog::Tab& DialogManage::GetActiveTab() { int sel = TabCtrl_GetCurSel(GetControl(Id_Tab)); @@ -1580,7 +1584,8 @@ void DialogManage::TabLayouts::Create(HWND owner) void DialogManage::TabLayouts::Initialize() { - HWND item = GetControl(Id_List); + HWND item = GetControl(Id_List); + ListBox_ResetContent(item); const std::vector& layouts = GetRainmeter().GetAllLayouts(); for (size_t i = 0, isize = layouts.size(); i < isize; ++i) { @@ -1590,6 +1595,11 @@ void DialogManage::TabLayouts::Initialize() m_Initialized = true; } +void DialogManage::TabLayouts::Update() +{ + Initialize(); +} + INT_PTR DialogManage::TabLayouts::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) diff --git a/Library/DialogManage.h b/Library/DialogManage.h index 1f6709a6..8e61b2b8 100644 --- a/Library/DialogManage.h +++ b/Library/DialogManage.h @@ -39,6 +39,7 @@ public: static void OpenSkin(MeterWindow* meterWindow); static void UpdateSkins(MeterWindow* meterWindow, bool deleted = false); + static void UpdateLayouts(); protected: virtual INT_PTR HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -132,6 +133,8 @@ private: void Create(HWND owner); virtual void Initialize(); + void Update(); + protected: virtual INT_PTR HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); INT_PTR OnCommand(WPARAM wParam, LPARAM lParam); diff --git a/Library/Rainmeter.cpp b/Library/Rainmeter.cpp index 10b708f9..68bc5084 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -1215,6 +1215,8 @@ void Rainmeter::ScanForLayouts() FindClose(hSearch); } + + DialogManage::UpdateLayouts(); } void Rainmeter::ExecuteBang(const WCHAR* bang, std::vector& args, MeterWindow* meterWindow)