[gnome-shell] Highlight the search entry when the user clicks or starts typing in it
- From: Marina Zhurakhinskaya <marinaz src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] Highlight the search entry when the user clicks or starts typing in it
- Date: Sat, 15 Aug 2009 20:43:35 +0000 (UTC)
commit 44d34aba199c7af17d5bc62616f15626830d319c
Author: Marina Zhurakhinskaya <marinaz redhat com>
Date: Sat Aug 15 16:32:58 2009 -0400
Highlight the search entry when the user clicks or starts typing in it
This will give the user a visual indication that the search is active.
We need to replace the gray close button in the search entry with a black one.
js/ui/dash.js | 63 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 46 insertions(+), 17 deletions(-)
---
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 95e27d4..8e1c928 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -22,11 +22,23 @@ const DEFAULT_PADDING = 4;
const DASH_SECTION_PADDING = 6;
const DASH_SECTION_SPACING = 40;
const DASH_CORNER_RADIUS = 5;
+const DASH_PADDING_SIDE = 14;
const BACKGROUND_COLOR = new Clutter.Color();
BACKGROUND_COLOR.from_pixel(0x000000c0);
-const DASH_PADDING_SIDE = 14;
+const TEXT_COLOR = new Clutter.Color();
+TEXT_COLOR.from_pixel(0x5f5f5fff);
+const BRIGHT_TEXT_COLOR = new Clutter.Color();
+BRIGHT_TEXT_COLOR.from_pixel(0xffffffff);
+const SEARCH_TEXT_COLOR = new Clutter.Color();
+SEARCH_TEXT_COLOR.from_pixel(0x333333ff);
+
+const SEARCH_CURSOR_COLOR = BRIGHT_TEXT_COLOR;
+const HIGHLIGHTED_SEARCH_CURSOR_COLOR = SEARCH_TEXT_COLOR;
+
+const HIGHLIGHTED_SEARCH_BACKGROUND_COLOR = new Clutter.Color();
+HIGHLIGHTED_SEARCH_BACKGROUND_COLOR.from_pixel(0xc4c4c4ff);
const SEARCH_BORDER_BOTTOM_COLOR = new Clutter.Color();
SEARCH_BORDER_BOTTOM_COLOR.from_pixel(0x191919ff);
@@ -45,11 +57,6 @@ const SECTION_INNER_SPACING = 8;
const BROWSE_ACTIVATED_BG = new Clutter.Color();
BROWSE_ACTIVATED_BG.from_pixel(0x303030f0);
-const TEXT_COLOR = new Clutter.Color();
-TEXT_COLOR.from_pixel(0x5f5f5fff);
-const BRIGHT_TEXT_COLOR = new Clutter.Color();
-BRIGHT_TEXT_COLOR.from_pixel(0xffffffff);
-
const PANE_BORDER_COLOR = new Clutter.Color();
PANE_BORDER_COLOR.from_pixel(0x101d3cfa);
const PANE_BORDER_WIDTH = 2;
@@ -229,7 +236,13 @@ SearchEntry.prototype = {
this.actor = new Big.Box({ orientation: Big.BoxOrientation.HORIZONTAL,
y_align: Big.BoxAlignment.CENTER,
border_bottom: SECTION_BORDER,
- border_color: SEARCH_BORDER_BOTTOM_COLOR });
+ border_color: SEARCH_BORDER_BOTTOM_COLOR,
+ reactive: true });
+ this.actor.connect('button-press-event', Lang.bind(this, function () {
+ this._resetTextState(true);
+ return false;
+ }));
+
this.pane = null;
this._defaultText = _("Find apps or documents");
@@ -238,15 +251,13 @@ SearchEntry.prototype = {
let entryProperties = { editable: true,
activatable: true,
single_line_mode: true,
- color: BRIGHT_TEXT_COLOR,
- cursor_color: BRIGHT_TEXT_COLOR,
- text: '' };
+ color: SEARCH_TEXT_COLOR,
+ cursor_color: SEARCH_CURSOR_COLOR };
Lang.copyProperties(textProperties, entryProperties);
- // We need to initialize the text for the entry to have the cursor displayed
- // in it. See http://bugzilla.openedhand.com/show_bug.cgi?id=1365
this.entry = new Clutter.Text(entryProperties);
+
this.entry.connect('notify::text', Lang.bind(this, function () {
- this._resetTextState();
+ this._resetTextState(false);
}));
this.actor.append(this.entry, Big.BoxPackFlags.EXPAND);
@@ -277,7 +288,18 @@ SearchEntry.prototype = {
closeUri, 18, 18);
this._closeIcon.reactive = true;
this._closeIcon.connect('button-press-event', Lang.bind(this, function () {
- this.entry.text = '';
+ // Resetting this.entry.text will trigger notify::text signal which will
+ // result in this._resetTextState() being called, but we should not rely
+ // on that not short-circuiting if the text was already empty, so we call
+ // this._resetTextState() explicitly in that case.
+ if (this.entry.text == '')
+ this._resetTextState(false);
+ else
+ this.entry.text = '';
+
+ // Return true to stop the signal emission, so that this.actor doesn't get
+ // the button-press-event and re-highlight itself.
+ return true;
}));
this._repositionDefaultText();
this._resetTextState();
@@ -295,15 +317,22 @@ SearchEntry.prototype = {
return this.entry.text;
},
- _resetTextState: function () {
+ _resetTextState: function (searchEntryClicked) {
let text = this.getText();
this._iconBox.remove_all();
- if (text != '') {
- this._defaultText.hide();
+ // We highlight the search box if the user starts typing in it
+ // or just clicks in it to indicate that the search is active.
+ if (text != '' || searchEntryClicked) {
+ if (!searchEntryClicked)
+ this._defaultText.hide();
this._iconBox.append(this._closeIcon, Big.BoxPackFlags.NONE);
+ this.actor.background_color = HIGHLIGHTED_SEARCH_BACKGROUND_COLOR;
+ this.entry.cursor_color = HIGHLIGHTED_SEARCH_CURSOR_COLOR;
} else {
this._defaultText.show();
this._iconBox.append(this._magnifierIcon, Big.BoxPackFlags.NONE);
+ this.actor.background_color = BACKGROUND_COLOR;
+ this.entry.cursor_color = SEARCH_CURSOR_COLOR;
}
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]