diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d672d40..ca90acea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,9 +41,9 @@ ensure_vala_version("0.16.0" MINIMUM) include(ValaPrecompile) vala_precompile(VALA_C - src/main.vala src/gala.vala src/gala-plugin.vala + src/main.vala src/Widgets/WorkspaceSwitcher.vala src/Widgets/WindowSwitcher.vala ${CMAKE_BINARY_DIR}/src/Config.vala @@ -51,6 +51,7 @@ PACKAGES granite libmutter clutter-gtk-1.0 + gdk-x11-3.0 OPTIONS --vapidir=${CMAKE_CURRENT_SOURCE_DIR}/vapi/ ) diff --git a/src/gala-plugin.vala b/src/gala-plugin.vala index 51ec8b5e..4de7a000 100644 --- a/src/gala-plugin.vala +++ b/src/gala-plugin.vala @@ -5,30 +5,31 @@ namespace Gala { public WorkspaceSwitcher wswitcher; public WindowSwitcher winswitcher; public Clutter.Actor elements; - - public Plugin () { - - } - - public override void start () { + public Plugin () { + + } + + public override void start () { + this.get_screen (); + this.elements = Meta.get_stage_for_screen (this.get_screen ()); Meta.get_window_group_for_screen (this.get_screen ()).reparent (elements); Meta.get_overlay_group_for_screen (this.get_screen ()).reparent (elements); Meta.get_stage_for_screen (this.get_screen ()).add_child (elements); - + this.get_screen ().override_workspace_layout (Meta.ScreenCorner.TOPLEFT, false, -1, 4); - + int w, h; this.get_screen ().get_size (out w, out h); - + this.wswitcher = new WorkspaceSwitcher (w, h); this.wswitcher.workspaces = 4; this.elements.add_child (this.wswitcher); - + this.winswitcher = new WindowSwitcher (); this.elements.add_child (this.winswitcher); - + Meta.keybindings_set_custom_handler ("switch-windows", (display, screen) => { window_switcher (screen, false); @@ -40,20 +41,20 @@ namespace Gala { Meta.keybindings_set_custom_handler ("switch-to-workspace-down", (d,s) => workspace_switcher (s, false) ); } - + public void window_switcher (Meta.Screen screen, bool backwards) { int w, h; this.get_screen ().get_size (out w, out h); - + this.winswitcher.list_windows (screen.get_active_workspace ().list_windows (), this.get_screen ().get_display (), backwards); this.winswitcher.x = w/2-winswitcher.width/2; this.winswitcher.y = h/2-winswitcher.height/2; this.winswitcher.animate (Clutter.AnimationMode.EASE_OUT_QUAD, 400, opacity:255); - + (Meta.get_stage_for_screen (this.get_screen ()) as Clutter.Stage).set_key_focus (null); } - + public void workspace_switcher (Meta.Screen screen, bool up) { var i = screen.get_active_workspace_index (); if (up && i-1 >= 0) //move up @@ -63,25 +64,25 @@ namespace Gala { if (i != screen.get_active_workspace_index ()) { screen.get_workspace_by_index (i). activate (screen.get_display ().get_current_time ()); - + int w, h; this.get_screen ().get_size (out w, out h); - + wswitcher.x = w/2-wswitcher.width/2; wswitcher.y = h/2-wswitcher.height/2; wswitcher.animate (Clutter.AnimationMode.EASE_OUT_QUAD, 100, opacity:255); wswitcher.workspace = i; } } - + public override void minimize (Meta.WindowActor actor) { this.minimize_completed (actor); } - + public override void maximize (Meta.WindowActor actor, int x, int y, int w, int h) { this.maximize_completed (actor); } - + public override void map (Meta.WindowActor actor) { actor.show (); switch (actor.meta_window.window_type) { @@ -101,6 +102,8 @@ namespace Gala { case Meta.WindowType.MENU: case Meta.WindowType.DROPDOWN_MENU: case Meta.WindowType.POPUP_MENU: + case Meta.WindowType.MODAL_DIALOG: + case Meta.WindowType.DIALOG: actor.scale_gravity = Clutter.Gravity.NORTH; actor.scale_x = 1.0f; actor.scale_y = 0.0f; @@ -130,6 +133,8 @@ namespace Gala { case Meta.WindowType.MENU: case Meta.WindowType.DROPDOWN_MENU: case Meta.WindowType.POPUP_MENU: + case Meta.WindowType.MODAL_DIALOG: + case Meta.WindowType.DIALOG: actor.scale_gravity = Clutter.Gravity.NORTH; actor.animate (Clutter.AnimationMode.EASE_OUT_QUAD, 200, scale_y:0.0f, opacity:0).completed.connect ( () => { @@ -141,6 +146,12 @@ namespace Gala { break; } } + + private GLib.List win; + private GLib.List par; //class space for kill func + private Clutter.Group in_group; + private Clutter.Group out_group; + public override void switch_workspace (int from, int to, Meta.MotionDirection direction) { unowned List windows = Meta.get_window_actors (this.get_screen ()); //FIXME js/ui/windowManager.js line 430 @@ -172,8 +183,8 @@ namespace Gala { group.add_actor (in_group); group.add_actor (out_group); - var win = new List (); - var par = new List (); + win = new List (); + par = new List (); for (var i=0;i { - - for (var i=0;i