Merge branch 'axxapy-three_monitors'

This commit is contained in:
spin83
2021-01-24 12:18:06 +01:00
17 changed files with 101 additions and 103 deletions

View File

@@ -36,7 +36,7 @@ const MUTTER_SCHEMA = 'org.gnome.mutter';
const WORKSPACES_ONLY_ON_PRIMARY_ID = 'workspaces-only-on-primary';
const SHOW_INDICATOR_ID = 'show-indicator';
const SHOW_THUMBNAILS_SLIDER_ID = 'show-thumbnails-slider';
const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position';
function copyClass (s, d) {
// global.log(s.name +" > "+ d.name);
@@ -94,57 +94,57 @@ class MultiMonitorsAddOn {
}
_showThumbnailsSlider() {
if (this._settings.get_boolean(SHOW_THUMBNAILS_SLIDER_ID)) {
if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._ov_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false);
if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._mu_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false);
if (this._settings.get_string(THUMBNAILS_SLIDER_POSITION_ID) === 'none') {
this._hideThumbnailsSlider();
return;
}
if (Main.mmOverview)
return;
if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._ov_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false);
if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._mu_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false);
Main.mmOverview = [];
for (let idx = 0; idx < Main.layoutManager.monitors.length; idx++) {
if (idx != Main.layoutManager.primaryIndex) {
Main.mmOverview[idx] = new MMOverview.MultiMonitorsOverview(idx);
}
}
if (Main.mmOverview)
return;
this.syncWorkspacesActualGeometry = Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry;
Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry = function() {
if (this._inWindowFade)
return;
Main.mmOverview = [];
for (let idx = 0; idx < Main.layoutManager.monitors.length; idx++) {
if (idx != Main.layoutManager.primaryIndex) {
Main.mmOverview[idx] = new MMOverview.MultiMonitorsOverview(idx);
}
}
const primaryView = this._getPrimaryView();
if (primaryView) {
primaryView.ease({
...this._actualGeometry,
duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
});
}
this.syncWorkspacesActualGeometry = Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry;
Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry = function() {
if (this._inWindowFade)
return;
for (let idx = 0; idx < Main.mmOverview.length; idx++) {
if (!Main.mmOverview[idx])
continue;
if (!Main.mmOverview[idx]._overview)
continue;
const mmView = Main.mmOverview[idx]._overview._controls._workspacesViews;
if (!mmView)
continue;
const primaryView = this._getPrimaryView();
if (primaryView) {
primaryView.ease({
...this._actualGeometry,
duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
});
}
const mmGeometry = Main.mmOverview[idx].getWorkspacesActualGeometry();
mmView.ease({
...mmGeometry,
duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
});
}
}
}
else {
this._hideThumbnailsSlider();
}
for (let idx = 0; idx < Main.mmOverview.length; idx++) {
if (!Main.mmOverview[idx])
continue;
if (!Main.mmOverview[idx]._overview)
continue;
const mmView = Main.mmOverview[idx]._overview._controls._workspacesViews;
if (!mmView)
continue;
const mmGeometry = Main.mmOverview[idx].getWorkspacesActualGeometry();
mmView.ease({
...mmGeometry,
duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
});
}
}
}
_hideThumbnailsSlider() {
@@ -173,10 +173,9 @@ class MultiMonitorsAddOn {
}
_switchOffThumbnails() {
if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._settings.set_boolean(SHOW_THUMBNAILS_SLIDER_ID, false);
if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID))
this._settings.set_boolean(SHOW_THUMBNAILS_SLIDER_ID, false);
if (this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID) || this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) {
this._settings.set_string(THUMBNAILS_SLIDER_POSITION_ID, 'none');
}
}
enable(version) {
@@ -199,7 +198,7 @@ class MultiMonitorsAddOn {
this._showPanelId = this._settings.connect('changed::'+MMLayout.SHOW_PANEL_ID, Main.mmLayoutManager.showPanel.bind(Main.mmLayoutManager));
Main.mmLayoutManager.showPanel();
this._showThumbnailsSliderId = this._settings.connect('changed::'+SHOW_THUMBNAILS_SLIDER_ID, this._showThumbnailsSlider.bind(this));
this._thumbnailsSliderPositionId = this._settings.connect('changed::'+THUMBNAILS_SLIDER_POSITION_ID, this._showThumbnailsSlider.bind(this));
this._relayoutId = Main.layoutManager.connect('monitors-changed', this._relayout.bind(this));
this._relayout();
}
@@ -210,7 +209,7 @@ class MultiMonitorsAddOn {
this._mu_settings.disconnect(this._switchOffThumbnailsMuId);
this._settings.disconnect(this._showPanelId);
this._settings.disconnect(this._showThumbnailsSliderId);
this._settings.disconnect(this._thumbnailsSliderPositionId);
this._settings.disconnect(this._showIndicatorId);

View File

@@ -65,10 +65,6 @@ msgstr "Anwendungsmenü auf zusätzlichen Monitoren anzeigen"
msgid "Show DateTime-Button on additional monitors."
msgstr "Datum-Zeit auf zusätzlichen Monitoren anzeigen."
#: prefs.js:68
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr "Arbeitsflächenübersicht bei zusätzlichen Monitoren links anzeigen"
#: prefs.js:71
msgid "Enable hot corners."
msgstr ""

View File

@@ -63,11 +63,6 @@ msgstr "Mostrar el menú de aplicaciones en los monitores adicionales."
msgid "Show DateTime-Button on additional monitors."
msgstr "Mostrar la fecha en los monitores adicionales."
#: prefs.js:68
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr ""
"Mostrar las miniaturas en el lado izquierdo de los monitores adicionales."
#: prefs.js:71
msgid "Enable hot corners."
msgstr ""

View File

@@ -66,12 +66,6 @@ msgstr "Afficher le bouton du menu Applications sur les moniteurs secondaires"
msgid "Show DateTime-Button on additional monitors."
msgstr "Afficher le bouton Date-Heure sur les moniteurs secondaires."
#: prefs.js:68
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr ""
"Afficher le dock listant les espaces de travail, sur la gauche pour les "
"moniteurs secondaires"
#: prefs.js:71
msgid "Enable hot corners."
msgstr ""

View File

@@ -65,11 +65,6 @@ msgstr "Visualizza il pulsante del menu Applicazioni sui monitor secondari."
msgid "Show DateTime-Button on additional monitors."
msgstr "Mostra il Bottone Data/Ora sui monitor secondari."
#: prefs.js:68
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr "Visualizza lo slider delle anteprime a sul lato sinistro per i monitor "
"secondari."
#: prefs.js:71
msgid "Enable hot corners."
msgstr ""

View File

@@ -66,10 +66,6 @@ msgstr "Wyświetl przycisk aplikacji na dodatkowych monitorach."
msgid "Show DateTime-Button on additional monitors."
msgstr "Wyświetl przycisk daty i czasu na dodatkowych monitorach."
#: prefs.js:68
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr "Wyświetl pasek miniatur po lewej stronie dla dodatkowych monitorów."
#: prefs.js:71
msgid "Enable hot corners."
msgstr "Włączenie podglądu po najechaniu rogu ekranu."

View File

@@ -39,11 +39,6 @@ msgstr "Mostrar botão de Atividades em monitores adicionais"
msgid "Show AppMenu-Button on additional monitors."
msgstr "Mostrar botão de menu de aplicativos em monitores adicionais"
#: prefs.js:66
msgid "Show Thumbnails-Slider on left side of additional monitors."
msgstr ""
"Mostrar controle deslizante de miniaturas à esquerda de monitores adicionais"
#: prefs.js:67
msgid "Show DateTime-Button on additional monitors."
msgstr "Mostrar o botão de data e hora em monitores adicionais"

View File

@@ -32,7 +32,7 @@ const CE = ExtensionUtils.getCurrentExtension();
const MultiMonitors = CE.imports.extension;
const Convenience = CE.imports.convenience;
const THUMBNAILS_ON_LEFT_SIDE_ID = 'thumbnails-on-left-side';
const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position';
var MultiMonitorsWorkspaceThumbnail = (() => {
let MultiMonitorsWorkspaceThumbnail = class MultiMonitorsWorkspaceThumbnail extends St.Widget {
@@ -362,6 +362,7 @@ class MultiMonitorsControlsManager extends St.Widget {
this._spacer_height = 0;
this._fixGeometry = 0;
this._visible = false;
this._primaryMonitorOnTheLeft = Main.layoutManager.monitors[index].x > Main.layoutManager.primaryMonitor.x;
let layout = new OverviewControls.ControlsLayout();
super._init({
@@ -389,9 +390,9 @@ class MultiMonitorsControlsManager extends St.Widget {
this._group.add_actor(this._thumbnailsSlider);
this._settings = Convenience.getSettings();
this._thumbnailsOnLeftSideId = this._settings.connect('changed::'+THUMBNAILS_ON_LEFT_SIDE_ID,
this._thumbnailsOnLeftSide.bind(this));
this._thumbnailsOnLeftSide();
this._thumbnailsSelectSideId = this._settings.connect('changed::'+THUMBNAILS_SLIDER_POSITION_ID,
this._thumbnailsSelectSide.bind(this));
this._thumbnailsSelectSide();
this._thumbnailsSlider.slideOut();
this._thumbnailsBox._updatePorthole();
@@ -402,14 +403,17 @@ class MultiMonitorsControlsManager extends St.Widget {
_onDestroy() {
Main.overview.viewSelector.disconnect(this._pageChangedId);
Main.overview.viewSelector.disconnect(this._pageEmptyId);
this._settings.disconnect(this._thumbnailsOnLeftSideId);
this._settings.disconnect(this._thumbnailsSelectSideId);
}
_thumbnailsOnLeftSide() {
_thumbnailsSelectSide() {
let thumbnailsSlider;
thumbnailsSlider = this._thumbnailsSlider;
if (this._settings.get_boolean(THUMBNAILS_ON_LEFT_SIDE_ID)) {
let sett = this._settings.get_string(THUMBNAILS_SLIDER_POSITION_ID);
let onLeftSide = sett === 'left' || (sett === 'auto' && this._primaryMonitorOnTheLeft);
if (onLeftSide) {
let first = this._group.get_first_child();
if (first != thumbnailsSlider) {
this._thumbnailsSlider.layout.slideDirection = OverviewControls.SlideDirection.LEFT;

View File

@@ -32,11 +32,10 @@ const Convenience = MultiMonitors.imports.convenience;
const SHOW_INDICATOR_ID = 'show-indicator';
const SHOW_PANEL_ID = 'show-panel';
const SHOW_THUMBNAILS_SLIDER_ID = 'show-thumbnails-slider';
const SHOW_ACTIVITIES_ID = 'show-activities';
const SHOW_APP_MENU_ID = 'show-app-menu';
const SHOW_DATE_TIME_ID = 'show-date-time';
const THUMBNAILS_ON_LEFT_SIDE_ID = 'thumbnails-on-left-side';
const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position';
const AVAILABLE_INDICATORS_ID = 'available-indicators';
const TRANSFER_INDICATORS_ID = 'transfer-indicators';
const ENABLE_HOT_CORNERS = 'enable-hot-corners';
@@ -63,11 +62,15 @@ class MultiMonitorsPrefsWidget extends Gtk.Grid {
this._addBooleanSwitch(_('Show Multi Monitors indicator on Top Panel.'), SHOW_INDICATOR_ID);
this._addBooleanSwitch(_('Show Panel on additional monitors.'), SHOW_PANEL_ID);
this._addBooleanSwitch(_('Show Thumbnails-Slider on additional monitors.'), SHOW_THUMBNAILS_SLIDER_ID);
this._addBooleanSwitch(_('Show Activities-Button on additional monitors.'), SHOW_ACTIVITIES_ID);
this._addBooleanSwitch(_('Show AppMenu-Button on additional monitors.'), SHOW_APP_MENU_ID);
this._addBooleanSwitch(_('Show DateTime-Button on additional monitors.'), SHOW_DATE_TIME_ID);
this._addBooleanSwitch(_('Show Thumbnails-Slider on left side of additional monitors.'), THUMBNAILS_ON_LEFT_SIDE_ID);
this._addComboBoxSwitch(_('Show Thumbnails-Slider on additional monitors.'), THUMBNAILS_SLIDER_POSITION_ID, {
none: _('No'),
right: _('On the right'),
left: _('On the left'),
auto: _('Auto')
});
this._addSettingsBooleanSwitch(_('Enable hot corners.'), this._desktopSettings, ENABLE_HOT_CORNERS);
this._store = new Gtk.ListStore();
@@ -227,6 +230,27 @@ class MultiMonitorsPrefsWidget extends Gtk.Grid {
}
}
_addComboBoxSwitch(label, schema_id, options) {
this._addSettingsComboBoxSwitch(label, this._settings, schema_id, options)
}
_addSettingsComboBoxSwitch(label, settings, schema_id, options) {
let gHBox = new Gtk.HBox({margin: 10, spacing: 20, hexpand: true});
let gLabel = new Gtk.Label({label: _(label), halign: Gtk.Align.START});
gHBox.add(gLabel);
let gCBox = new Gtk.ComboBoxText({halign: Gtk.Align.END});
Object.entries(options).forEach(function(entry) {
const [key, val] = entry;
gCBox.append(key, val);
});
gHBox.add(gCBox);
this.add(gHBox);
settings.bind(schema_id, gCBox, 'active-id', Gio.SettingsBindFlags.DEFAULT);
}
_addBooleanSwitch(label, schema_id) {
this._addSettingsBooleanSwitch(label, this._settings, schema_id);
}

View File

@@ -12,12 +12,6 @@
<summary>Show Panel on additional monitors.</summary>
<description>Add or remove Panel from additional monitors.</description>
</key>
<key name="show-thumbnails-slider" type="b">
<default>true</default>
<summary>Show Thumbnails-Slider on additional monitors.</summary>
<description>Add or remove Thumbnails-Slider from additional monitors.</description>
</key>
<key name="show-activities" type="b">
<default>true</default>
@@ -36,11 +30,17 @@
<summary>Show DateTime-Button on additional monitors.</summary>
<description>Change visibility of DateTime-Button on additional monitors.</description>
</key>
<key name="thumbnails-on-left-side" type="b">
<default>true</default>
<summary>Show Thumbnails-Slider on left side of additional monitors.</summary>
<description>Toggle position of Thumbnails-Slider from right to left on additional monitors.</description>
<key name="thumbnails-slider-position" type="s">
<choices>
<choice value='none'/>
<choice value='right'/>
<choice value='left'/>
<choice value='auto'/>
</choices>
<default>'auto'</default>
<summary>Show Thumbnails-Slider on additional monitors.</summary>
<description>Select position of Thumbnails-Slider on additional monitors.</description>
</key>
<key name="available-indicators" type="as">