gnome-shell r14 - trunk/js/ui



Author: otaylor
Date: Fri Oct 31 23:09:46 2008
New Revision: 14
URL: http://svn.gnome.org/viewvc/gnome-shell?rev=14&view=rev

Log:
First cut at activities overlay

When the user clicks on "Activities", adjust the input shape
to the whole screen and show a black overlay group. Actually, the
black should be *beneath* the window actors and the overlay group
transparent so we can fade in the black while leaving the windows
unfaded, visible, but shrunk and rearranged.


Added:
   trunk/js/ui/overlay.js
Modified:
   trunk/js/ui/main.js
   trunk/js/ui/panel.js

Modified: trunk/js/ui/main.js
==============================================================================
--- trunk/js/ui/main.js	(original)
+++ trunk/js/ui/main.js	Fri Oct 31 23:09:46 2008
@@ -4,11 +4,13 @@
 const Clutter = imports.gi.Clutter;
 
 const Panel = imports.ui.panel;
+const Overlay = imports.ui.overlay;
 
 const DEFAULT_BACKGROUND_COLOR = new Clutter.Color();
 DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
 
 let panel = null;
+let overlay = null;
 
 function start() {
     let global = Shell.global_get();
@@ -20,9 +22,25 @@
 
     // Mutter currently hardcodes putting "Yessir. The compositor is running""
     // in the overlay. Clear that out.
-    children = global.overlay_group.get_children();
+    let children = global.overlay_group.get_children();
     for (let i = 0; i < children.length; i++)
 	children[i].destroy();
 
     panel = new Panel.Panel();
+    overlay = new Overlay.Overlay();
+    global.set_stage_input_area(0, 0, global.screen_width, Panel.PANEL_HEIGHT);
+}
+
+function show_overlay() {
+    let global = Shell.global_get();
+
+    overlay.show();
+    global.set_stage_input_area(0, 0, global.screen_width, global.screen_height);
+}
+
+function hide_overlay() {
+    let global = Shell.global_get();
+
+    overlay.hide();
+    global.set_stage_input_area(0, 0, global.screen_width, Panel.PANEL_HEIGHT);
 }

Added: trunk/js/ui/overlay.js
==============================================================================
--- (empty file)
+++ trunk/js/ui/overlay.js	Fri Oct 31 23:09:46 2008
@@ -0,0 +1,47 @@
+/* -*- mode: js2; js2-basic-offset: 4; -*- */
+
+const Shell = imports.gi.Shell;
+const Clutter = imports.gi.Clutter;
+
+const Panel = imports.ui.panel;
+
+const OVERLAY_BACKGROUND_COLOR = new Clutter.Color();
+OVERLAY_BACKGROUND_COLOR.from_pixel(0x000000ff);
+
+function Overlay() {
+    this._init();
+}
+
+Overlay.prototype = {
+    _init : function() {
+	let global = Shell.global_get();
+
+	this._group = new Clutter.Group();
+	this.visible = false;
+
+	let background = new Clutter.Rectangle({ color: OVERLAY_BACKGROUND_COLOR,
+						 reactive: true,
+						 x: 0,
+						 y: Panel.PANEL_HEIGHT,
+					         width: global.screen_width,
+					         height: global.screen_width - Panel.PANEL_HEIGHT });
+	this._group.add_actor(background);
+
+	this._group.hide();
+	global.overlay_group.add_actor(this._group);
+    },
+
+    show : function() {
+	if (!this.visible) {
+	    this.visible = true;
+	    this._group.show();
+	}
+    },
+
+    hide : function() {
+	if (this.visible) {
+	    this.visible = false;
+	    this._group.hide();
+	}
+    }
+};

Modified: trunk/js/ui/panel.js
==============================================================================
--- trunk/js/ui/panel.js	(original)
+++ trunk/js/ui/panel.js	Fri Oct 31 23:09:46 2008
@@ -5,6 +5,11 @@
 const Shell = imports.gi.Shell;
 const Clutter = imports.gi.Clutter;
 
+// The mutual import here causes things to break in weird ways,
+//  (http://bugzilla.gnome.org/show_bug.cgi?id=558741)
+// So we do a local import below
+// const Main = imports.ui.main;
+
 const PANEL_HEIGHT = 32;
 const PANEL_BACKGROUND_COLOR = new Clutter.Color();
 PANEL_BACKGROUND_COLOR.from_pixel(0xeeddccff);
@@ -17,8 +22,6 @@
     _init : function() {
 	let global = Shell.global_get();
 
-	global.set_stage_input_area(0, 0, global.screen_width, PANEL_HEIGHT);
-
 	this._group = new Clutter.Group();
 
 	let background = new Clutter.Rectangle({ color: PANEL_BACKGROUND_COLOR,
@@ -41,7 +44,14 @@
 
 	message.connect('button-press-event',
 	    function(o, event) {
-		log('Clicked!');
+		// See comment above
+	        let Main = imports.ui.main;
+
+		if (Main.overlay.visible)
+		    Main.hide_overlay();
+		else
+		    Main.show_overlay();
+
 		return true;
             });
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]