Add "remove virtual displays on disable" option
This commit is contained in:
parent
35e2b2d71d
commit
c2d36383b5
|
|
@ -57,5 +57,10 @@
|
||||||
<label>Antialiasing Quality</label>
|
<label>Antialiasing Quality</label>
|
||||||
<description>0=None, 1=Medium, 2=High, 3=Very High</description>
|
<description>0=None, 1=Medium, 2=High, 3=Very High</description>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry name="RemoveVirtualDisplaysOnDisable" type="Bool">
|
||||||
|
<default>true</default>
|
||||||
|
<label>Remove virtual displays on disable</label>
|
||||||
|
<description>Whether to remove any virtual displays when the effect is disabled</description>
|
||||||
|
</entry>
|
||||||
</group>
|
</group>
|
||||||
</kcfg>
|
</kcfg>
|
||||||
|
|
|
||||||
|
|
@ -204,11 +204,13 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
|
||||||
qreal vert = BreezyDesktopConfig::displayVerticalOffset() / 100.0f;
|
qreal vert = BreezyDesktopConfig::displayVerticalOffset() / 100.0f;
|
||||||
int wrap = BreezyDesktopConfig::displayWrappingScheme();
|
int wrap = BreezyDesktopConfig::displayWrappingScheme();
|
||||||
int aaQuality = BreezyDesktopConfig::antialiasingQuality();
|
int aaQuality = BreezyDesktopConfig::antialiasingQuality();
|
||||||
|
bool removeVD = BreezyDesktopConfig::removeVirtualDisplaysOnDisable();
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
if (!qFuzzyCompare(m_displayHorizontalOffset, horiz)) { m_displayHorizontalOffset = horiz; changed = true; }
|
if (!qFuzzyCompare(m_displayHorizontalOffset, horiz)) { m_displayHorizontalOffset = horiz; changed = true; }
|
||||||
if (!qFuzzyCompare(m_displayVerticalOffset, vert)) { m_displayVerticalOffset = vert; changed = true; }
|
if (!qFuzzyCompare(m_displayVerticalOffset, vert)) { m_displayVerticalOffset = vert; changed = true; }
|
||||||
if (m_displayWrappingScheme != wrap) { m_displayWrappingScheme = wrap; Q_EMIT displayWrappingSchemeChanged(); }
|
if (m_displayWrappingScheme != wrap) { m_displayWrappingScheme = wrap; Q_EMIT displayWrappingSchemeChanged(); }
|
||||||
if (m_antialiasingQuality != aaQuality) { m_antialiasingQuality = aaQuality; Q_EMIT antialiasingQualityChanged(); }
|
if (m_antialiasingQuality != aaQuality) { m_antialiasingQuality = aaQuality; Q_EMIT antialiasingQualityChanged(); }
|
||||||
|
if (m_removeVirtualDisplaysOnDisable != removeVD) { m_removeVirtualDisplaysOnDisable = removeVD; Q_EMIT removeVirtualDisplaysOnDisableChanged(); }
|
||||||
if (changed) Q_EMIT displayOffsetChanged();
|
if (changed) Q_EMIT displayOffsetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -260,10 +262,12 @@ void BreezyDesktopEffect::deactivate()
|
||||||
m_cursorUpdateTimer->stop();
|
m_cursorUpdateTimer->stop();
|
||||||
showCursor();
|
showCursor();
|
||||||
|
|
||||||
for (auto output : m_virtualOutputs) {
|
if (m_removeVirtualDisplaysOnDisable) {
|
||||||
KWin::kwinApp()->outputBackend()->removeVirtualOutput(output);
|
for (auto output : m_virtualOutputs) {
|
||||||
|
KWin::kwinApp()->outputBackend()->removeVirtualOutput(output);
|
||||||
|
}
|
||||||
|
m_virtualOutputs.clear();
|
||||||
}
|
}
|
||||||
m_virtualOutputs.clear();
|
|
||||||
|
|
||||||
setRunning(false);
|
setRunning(false);
|
||||||
}
|
}
|
||||||
|
|
@ -414,6 +418,10 @@ int BreezyDesktopEffect::antialiasingQuality() const {
|
||||||
return m_antialiasingQuality;
|
return m_antialiasingQuality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BreezyDesktopEffect::removeVirtualDisplaysOnDisable() const {
|
||||||
|
return m_removeVirtualDisplaysOnDisable;
|
||||||
|
}
|
||||||
|
|
||||||
bool BreezyDesktopEffect::checkParityByte(const char* data) {
|
bool BreezyDesktopEffect::checkParityByte(const char* data) {
|
||||||
const uint8_t parityByte = static_cast<uint8_t>(data[DataView::IMU_PARITY_BYTE[DataView::OFFSET_INDEX]]);
|
const uint8_t parityByte = static_cast<uint8_t>(data[DataView::IMU_PARITY_BYTE[DataView::OFFSET_INDEX]]);
|
||||||
uint8_t parity = 0;
|
uint8_t parity = 0;
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ namespace KWin
|
||||||
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
|
||||||
Q_PROPERTY(bool customBannerEnabled READ customBannerEnabled NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(bool customBannerEnabled READ customBannerEnabled NOTIFY devicePropertiesChanged)
|
||||||
Q_PROPERTY(int antialiasingQuality READ antialiasingQuality NOTIFY antialiasingQualityChanged)
|
Q_PROPERTY(int antialiasingQuality READ antialiasingQuality NOTIFY antialiasingQualityChanged)
|
||||||
|
Q_PROPERTY(bool removeVirtualDisplaysOnDisable READ removeVirtualDisplaysOnDisable NOTIFY removeVirtualDisplaysOnDisableChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -73,6 +74,7 @@ namespace KWin
|
||||||
bool sbsEnabled() const;
|
bool sbsEnabled() const;
|
||||||
bool customBannerEnabled() const;
|
bool customBannerEnabled() const;
|
||||||
int antialiasingQuality() const;
|
int antialiasingQuality() const;
|
||||||
|
bool removeVirtualDisplaysOnDisable() const;
|
||||||
|
|
||||||
void showCursor();
|
void showCursor();
|
||||||
void hideCursor();
|
void hideCursor();
|
||||||
|
|
@ -101,6 +103,7 @@ namespace KWin
|
||||||
void cursorPosChanged();
|
void cursorPosChanged();
|
||||||
void devicePropertiesChanged();
|
void devicePropertiesChanged();
|
||||||
void antialiasingQualityChanged();
|
void antialiasingQualityChanged();
|
||||||
|
void removeVirtualDisplaysOnDisableChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QVariantMap initialProperties(Output *screen) override;
|
QVariantMap initialProperties(Output *screen) override;
|
||||||
|
|
@ -138,6 +141,7 @@ namespace KWin
|
||||||
qreal m_displayVerticalOffset = 0.0;
|
qreal m_displayVerticalOffset = 0.0;
|
||||||
int m_displayWrappingScheme = 0; // 0=auto,1=horizontal,2=vertical,3=flat
|
int m_displayWrappingScheme = 0; // 0=auto,1=horizontal,2=vertical,3=flat
|
||||||
int m_antialiasingQuality = 3; // 0=None, 1=Medium, 2=High, 3=VeryHigh
|
int m_antialiasingQuality = 3; // 0=None, 1=Medium, 2=High, 3=VeryHigh
|
||||||
|
bool m_removeVirtualDisplaysOnDisable = true;
|
||||||
QList<Output *> m_virtualOutputs;
|
QList<Output *> m_virtualOutputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,10 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu
|
||||||
row->setVisible(true);
|
row->setVisible(true);
|
||||||
row->setEnabled(true);
|
row->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
if (auto chk = widget()->findChild<QWidget*>(QStringLiteral("kcfg_RemoveVirtualDisplaysOnDisable"))) {
|
||||||
|
chk->setVisible(true);
|
||||||
|
chk->setEnabled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_statePollTimer.setInterval(2000);
|
m_statePollTimer.setInterval(2000);
|
||||||
|
|
@ -93,6 +97,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu
|
||||||
addShortcutAction(actionCollection, BreezyShortcuts::TOGGLE_ZOOM_ON_FOCUS);
|
addShortcutAction(actionCollection, BreezyShortcuts::TOGGLE_ZOOM_ON_FOCUS);
|
||||||
ui.shortcutsEditor->addCollection(actionCollection);
|
ui.shortcutsEditor->addCollection(actionCollection);
|
||||||
connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged);
|
connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged);
|
||||||
|
connect(ui.kcfg_ZoomOnFocusEnabled, &QCheckBox::toggled, this, &BreezyDesktopEffectConfig::save);
|
||||||
connect(ui.kcfg_FocusedDisplayDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_FocusedDisplayDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
||||||
connect(ui.kcfg_AllDisplaysDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_AllDisplaysDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
||||||
connect(ui.kcfg_DisplaySpacing, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_DisplaySpacing, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
||||||
|
|
@ -100,6 +105,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu
|
||||||
connect(ui.kcfg_DisplayVerticalOffset, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_DisplayVerticalOffset, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
|
||||||
connect(ui.kcfg_DisplayWrappingScheme, qOverload<int>(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_DisplayWrappingScheme, qOverload<int>(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save);
|
||||||
connect(ui.kcfg_AntialiasingQuality, qOverload<int>(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save);
|
connect(ui.kcfg_AntialiasingQuality, qOverload<int>(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save);
|
||||||
|
connect(ui.kcfg_RemoveVirtualDisplaysOnDisable, &QCheckBox::toggled, this, &BreezyDesktopEffectConfig::save);
|
||||||
|
|
||||||
if (auto label = widget()->findChild<QLabel*>("labelAppNameVersion")) {
|
if (auto label = widget()->findChild<QLabel*>("labelAppNameVersion")) {
|
||||||
label->setText(QStringLiteral("Breezy Desktop - v%1").arg(QLatin1String(BREEZY_DESKTOP_VERSION_STR)));
|
label->setText(QStringLiteral("Breezy Desktop - v%1").arg(QLatin1String(BREEZY_DESKTOP_VERSION_STR)));
|
||||||
|
|
@ -219,6 +225,7 @@ void BreezyDesktopEffectConfig::updateUiFromConfig()
|
||||||
ui.kcfg_DisplayVerticalOffset->setValue(BreezyDesktopConfig::self()->displayVerticalOffset());
|
ui.kcfg_DisplayVerticalOffset->setValue(BreezyDesktopConfig::self()->displayVerticalOffset());
|
||||||
ui.kcfg_DisplayWrappingScheme->setCurrentIndex(BreezyDesktopConfig::self()->displayWrappingScheme());
|
ui.kcfg_DisplayWrappingScheme->setCurrentIndex(BreezyDesktopConfig::self()->displayWrappingScheme());
|
||||||
ui.kcfg_AntialiasingQuality->setCurrentIndex(BreezyDesktopConfig::self()->antialiasingQuality());
|
ui.kcfg_AntialiasingQuality->setCurrentIndex(BreezyDesktopConfig::self()->antialiasingQuality());
|
||||||
|
ui.kcfg_RemoveVirtualDisplaysOnDisable->setChecked(BreezyDesktopConfig::self()->removeVirtualDisplaysOnDisable());
|
||||||
ui.kcfg_ZoomOnFocusEnabled->setChecked(BreezyDesktopConfig::self()->zoomOnFocusEnabled());
|
ui.kcfg_ZoomOnFocusEnabled->setChecked(BreezyDesktopConfig::self()->zoomOnFocusEnabled());
|
||||||
ui.kcfg_FocusedDisplayDistance->setEnabled(ui.kcfg_ZoomOnFocusEnabled->isChecked());
|
ui.kcfg_FocusedDisplayDistance->setEnabled(ui.kcfg_ZoomOnFocusEnabled->isChecked());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -308,6 +308,20 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="kcfg_RemoveVirtualDisplaysOnDisable">
|
||||||
|
<property name="visible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove virtual displays on disable</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked"><bool>true</bool></property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tabLicenseDetails">
|
<widget class="QWidget" name="tabLicenseDetails">
|
||||||
|
|
@ -321,10 +335,10 @@
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="visible">
|
<property name="visible">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue