Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
14 changes: 6 additions & 8 deletions src/Widgets/MultitaskingView/MonitorClone.vala
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class Gala.MonitorClone : ActorTarget {

public WindowManager wm { get; construct; }
public int monitor { get; construct; }
public float monitor_scale { get; construct set; }

private WindowCloneContainer window_container;
private BackgroundManager background;
Expand All @@ -26,15 +27,16 @@ public class Gala.MonitorClone : ActorTarget {

construct {
reactive = true;
update_allocation ();

unowned var display = wm.get_display ();

background = new BackgroundManager (display, monitor, false);

var scale = display.get_monitor_scale (monitor);

window_container = new WindowCloneContainer (wm, scale);
window_container = new WindowCloneContainer (wm, monitor_scale);
window_container.add_constraint (new Clutter.BindConstraint (this, SIZE, 0.0f));
window_container.window_selected.connect ((w) => { window_selected (w); });
bind_property ("monitor-scale", window_container, "monitor-scale");

display.window_entered_monitor.connect (window_entered);
display.window_left_monitor.connect (window_left);
Expand All @@ -55,8 +57,6 @@ public class Gala.MonitorClone : ActorTarget {

var drop = new DragDropAction (DragDropActionType.DESTINATION, "multitaskingview-window");
add_action (drop);

update_allocation ();
}

~MonitorClone () {
Expand All @@ -75,10 +75,8 @@ public class Gala.MonitorClone : ActorTarget {

set_position (monitor_geometry.x, monitor_geometry.y);
set_size (monitor_geometry.width, monitor_geometry.height);
window_container.set_size (monitor_geometry.width, monitor_geometry.height);

var scale = display.get_monitor_scale (monitor);
window_container.monitor_scale = scale;
monitor_scale = display.get_monitor_scale (monitor);
}

private void window_left (int window_monitor, Meta.Window window) {
Expand Down
2 changes: 1 addition & 1 deletion src/Widgets/MultitaskingView/MultitaskingView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public class Gala.MultitaskingView : ActorTarget, ActivatableComponent {

foreach (unowned var child in workspaces.get_children ()) {
unowned var workspace_clone = (WorkspaceClone) child;
workspace_clone.scale_factor = scale;
workspace_clone.monitor_scale = scale;
workspace_clone.update_size (primary_geometry);
}
}
Expand Down
26 changes: 8 additions & 18 deletions src/Widgets/MultitaskingView/WindowClone.vala
Original file line number Diff line number Diff line change
Expand Up @@ -49,18 +49,7 @@ public class Gala.WindowClone : ActorTarget {
}

public bool overview_mode { get; construct; }
private float _monitor_scale_factor = 1.0f;
public float monitor_scale_factor {
get {
return _monitor_scale_factor;
}
set {
if (value != _monitor_scale_factor) {
_monitor_scale_factor = value;
reallocate ();
}
}
}
public float monitor_scale { get; construct set; }

[CCode (notify = false)]
public uint8 shadow_opacity {
Expand Down Expand Up @@ -92,11 +81,11 @@ public class Gala.WindowClone : ActorTarget {

private GestureController gesture_controller;

public WindowClone (WindowManager wm, Meta.Window window, float scale, bool overview_mode = false) {
public WindowClone (WindowManager wm, Meta.Window window, float monitor_scale, bool overview_mode = false) {
Object (
wm: wm,
window: window,
monitor_scale_factor: scale,
monitor_scale: monitor_scale,
overview_mode: overview_mode
);
}
Expand Down Expand Up @@ -145,6 +134,7 @@ public class Gala.WindowClone : ActorTarget {
add_child (clone_container);
add_child (window_title);

notify["monitor-scale"].connect (reallocate);
reallocate ();

InternalUtils.wait_for_window_actor (window, load_clone);
Expand All @@ -163,13 +153,13 @@ public class Gala.WindowClone : ActorTarget {
}

private void reallocate () {
close_button = new Gala.CloseButton (monitor_scale_factor) {
close_button = new Gala.CloseButton (monitor_scale) {
opacity = 0
};
close_button.triggered.connect (close_window);
close_button.notify["has-pointer"].connect (() => update_hover_widgets ());

window_icon = new WindowIcon (window, WINDOW_ICON_SIZE, (int)Math.round (monitor_scale_factor)) {
window_icon = new WindowIcon (window, WINDOW_ICON_SIZE, (int)Math.round (monitor_scale)) {
visible = !overview_mode
};
window_icon.opacity = 0;
Expand Down Expand Up @@ -206,7 +196,7 @@ public class Gala.WindowClone : ActorTarget {

if (window.fullscreen || window.maximized_horizontally && window.maximized_vertically) {
if (shadow_effect == null) {
shadow_effect = new ShadowEffect ("window", monitor_scale_factor);
shadow_effect = new ShadowEffect ("window", monitor_scale);
shadow_opacity = 0;
clone.add_effect_with_name ("shadow", shadow_effect);
}
Expand Down Expand Up @@ -278,7 +268,7 @@ public class Gala.WindowClone : ActorTarget {
return;
}

var target_translation_y = (float) (-CLOSE_TRANSLATION * monitor_scale_factor * progress);
var target_translation_y = (float) (-CLOSE_TRANSLATION * monitor_scale * progress);
var target_opacity = (uint) (255 * (1 - progress));

clone_container.translation_y = target_translation_y;
Expand Down
26 changes: 5 additions & 21 deletions src/Widgets/MultitaskingView/WindowCloneContainer.vala
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,7 @@ public class Gala.WindowCloneContainer : ActorTarget {
public WindowManager wm { get; construct; }
public bool overview_mode { get; construct; }

private float _monitor_scale = 1.0f;
public float monitor_scale {
get {
return _monitor_scale;
}
set {
if (value != _monitor_scale) {
_monitor_scale = value;
reallocate ();
}
}
}
public float monitor_scale { get; construct set; }

private bool opened = false;

Expand All @@ -40,15 +29,8 @@ public class Gala.WindowCloneContainer : ActorTarget {
*/
private unowned WindowClone? current_window = null;

public WindowCloneContainer (WindowManager wm, float scale, bool overview_mode = false) {
Object (wm: wm, monitor_scale: scale, overview_mode: overview_mode);
}

private void reallocate () {
foreach (unowned var child in get_children ()) {
unowned var clone = (WindowClone) child;
clone.monitor_scale_factor = monitor_scale;
}
public WindowCloneContainer (WindowManager wm, float monitor_scale, bool overview_mode = false) {
Object (wm: wm, monitor_scale: monitor_scale, overview_mode: overview_mode);
}

/**
Expand Down Expand Up @@ -85,6 +67,8 @@ public class Gala.WindowCloneContainer : ActorTarget {
});
new_window.request_reposition.connect (() => reflow (false));

bind_property ("monitor-scale", new_window, "monitor-scale");

unowned Meta.Window? target = null;
foreach (unowned var w in windows_ordered) {
if (w != window) {
Expand Down
41 changes: 13 additions & 28 deletions src/Widgets/MultitaskingView/WorkspaceClone.vala
Original file line number Diff line number Diff line change
Expand Up @@ -128,30 +128,18 @@ public class Gala.WorkspaceClone : ActorTarget {

public WindowManager wm { get; construct; }
public Meta.Workspace workspace { get; construct; }
public float monitor_scale { get; construct set; }

public IconGroup icon_group { get; private set; }
public WindowCloneContainer window_container { get; private set; }

private float _scale_factor = 1.0f;
public float scale_factor {
get {
return _scale_factor;
}
set {
if (value != _scale_factor) {
_scale_factor = value;
reallocate ();
update_targets ();
}
}
}

private BackgroundManager background;
private bool opened;

private uint hover_activate_timeout = 0;

public WorkspaceClone (WindowManager wm, Meta.Workspace workspace, float scale) {
Object (wm: wm, workspace: workspace, scale_factor: scale);
public WorkspaceClone (WindowManager wm, Meta.Workspace workspace, float monitor_scale) {
Object (wm: wm, workspace: workspace, monitor_scale: monitor_scale);
}

construct {
Expand All @@ -166,15 +154,17 @@ public class Gala.WorkspaceClone : ActorTarget {
background = new FramedBackground (display);
background.add_action (background_click_action);

window_container = new WindowCloneContainer (wm, scale_factor) {
window_container = new WindowCloneContainer (wm, monitor_scale) {
width = monitor_geometry.width,
height = monitor_geometry.height,
};
window_container.window_selected.connect ((w) => { window_selected (w); });
window_container.requested_close.connect (() => activate (true));
bind_property ("monitor-scale", window_container, "monitor-scale");

icon_group = new IconGroup (display, workspace, scale_factor);
icon_group = new IconGroup (display, workspace, monitor_scale);
icon_group.selected.connect (() => activate (true));
bind_property ("monitor-scale", icon_group, "scale-factor");

var icons_drop_action = new DragDropAction (DragDropActionType.DESTINATION, "multitaskingview-window");
icon_group.add_action (icons_drop_action);
Expand Down Expand Up @@ -221,7 +211,7 @@ public class Gala.WorkspaceClone : ActorTarget {

unowned var monitor_manager = display.get_context ().get_backend ().get_monitor_manager ();
monitor_manager.monitors_changed.connect (update_targets);

notify["monitor-scale"].connect (update_targets);
update_targets ();
}

Expand All @@ -238,11 +228,6 @@ public class Gala.WorkspaceClone : ActorTarget {
icon_group.destroy ();
}

private void reallocate () {
icon_group.scale_factor = scale_factor;
window_container.monitor_scale = scale_factor;
}

/**
* Add a window to the WindowCloneContainer and the IconGroup if it really
* belongs to this workspace and this monitor.
Expand Down Expand Up @@ -301,8 +286,8 @@ public class Gala.WorkspaceClone : ActorTarget {

var monitor = display.get_monitor_geometry (display.get_primary_monitor ());

var scale = (float)(monitor.height - InternalUtils.scale_to_int (TOP_OFFSET + BOTTOM_OFFSET, scale_factor)) / monitor.height;
var pivot_y = InternalUtils.scale_to_int (TOP_OFFSET, scale_factor) / (monitor.height - monitor.height * scale);
var scale = (float)(monitor.height - InternalUtils.scale_to_int (TOP_OFFSET + BOTTOM_OFFSET, monitor_scale)) / monitor.height;
var pivot_y = InternalUtils.scale_to_int (TOP_OFFSET, monitor_scale) / (monitor.height - monitor.height * scale);
background.set_pivot_point (0.5f, pivot_y);

var initial_width = monitor.width;
Expand All @@ -312,10 +297,10 @@ public class Gala.WorkspaceClone : ActorTarget {
add_target (new PropertyTarget (MULTITASKING_VIEW, background, "scale-x", typeof (double), 1d, (double) scale));
add_target (new PropertyTarget (MULTITASKING_VIEW, background, "scale-y", typeof (double), 1d, (double) scale));

window_container.padding_top = InternalUtils.scale_to_int (TOP_OFFSET, scale_factor);
window_container.padding_top = InternalUtils.scale_to_int (TOP_OFFSET, monitor_scale);
window_container.padding_left =
window_container.padding_right = (int)(monitor.width - monitor.width * scale) / 2;
window_container.padding_bottom = InternalUtils.scale_to_int (BOTTOM_OFFSET, scale_factor);
window_container.padding_bottom = InternalUtils.scale_to_int (BOTTOM_OFFSET, monitor_scale);
}

public override void update_progress (GestureAction action, double progress) {
Expand Down
Loading