Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/Objects/MonitorManager.vala
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@ public class Display.MonitorManager : GLib.Object {
critical (e.message);
}

// Clear all monitors and virtual monitors before re-adding them if needed
monitors.clear ();
virtual_monitors.clear ();

//TODO: make use of the "global-scale-required" property to differenciate between X and Wayland
var supports_mirroring_variant = properties.lookup ("supports-mirroring");
if (supports_mirroring_variant != null) {
Expand Down Expand Up @@ -188,7 +192,6 @@ public class Display.MonitorManager : GLib.Object {
var virtual_monitor = get_virtual_monitor_by_id (monitors_id);
if (virtual_monitor == null) {
virtual_monitor = new VirtualMonitor ();
add_virtual_monitor (virtual_monitor);
}

foreach (var mutter_info in mutter_logical_monitor.monitors) {
Expand All @@ -214,6 +217,7 @@ public class Display.MonitorManager : GLib.Object {
virtual_monitor.scale = mutter_logical_monitor.scale;
virtual_monitor.transform = mutter_logical_monitor.transform;
virtual_monitor.primary = mutter_logical_monitor.primary;
add_virtual_monitor (virtual_monitor);
}

// Look for any monitors that aren't part of a virtual monitor (hence disabled)
Expand All @@ -229,11 +233,11 @@ public class Display.MonitorManager : GLib.Object {

if (!found) {
var virtual_monitor = new VirtualMonitor ();
add_virtual_monitor (virtual_monitor);
virtual_monitor.is_active = false;
virtual_monitor.primary = false;
virtual_monitor.monitors.add (monitor);
virtual_monitor.scale = virtual_monitors[0].scale;
add_virtual_monitor (virtual_monitor);
}
}
}
Expand Down
22 changes: 14 additions & 8 deletions src/Views/DisplaysView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
public class Display.DisplaysView : Gtk.Box {
public DisplaysOverlay displays_overlay;

private Gtk.ComboBoxText dpi_combo;
private Gtk.DropDown dpi_combo;
private Gtk.Box rotation_lock_box;

private const string TOUCHSCREEN_SETTINGS_PATH = "org.gnome.settings-daemon.peripherals.touchscreen";
Expand All @@ -34,10 +34,16 @@ public class Display.DisplaysView : Gtk.Box {

var dpi_label = new Gtk.Label (_("Scaling factor:"));

dpi_combo = new Gtk.ComboBoxText ();
dpi_combo.append_text (_("LoDPI") + " (1×)");
dpi_combo.append_text (_("HiDPI") + " (2×)");
dpi_combo.append_text (_("HiDPI") + " (3×)");
var dpi_dropdown_options = new string[3] {
_("LoDPI") + " (1×)",
_("HiDPI") + " (2×)",
_("HiDPI") + " (3×)"
};

dpi_combo = new Gtk.DropDown (new Gtk.StringList (dpi_dropdown_options), null);
//dpi_combo.append_text (_("LoDPI") + " (1×)");
//dpi_combo.append_text (_("HiDPI") + " (2×)");
//dpi_combo.append_text (_("HiDPI") + " (3×)");

var dpi_box = new Gtk.Box (HORIZONTAL, 6) {
margin_top = 6,
Expand Down Expand Up @@ -130,11 +136,11 @@ public class Display.DisplaysView : Gtk.Box {
apply_button.sensitive = false;
});

dpi_combo.active = (int)monitor_manager.virtual_monitors[0].scale - 1;
dpi_combo.selected = (int)monitor_manager.virtual_monitors[0].scale - 1;

dpi_combo.changed.connect (() => {
dpi_combo.activate.connect (() => {
try {
monitor_manager.set_scale_on_all_monitors ((double)(dpi_combo.active + 1));
monitor_manager.set_scale_on_all_monitors ((double)(dpi_combo.selected + 1));
} catch (Error e) {
show_error_dialog (e.message);
}
Expand Down