gnome-shell r24 - in trunk: js/ui src
- From: otaylor svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-shell r24 - in trunk: js/ui src
- Date: Sun, 2 Nov 2008 04:18:41 +0000 (UTC)
Author: otaylor
Date: Sun Nov 2 04:18:41 2008
New Revision: 24
URL: http://svn.gnome.org/viewvc/gnome-shell?rev=24&view=rev
Log:
First stab at showing windows in the overlay
shell-global.[ch]: Add shell_global_get_windows() to get
the list of all MutterWindow for the screen
Makefile.am: Include the metacity typelib so that we can
reference the MutterWindow type
js/ui/overlay.js: Cascade the open windows, scaled down
in the overlay
Modified:
trunk/js/ui/overlay.js
trunk/src/Makefile.am
trunk/src/metacity-symbols.c
trunk/src/shell-global.c
trunk/src/shell-global.h
Modified: trunk/js/ui/overlay.js
==============================================================================
--- trunk/js/ui/overlay.js (original)
+++ trunk/js/ui/overlay.js Sun Nov 2 04:18:41 2008
@@ -29,11 +29,58 @@
this._group.hide();
global.overlay_group.add_actor(this._group);
+
+ this._window_clones = []
},
show : function() {
if (!this.visible) {
this.visible = true;
+
+ // Very simple version of a window overview ... when we show the
+ // overlay, display all the user's windows in the overlay scaled
+ // down.
+ //
+ // We show the window using "clones" of the texture .. separate
+ // actors that mirror the original actors for the window. For
+ // animation purposes, it may be better to actually move the
+ // original actors about instead.
+
+ let global = Shell.global_get();
+ let windows = global.get_windows();
+
+ let screen_width = global.screen_width
+ let screen_height = global.screen_height
+
+ let x = screen_width / 4
+ let y = screen_height / 4
+
+ for (let i = 0; i < windows.length; i++)
+ if (!windows[i].is_override_redirect()) {
+ let clone = new Clutter.CloneTexture({ parent_texture: windows[i].get_texture(),
+ x: x,
+ y: y });
+
+ // We scale each window down so that it is at most 300x300, but we
+ // never want to scale a window up.
+ let size = clone.width;
+ if (clone.height > size)
+ size = clone.height;
+
+ let scale = 300 / size;
+ if (scale > 1)
+ scale = 1;
+
+ clone.set_scale(scale, scale);
+ this._group.add_actor(clone);
+ this._window_clones.push(clone);
+
+ // Windows are overlapped diagonally. If there are too many, they'll
+ // end up off the screen
+ x += 50;
+ y += 50;
+ }
+
this._group.show();
}
},
@@ -42,6 +89,12 @@
if (this.visible) {
this.visible = false;
this._group.hide();
+
+ for (let i = 0; i < this._window_clones.length; i++) {
+ this._window_clones[i].destroy();
+ }
+
+ this._window_clones = [];
}
}
};
Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am (original)
+++ trunk/src/Makefile.am Sun Nov 2 04:18:41 2008
@@ -38,6 +38,7 @@
--nsversion=0.1 \
--include=GObject-2.0 \
--include=Clutter-0.8 \
+ --include=Meta-2.25 \
--library=gnome-shell-introspect \
$(libgnome_shell_la_SOURCES) \
$(INCLUDES) \
Modified: trunk/src/metacity-symbols.c
==============================================================================
--- trunk/src/metacity-symbols.c (original)
+++ trunk/src/metacity-symbols.c Sun Nov 2 04:18:41 2008
@@ -14,6 +14,11 @@
return NULL;
}
+GList *
+mutter_plugin_get_windows (MutterPlugin *plugin)
+{
+}
+
void
mutter_plugin_query_screen_size (MutterPlugin *plugin,
int *width,
Modified: trunk/src/shell-global.c
==============================================================================
--- trunk/src/shell-global.c (original)
+++ trunk/src/shell-global.c Sun Nov 2 04:18:41 2008
@@ -159,6 +159,21 @@
mutter_plugin_set_stage_input_area (global->plugin, x, y, width, height);
}
+/**
+ * shell_global_get_windows:
+ *
+ * Gets the list of MutterWindows for the plugin's screen
+ *
+ * Return value: (element-type MutterWindow) (transfer none): the list of windows
+ */
+GList *
+shell_global_get_windows (ShellGlobal *global)
+{
+ g_return_if_fail (SHELL_IS_GLOBAL (global));
+
+ return mutter_plugin_get_windows (global->plugin);
+}
+
void
_shell_global_set_plugin (ShellGlobal *global,
MutterPlugin *plugin)
Modified: trunk/src/shell-global.h
==============================================================================
--- trunk/src/shell-global.h (original)
+++ trunk/src/shell-global.h Sun Nov 2 04:18:41 2008
@@ -21,12 +21,13 @@
ShellGlobal *shell_global_get (void);
-void
-shell_global_set_stage_input_area (ShellGlobal *global,
- int x,
- int y,
- int width,
- int height);
+void shell_global_set_stage_input_area (ShellGlobal *global,
+ int x,
+ int y,
+ int width,
+ int height);
+
+GList *shell_global_get_windows (ShellGlobal *global);
void _shell_global_set_plugin (ShellGlobal *global,
MutterPlugin *plugin);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]