gnome-shell r90 - trunk/js/ui



Author: walters
Date: Fri Nov 28 22:05:09 2008
New Revision: 90
URL: http://svn.gnome.org/viewvc/gnome-shell?rev=90&view=rev

Log:
Hook up activate on search entry to launch if only one app displayed

Modified:
   trunk/js/ui/appdisplay.js
   trunk/js/ui/overlay.js

Modified: trunk/js/ui/appdisplay.js
==============================================================================
--- trunk/js/ui/appdisplay.js	(original)
+++ trunk/js/ui/appdisplay.js	Fri Nov 28 22:05:09 2008
@@ -63,7 +63,7 @@
 		width: width,
 		height: APPDISPLAY_HEIGHT});
 	this._group.connect('button-press-event', function(group, e) {
-		me.emit('launch');
+		me.emit('activate');
 		return true;
 	});
 	this._bg = new Clutter.Rectangle({ color: APPDISPLAY_BACKGROUND_COLOR,
@@ -102,6 +102,12 @@
 		y: this._name.height + 4})
 	this._group.add_actor(this._comment);
 	this.actor = this._group;
+},
+launch: function() {
+    this._appinfo.launch([], null);
+},
+appinfo: function () {
+    return this._appinfo;
 }
 }
 Signals.addSignalMethods(AppDisplayItem.prototype);
@@ -155,6 +161,7 @@
 	let group = item.actor;
 	group.destroy();
 	delete this._displayed[appid];
+	
 },
 
 _removeAll: function() {
@@ -180,11 +187,11 @@
 
 	let appinfo = this._appset[appid];
 	let name = appinfo.get_name();
-	let index = 0; for (i in this._displayed) { index += 1; }
+	let index = 0; for (i in this._displayed) { index += 1; };
 
 	let appdisplay = new AppDisplayItem(appinfo, this._width);
-	appdisplay.connect('launch', function() {
-		appinfo.launch([], null);
+	appdisplay.connect('activate', function() {
+	    appdisplay.launch();
 		me.emit('activated');
 	});
 	let group = appdisplay.actor;
@@ -256,6 +263,27 @@
 	this._redisplay();
 },
 
+searchActivate: function() {
+    let displayedActors = this._grid.get_children();
+    if (displayedActors.length != 1)
+        return;
+    let selectedActor = displayedActors[0];
+    let selectedMenuItem = null;
+    for (appid in this._displayed) {
+        let item = this._displayed[appid];
+        if (item.actor == selectedActor) {
+            selectedMenuItem = item;
+            break;
+        }
+    }
+    log("selected " + selectedMenuItem);    
+    if (!selectedMenuItem)
+        return;
+    
+    selectedMenuItem.launch();
+    this.emit('activated');
+},
+
 show: function() {
 	this._redisplay();
 	this._grid.show();

Modified: trunk/js/ui/overlay.js
==============================================================================
--- trunk/js/ui/overlay.js	(original)
+++ trunk/js/ui/overlay.js	Fri Nov 28 22:05:09 2008
@@ -82,15 +82,25 @@
     this._group.add_actor(this._searchEntry);
     global.stage.set_key_focus(this._searchEntry);
     this._searchQueued = false;
-    this._searchEntry.connect('notify::text', function (se, prop) {
+    this._searchActive = false;
+    this._searchEntry.connect('notify::text', function (se, prop) {           
         if (me._searchQueued)
             return;
         Mainloop.timeout_add(250, function() {
+            let text = me._searchEntry.text;            
             me._searchQueued = false;
-            me._appdisplay.setSearch(me._searchEntry.text);
+            me._searchActive = text != '';              
+            me._appdisplay.setSearch(text);
             return false;
         });
     });
+    this._searchEntry.connect('activate', function (se) {
+        log("activate " + me._searchActive);
+        if (!me._searchActive)
+            return false;
+        me._appdisplay.searchActivate();
+        return true;
+    });
 
     let appsText = new Clutter.Label({ color: SIDESHOW_TEXT_COLOR,
         font_name: "Sans Bold 14px",



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