forked from qt-creator/qt-creator
Guard: Make it possible to lock/unlock manually
Use it in some KitAspectWidget subclasses. Change-Id: Ie683d5af6a44d0042456418af729a3d718396803 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -97,6 +97,17 @@ bool Guard::isLocked() const
|
||||
return m_lockCount;
|
||||
}
|
||||
|
||||
void Guard::lock()
|
||||
{
|
||||
++m_lockCount;
|
||||
}
|
||||
|
||||
void Guard::unlock()
|
||||
{
|
||||
QTC_CHECK(m_lockCount > 0);
|
||||
--m_lockCount;
|
||||
}
|
||||
|
||||
GuardLocker::GuardLocker(Guard &guard)
|
||||
: m_guard(guard)
|
||||
{
|
||||
|
||||
@@ -38,6 +38,12 @@ public:
|
||||
Guard();
|
||||
~Guard();
|
||||
bool isLocked() const;
|
||||
|
||||
// Prefer using GuardLocker when possible. These two methods are provided only for cases
|
||||
// when locking and unlocking are done in separate methods, so that GuardLocker can't be
|
||||
// used.
|
||||
void lock();
|
||||
void unlock();
|
||||
private:
|
||||
int m_lockCount = 0;
|
||||
friend class GuardLocker;
|
||||
|
||||
@@ -946,23 +946,23 @@ private:
|
||||
void modelAboutToReset()
|
||||
{
|
||||
m_selectedId = m_model->deviceId(m_comboBox->currentIndex());
|
||||
m_ignoreChange = true;
|
||||
m_ignoreChanges.lock();
|
||||
}
|
||||
|
||||
void modelReset()
|
||||
{
|
||||
m_comboBox->setCurrentIndex(m_model->indexForId(m_selectedId));
|
||||
m_ignoreChange = false;
|
||||
m_ignoreChanges.unlock();
|
||||
}
|
||||
|
||||
void currentDeviceChanged()
|
||||
{
|
||||
if (m_ignoreChange)
|
||||
if (m_ignoreChanges.isLocked())
|
||||
return;
|
||||
DeviceKitAspect::setDeviceId(m_kit, m_model->deviceId(m_comboBox->currentIndex()));
|
||||
}
|
||||
|
||||
bool m_ignoreChange = false;
|
||||
Guard m_ignoreChanges;
|
||||
QComboBox *m_comboBox;
|
||||
QWidget *m_manageButton;
|
||||
DeviceManagerModel *m_model;
|
||||
@@ -1218,23 +1218,23 @@ private:
|
||||
void modelAboutToReset()
|
||||
{
|
||||
m_selectedId = m_model->deviceId(m_comboBox->currentIndex());
|
||||
m_ignoreChange = true;
|
||||
m_ignoreChanges.lock();
|
||||
}
|
||||
|
||||
void modelReset()
|
||||
{
|
||||
m_comboBox->setCurrentIndex(m_model->indexForId(m_selectedId));
|
||||
m_ignoreChange = false;
|
||||
m_ignoreChanges.unlock();
|
||||
}
|
||||
|
||||
void currentDeviceChanged()
|
||||
{
|
||||
if (m_ignoreChange)
|
||||
if (m_ignoreChanges.isLocked())
|
||||
return;
|
||||
BuildDeviceKitAspect::setDeviceId(m_kit, m_model->deviceId(m_comboBox->currentIndex()));
|
||||
}
|
||||
|
||||
bool m_ignoreChange = false;
|
||||
Guard m_ignoreChanges;
|
||||
QComboBox *m_comboBox;
|
||||
QWidget *m_manageButton;
|
||||
DeviceManagerModel *m_model;
|
||||
|
||||
Reference in New Issue
Block a user