Add display spacing control
This commit is contained in:
parent
23b9f6a445
commit
0af1b89a4f
|
|
@ -22,5 +22,12 @@
|
||||||
<label>Zoom on Focus Enabled</label>
|
<label>Zoom on Focus Enabled</label>
|
||||||
<description>Enable zooming in on the focused display.</description>
|
<description>Enable zooming in on the focused display.</description>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry name="DisplaySpacing" type="Int">
|
||||||
|
<default>0</default>
|
||||||
|
<min>0</min>
|
||||||
|
<max>100</max>
|
||||||
|
<label>Display Spacing</label>
|
||||||
|
<description>How far apart the displays are visually (not logically)</description>
|
||||||
|
</entry>
|
||||||
</group>
|
</group>
|
||||||
</kcfg>
|
</kcfg>
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,7 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
|
||||||
BreezyDesktopConfig::self()->read();
|
BreezyDesktopConfig::self()->read();
|
||||||
setFocusedDisplayDistance(BreezyDesktopConfig::focusedDisplayDistance() / 100.0f);
|
setFocusedDisplayDistance(BreezyDesktopConfig::focusedDisplayDistance() / 100.0f);
|
||||||
setAllDisplaysDistance(BreezyDesktopConfig::allDisplaysDistance() / 100.0f);
|
setAllDisplaysDistance(BreezyDesktopConfig::allDisplaysDistance() / 100.0f);
|
||||||
|
setDisplaySpacing(BreezyDesktopConfig::displaySpacing() / 1000.0f);
|
||||||
setZoomOnFocusEnabled(BreezyDesktopConfig::zoomOnFocusEnabled());
|
setZoomOnFocusEnabled(BreezyDesktopConfig::zoomOnFocusEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -312,6 +313,17 @@ void BreezyDesktopEffect::setAllDisplaysDistance(qreal distance) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qreal BreezyDesktopEffect::displaySpacing() const {
|
||||||
|
return m_displaySpacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreezyDesktopEffect::setDisplaySpacing(qreal spacing) {
|
||||||
|
if (spacing != m_displaySpacing) {
|
||||||
|
m_displaySpacing = spacing;
|
||||||
|
Q_EMIT displaySpacingChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
qreal BreezyDesktopEffect::diagonalFOV() const {
|
qreal BreezyDesktopEffect::diagonalFOV() const {
|
||||||
return m_diagonalFOV;
|
return m_diagonalFOV;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ namespace KWin
|
||||||
Q_PROPERTY(QList<quint32> displayResolution READ displayResolution NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(QList<quint32> displayResolution READ displayResolution NOTIFY devicePropertiesChanged)
|
||||||
Q_PROPERTY(qreal focusedDisplayDistance READ focusedDisplayDistance NOTIFY displayDistanceChanged)
|
Q_PROPERTY(qreal focusedDisplayDistance READ focusedDisplayDistance NOTIFY displayDistanceChanged)
|
||||||
Q_PROPERTY(qreal allDisplaysDistance READ allDisplaysDistance NOTIFY displayDistanceChanged)
|
Q_PROPERTY(qreal allDisplaysDistance READ allDisplaysDistance NOTIFY displayDistanceChanged)
|
||||||
|
Q_PROPERTY(qreal displaySpacing READ displaySpacing NOTIFY displaySpacingChanged)
|
||||||
Q_PROPERTY(qreal diagonalFOV READ diagonalFOV NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(qreal diagonalFOV READ diagonalFOV NOTIFY devicePropertiesChanged)
|
||||||
Q_PROPERTY(qreal lensDistanceRatio READ lensDistanceRatio NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(qreal lensDistanceRatio READ lensDistanceRatio NOTIFY devicePropertiesChanged)
|
||||||
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
|
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
|
||||||
|
|
@ -55,6 +56,8 @@ namespace KWin
|
||||||
void setFocusedDisplayDistance(qreal distance);
|
void setFocusedDisplayDistance(qreal distance);
|
||||||
qreal allDisplaysDistance() const;
|
qreal allDisplaysDistance() const;
|
||||||
void setAllDisplaysDistance(qreal distance);
|
void setAllDisplaysDistance(qreal distance);
|
||||||
|
qreal displaySpacing() const;
|
||||||
|
void setDisplaySpacing(qreal spacing);
|
||||||
qreal diagonalFOV() const;
|
qreal diagonalFOV() const;
|
||||||
qreal lensDistanceRatio() const;
|
qreal lensDistanceRatio() const;
|
||||||
bool sbsEnabled() const;
|
bool sbsEnabled() const;
|
||||||
|
|
@ -75,6 +78,7 @@ namespace KWin
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void displayDistanceChanged();
|
void displayDistanceChanged();
|
||||||
|
void displaySpacingChanged();
|
||||||
void enabledStateChanged();
|
void enabledStateChanged();
|
||||||
void zoomOnFocusChanged();
|
void zoomOnFocusChanged();
|
||||||
void imuRotationsChanged();
|
void imuRotationsChanged();
|
||||||
|
|
@ -112,6 +116,7 @@ namespace KWin
|
||||||
QTimer *m_cursorUpdateTimer = nullptr;
|
QTimer *m_cursorUpdateTimer = nullptr;
|
||||||
qreal m_focusedDisplayDistance = 0.85;
|
qreal m_focusedDisplayDistance = 0.85;
|
||||||
qreal m_allDisplaysDistance = 1.05;
|
qreal m_allDisplaysDistance = 1.05;
|
||||||
|
qreal m_displaySpacing = 0.0;
|
||||||
QList<Output *> m_virtualOutputs;
|
QList<Output *> m_virtualOutputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu
|
||||||
connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged);
|
connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged);
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
BreezyDesktopEffectConfig::~BreezyDesktopEffectConfig()
|
BreezyDesktopEffectConfig::~BreezyDesktopEffectConfig()
|
||||||
|
|
@ -108,6 +109,7 @@ void BreezyDesktopEffectConfig::updateUiFromConfig()
|
||||||
{
|
{
|
||||||
ui.kcfg_FocusedDisplayDistance->setValue(BreezyDesktopConfig::self()->focusedDisplayDistance());
|
ui.kcfg_FocusedDisplayDistance->setValue(BreezyDesktopConfig::self()->focusedDisplayDistance());
|
||||||
ui.kcfg_AllDisplaysDistance->setValue(BreezyDesktopConfig::self()->allDisplaysDistance());
|
ui.kcfg_AllDisplaysDistance->setValue(BreezyDesktopConfig::self()->allDisplaysDistance());
|
||||||
|
ui.kcfg_DisplaySpacing->setValue(BreezyDesktopConfig::self()->displaySpacing());
|
||||||
ui.kcfg_ZoomOnFocusEnabled->setChecked(BreezyDesktopConfig::self()->zoomOnFocusEnabled());
|
ui.kcfg_ZoomOnFocusEnabled->setChecked(BreezyDesktopConfig::self()->zoomOnFocusEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,24 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="labelDisplaySpacing">
|
||||||
|
<property name="text">
|
||||||
|
<string>Display Spacing:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QSlider" name="kcfg_DisplaySpacing">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tracking">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
<widget class="KShortcutsEditor" name="shortcutsEditor" native="true">
|
<widget class="KShortcutsEditor" name="shortcutsEditor" native="true">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,6 @@ Item {
|
||||||
property var fovDetails: displays.fovDetails(screens, viewportResolution[0], viewportResolution[1], viewportDiagonalFOVDegrees, effect.lensDistanceRatio)
|
property var fovDetails: displays.fovDetails(screens, viewportResolution[0], viewportResolution[1], viewportDiagonalFOVDegrees, effect.lensDistanceRatio)
|
||||||
|
|
||||||
property var monitorPlacements: {
|
property var monitorPlacements: {
|
||||||
const monitorSpacing = 0.0;
|
|
||||||
const adjustedGeometries = screens.map(screen => {
|
const adjustedGeometries = screens.map(screen => {
|
||||||
const g = screen.geometry;
|
const g = screen.geometry;
|
||||||
return {
|
return {
|
||||||
|
|
@ -74,7 +73,7 @@ Item {
|
||||||
height: g.height
|
height: g.height
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
return displays.monitorsToPlacements(fovDetails, adjustedGeometries, monitorSpacing);
|
return displays.monitorsToPlacements(fovDetails, adjustedGeometries, effect.displaySpacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue