reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 133831039a4cc180cfa375d403105bdbd094c643
parent 6aa209494ee8c01bdf5d3e601674366ba04e5163
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue,  2 Feb 2016 03:27:05 -0500

mild refactoring

Diffstat:
Msrc/about.cpp | 3+--
Msrc/control.hpp | 17+++++++++++++++++
Msrc/dialog.hpp | 20++++++++++++++++++++
Msrc/reapack.cpp | 6+-----
Msrc/richedit.mm | 3+--
5 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/src/about.cpp b/src/about.cpp @@ -129,7 +129,7 @@ void About::updatePackages() else pkgList = &m_index->category(catIndex)->packages(); - m_packages->inhibitRedraw(true); + InhibitControl lock(m_packages); m_packages->clear(); for(Package *pkg : *pkgList) { @@ -143,5 +143,4 @@ void About::updatePackages() } m_currentCat = catIndex; - m_packages->inhibitRedraw(false); } diff --git a/src/control.hpp b/src/control.hpp @@ -49,4 +49,21 @@ private: HWND m_handle; }; +class InhibitControl { +public: + InhibitControl(Control *ctrl) + : m_control(ctrl) + { + m_control->inhibitRedraw(true); + } + + ~InhibitControl() + { + m_control->inhibitRedraw(false); + } + +private: + Control *m_control; +}; + #endif diff --git a/src/dialog.hpp b/src/dialog.hpp @@ -122,4 +122,24 @@ private: std::map<int, Control *> m_controls; }; +class LockDialog { +public: + LockDialog(Dialog *dlg) + : m_dialog(dlg), m_enabled(dlg->isEnabled()) + { + if(m_enabled) + m_dialog->disable(); + } + + ~LockDialog() + { + if(m_enabled) + m_dialog->enable(); + } + +private: + Dialog *m_dialog; + bool m_enabled; +}; + #endif diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -262,16 +262,12 @@ Transaction *ReaPack::createTransaction() if(m_transaction->isCancelled() || !m_transaction->isReportEnabled()) return; - const bool wasManagerEnabled = m_manager->isEnabled(); - m_manager->disable(); + LockDialog lock(m_manager); if(m_transaction->taskCount() == 0 && m_transaction->errors().empty()) ShowMessageBox("Nothing to do!", "ReaPack", 0); else Dialog::Show<Report>(m_instance, m_mainWindow, m_transaction); - - if(wasManagerEnabled) - m_manager->enable(); }); m_transaction->onDestroy([=] { diff --git a/src/richedit.mm b/src/richedit.mm @@ -57,9 +57,8 @@ bool RichEdit::setRichText(const string &rtf) withRTF: [str dataUsingEncoding: NSUTF8StringEncoding] ]; - const BOOL isEditable = textView.isEditable; - // auto-detect links, equivalent to Windows' EM_AUTOURLDETECT message + const BOOL isEditable = textView.isEditable; [textView setEditable:YES]; [textView setEnabledTextCheckingTypes:NSTextCheckingTypeLink]; [textView checkTextInDocument:nil];