commit 3abf7230a4b3cfbf41c02d1845d4fe14d22e900b
parent 5fa1a0f64992a7abd95627edeb421aa6bbba5937
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 6 Jun 2016 23:59:32 -0400
import: close automatic manager if import is cancelled
Diffstat:
5 files changed, 19 insertions(+), 24 deletions(-)
diff --git a/src/dialog.cpp b/src/dialog.cpp
@@ -65,11 +65,6 @@ WDL_DLGRET Dialog::Proc(HWND handle, UINT msg, WPARAM wParam, LPARAM lParam)
else
dlg->onHide();
break;
-#ifdef WM_ENABLE
- case WM_ENABLE: // not supported by SWELL
- dlg->m_isEnabled = wParam == 1;
- break;
-#endif
case WM_TIMER:
dlg->onTimer((int)wParam);
break;
@@ -110,7 +105,7 @@ int Dialog::HandleKey(MSG *msg, accelerator_register_t *accel)
}
Dialog::Dialog(const int templateId)
- : m_template(templateId), m_isVisible(false), m_isEnabled(true),
+ : m_template(templateId), m_isVisible(false),
m_instance(nullptr), m_parent(nullptr), m_handle(nullptr)
{
m_accel.translateAccel = HandleKey;
diff --git a/src/dialog.hpp b/src/dialog.hpp
@@ -68,9 +68,6 @@ public:
HWND parent() const { return m_parent; }
HWND handle() const { return m_handle; }
- bool isVisible() const { return m_isVisible; }
- bool isEnabled() const { return m_isEnabled; }
-
void enable() { enable(m_handle); }
void enable(HWND handle) { setEnabled(true, handle); }
void disable() { disable(m_handle); }
@@ -78,12 +75,14 @@ public:
void setEnabled(bool enable) { setEnabled(enable, m_handle); }
void setEnabled(bool, HWND);
+ bool isVisible() const { return m_isVisible; }
void show() { show(m_handle); }
void show(HWND handle) { setVisible(true, handle); }
void hide() { hide(m_handle); }
void hide(HWND handle) { setVisible(false, handle); }
void setVisible(bool visible) { setVisible(visible, m_handle); }
void setVisible(bool, HWND);
+
void close(INT_PTR = 0);
void center();
bool hasFocus() const;
@@ -137,7 +136,6 @@ private:
const int m_template;
bool m_isVisible;
- bool m_isEnabled;
Modality m_mode;
REAPER_PLUGIN_HINSTANCE m_instance;
@@ -154,21 +152,20 @@ private:
class LockDialog {
public:
LockDialog(Dialog *dlg)
- : m_dialog(dlg), m_enabled(dlg && dlg->isEnabled())
+ : m_dialog(dlg)
{
- if(m_enabled)
+ if(m_dialog)
m_dialog->disable();
}
~LockDialog()
{
- if(m_enabled)
+ if(m_dialog)
m_dialog->enable();
}
private:
Dialog *m_dialog;
- bool m_enabled;
};
#endif
diff --git a/src/manager.cpp b/src/manager.cpp
@@ -66,12 +66,7 @@ void Manager::onCommand(const int id, int)
{
switch(id) {
case IDC_IMPORT:
- if(m_importing) // avoid opening the import dialog twice on windows
- break;
-
- m_importing = true;
- Dialog::Show<Import>(instance(), handle(), m_reapack);
- m_importing = false;
+ import();
break;
case IDC_BROWSE:
launchBrowser();
@@ -330,9 +325,16 @@ void Manager::copyUrl(const int index)
setClipboard(remote.url());
}
-void Manager::triggerImport()
+bool Manager::import()
{
- SendMessage(handle(), WM_COMMAND, IDC_IMPORT, 0);
+ if(m_importing) // avoid opening the import dialog twice on windows
+ return true;
+
+ m_importing = true;
+ const auto ret = Dialog::Show<Import>(instance(), handle(), m_reapack);
+ m_importing = false;
+
+ return ret != 0;
}
void Manager::launchBrowser()
diff --git a/src/manager.hpp b/src/manager.hpp
@@ -35,7 +35,7 @@ public:
Manager(ReaPack *);
void refresh();
- void triggerImport();
+ bool import();
protected:
void onInit() override;
diff --git a/src/reapack.cpp b/src/reapack.cpp
@@ -194,7 +194,8 @@ void ReaPack::uninstall(const Remote &remote)
void ReaPack::importRemote()
{
manageRemotes();
- m_manager->triggerImport();
+ if(!m_manager->import())
+ m_manager->close();
}
void ReaPack::manageRemotes()