diff --git a/src/Widgets/MultitaskingView/WindowClone.vala b/src/Widgets/MultitaskingView/WindowClone.vala index 77bb1c436..79b3d1a72 100644 --- a/src/Widgets/MultitaskingView/WindowClone.vala +++ b/src/Widgets/MultitaskingView/WindowClone.vala @@ -310,7 +310,7 @@ public class Gala.WindowClone : ActorTarget, RootTarget { var input_rect = window.get_buffer_rect (); var outer_rect = window.get_frame_rect (); - var clone_scale_factor = width / outer_rect.width; + var clone_scale_factor = outer_rect.width != 0 ? width / outer_rect.width : 1f; // Compensate for invisible borders of the texture float clone_x = (input_rect.x - outer_rect.x) * clone_scale_factor; @@ -327,12 +327,6 @@ public class Gala.WindowClone : ActorTarget, RootTarget { clone.set_scale (clone_scale_factor, clone_scale_factor); - float clone_width, clone_height; - clone.get_preferred_size (null, null, out clone_width, out clone_height); - - var clone_alloc = InternalUtils.actor_box_from_rect (0, 0, clone_width, clone_height); - clone.allocate (clone_alloc); - Clutter.ActorBox shape_alloc = { -ACTIVE_SHAPE_SIZE, -ACTIVE_SHAPE_SIZE, @@ -364,11 +358,12 @@ public class Gala.WindowClone : ActorTarget, RootTarget { var monitor_index = display.get_monitor_index_for_rect (Mtk.Rectangle.from_graphene_rect (rect, ROUND)); var monitor_scale = display.get_monitor_scale (monitor_index); - float window_title_max_width = box.get_width () - Utils.scale_to_int (TITLE_MAX_WIDTH_MARGIN, monitor_scale); - float window_title_height, window_title_nat_width; - window_title.get_preferred_size (null, null, out window_title_nat_width, out window_title_height); + float window_title_min_width, window_title_nat_width, window_title_height; + window_title.get_preferred_size (out window_title_min_width, null, out window_title_nat_width, out window_title_height); + + float window_title_max_width = float.max (window_title_min_width, box.get_width () - Utils.scale_to_int (TITLE_MAX_WIDTH_MARGIN, monitor_scale)); - var window_title_width = window_title_nat_width.clamp (0, window_title_max_width); + var window_title_width = float.min (window_title_nat_width, window_title_max_width); float window_title_x = (box.get_width () - window_title_width) / 2; float window_title_y = (window_icon.visible ? window_icon_y : box.get_height ()) - (window_title_height / 2) - Utils.scale_to_int (18, monitor_scale);