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
2 changes: 1 addition & 1 deletion src/BaseItem.vala
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ public class Dock.BaseItem : Gtk.Box {
* @param y pointer y position
*/
public void calculate_dnd_move (BaseItem source, double x, double y) {
var launcher_manager = ItemManager.get_default ();
var launcher_manager = (ItemManager) get_ancestor (typeof (ItemManager));
launcher_manager.move_launcher_after (source, (int) index);
}

Expand Down
11 changes: 10 additions & 1 deletion src/DBus/ShellKeyGrabber.vala
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,16 @@ public interface ShellKeyGrabber : GLib.Object {
return;
}

Dock.ItemManager.get_default ().launch (saved_action_ids[action]);
var index = saved_action_ids[action] - 1;
var apps = Dock.AppSystem.get_default ().apps;

if (index < 0 || index >= apps.get_n_items ()) {
return;
}

var context = Gdk.Display.get_default ().get_app_launch_context ();
var app = (Dock.App) apps.get_item (index);
app.launch (context);
}

private static void ungrab_keybindings () requires (instance != null) {
Expand Down
15 changes: 0 additions & 15 deletions src/ItemManager.vala
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@
public class Dock.ItemManager : Gtk.Box {
private static Settings settings;

private static GLib.Once<ItemManager> instance;
public static unowned ItemManager get_default () {
return instance.once (() => { return new ItemManager (); });
}

public Launcher? added_launcher { get; set; default = null; }

private DynamicWorkspaceIcon dynamic_workspace_item;
Expand Down Expand Up @@ -163,14 +158,4 @@
warning ("Tried to move neither launcher nor icon group");
}
}

public void launch (uint index) {
if (index < 1 || index > AppSystem.get_default ().apps.get_n_items ()) {
return;
}

var context = Gdk.Display.get_default ().get_app_launch_context ();
var app = (App) AppSystem.get_default ().apps.get_item (index - 1);
app.launch (context);
}
}
15 changes: 8 additions & 7 deletions src/MainWindow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class Dock.MainWindow : Gtk.ApplicationWindow {
private Pantheon.Desktop.Shell? desktop_shell;
private Pantheon.Desktop.Panel? panel;

private ItemManager item_manager;
private WindowDragManager window_drag_manager;
private bool initialized_blur = false;
private int border_radius = 0;
Expand All @@ -40,27 +41,27 @@ public class Dock.MainWindow : Gtk.ApplicationWindow {
dock_box.append (new Container ());
dock_box.append (new BottomMargin ());

unowned var launcher_manager = ItemManager.get_default ();
item_manager = new ItemManager ();

// Don't clip launchers to dock background https://github.com/elementary/dock/issues/275
var overlay = new Gtk.Overlay () {
child = dock_box
};
overlay.add_overlay (launcher_manager);
overlay.add_overlay (item_manager);

var size_group = new Gtk.SizeGroup (Gtk.SizeGroupMode.BOTH);
size_group.add_widget (dock_box);
size_group.add_widget (launcher_manager);
size_group.add_widget (item_manager);

child = overlay;

remove_css_class ("background");

// Fixes DnD reordering of launchers failing on a very small line between two launchers
var drop_target_launcher = new Gtk.DropTarget (typeof (Launcher), MOVE);
launcher_manager.add_controller (drop_target_launcher);
item_manager.add_controller (drop_target_launcher);

launcher_manager.realize.connect (init_panel);
item_manager.realize.connect (init_panel);

settings.changed["autohide-mode"].connect (() => {
if (panel != null) {
Expand Down Expand Up @@ -112,7 +113,7 @@ public class Dock.MainWindow : Gtk.ApplicationWindow {
surface.compute_size.connect ((surface, size) => {
// manually set shadow width since the additional margin we add to avoid icons clipping when
// bouncing isn't added by default and instead counts to the frame
var item_manager_width = ItemManager.get_default ().get_width ();
var item_manager_width = item_manager.get_width ();
var shadow_size = (surface.width - item_manager_width) / 2;
var top_margin = TOP_MARGIN + shadow_size - 1;
size.set_shadow_width (shadow_size, shadow_size, top_margin, shadow_size);
Expand All @@ -121,7 +122,7 @@ public class Dock.MainWindow : Gtk.ApplicationWindow {
surface.layout.connect ((surface, width, height) => {
// manually set input region since container's shadow are is the content of the window
// and it still gets window events
var item_manager_width = ItemManager.get_default ().get_width ();
var item_manager_width = item_manager.get_width ();
var shadow_size = (width - item_manager_width) / 2;
var top_margin = TOP_MARGIN + shadow_size;
surface.set_input_region (new Cairo.Region.rectangle ({
Expand Down