Merge lp:~tkluck/ubuntu/oneiric/gnome-shell/fix-bluetooth-device-switch into lp:ubuntu/oneiric/gnome-shell
- Oneiric (11.10)
- fix-bluetooth-device-switch
- Merge into oneiric
Status: | Rejected | ||||
---|---|---|---|---|---|
Rejected by: | Colin Watson | ||||
Proposed branch: | lp:~tkluck/ubuntu/oneiric/gnome-shell/fix-bluetooth-device-switch | ||||
Merge into: | lp:ubuntu/oneiric/gnome-shell | ||||
Diff against target: |
31109 lines (+10705/-4907) 173 files modified
.pc/01_favorite_apps.patch/data/org.gnome.shell.gschema.xml.in (+0/-136) .pc/03_remove-glx-dependency-on-armel.patch/configure (+11/-11) .pc/03_remove-glx-dependency-on-armel.patch/configure.ac (+2/-2) .pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui/status/bluetooth.js (+508/-0) .pc/applied-patches (+1/-1) NEWS (+66/-0) configure (+11/-11) configure.ac (+2/-2) data/org.gnome.shell.gschema.xml.in (+9/-1) data/theme/gdm.css (+15/-1) data/theme/gnome-shell.css (+7/-9) debian/changelog (+60/-0) debian/control (+3/-3) debian/control.in (+3/-3) debian/gnome-shell.gsettings-override (+3/-0) debian/patches/01_favorite_apps.patch (+0/-16) debian/patches/04_bluetooth-fix-connection-from-gs-menu.patch (+31/-0) debian/patches/series (+1/-1) js/Makefile.am (+1/-0) js/Makefile.in (+1/-0) js/gdm/batch.js (+2/-2) js/gdm/consoleKit.js (+1/-1) js/gdm/fingerprint.js (+1/-1) js/gdm/loginDialog.js (+44/-10) js/gdm/powerMenu.js (+2/-2) js/misc/config.js (+4/-3) js/misc/config.js.in (+2/-1) js/misc/docInfo.js (+1/-1) js/misc/fileUtils.js (+2/-0) js/misc/format.js (+1/-1) js/misc/gnomeSession.js (+3/-3) js/misc/history.js (+1/-1) js/misc/modemManager.js (+1/-1) js/misc/params.js (+1/-1) js/misc/screenSaver.js (+1/-1) js/misc/util.js (+1/-1) js/perf/core.js (+1/-1) js/ui/altTab.js (+47/-32) js/ui/appDisplay.js (+1/-1) js/ui/appFavorites.js (+1/-1) js/ui/automountManager.js (+6/-2) js/ui/autorunManager.js (+2/-2) js/ui/boxpointer.js (+26/-12) js/ui/calendar.js (+1/-1) js/ui/contactDisplay.js (+9/-3) js/ui/ctrlAltTab.js (+1/-1) js/ui/dash.js (+64/-48) js/ui/dateMenu.js (+1/-1) js/ui/dnd.js (+1/-1) js/ui/docDisplay.js (+1/-1) js/ui/endSessionDialog.js (+2/-2) js/ui/environment.js (+1/-1) js/ui/extensionSystem.js (+3/-3) js/ui/iconGrid.js (+1/-1) js/ui/keyboard.js (+44/-14) js/ui/layout.js (+24/-8) js/ui/lightbox.js (+1/-1) js/ui/link.js (+1/-1) js/ui/lookingGlass.js (+11/-13) js/ui/magnifier.js (+1/-1) js/ui/magnifierDBus.js (+1/-1) js/ui/main.js (+3/-5) js/ui/messageTray.js (+5/-3) js/ui/modalDialog.js (+1/-1) js/ui/networkAgent.js (+9/-26) js/ui/notificationDaemon.js (+17/-2) js/ui/overview.js (+1/-1) js/ui/panel.js (+1/-1) js/ui/panelMenu.js (+1/-1) js/ui/placeDisplay.js (+1/-1) js/ui/polkitAuthenticationAgent.js (+4/-2) js/ui/popupMenu.js (+8/-4) js/ui/runDialog.js (+3/-1) js/ui/scripting.js (+1/-1) js/ui/search.js (+1/-1) js/ui/searchDisplay.js (+1/-1) js/ui/shellDBus.js (+1/-1) js/ui/shellEntry.js (+173/-0) js/ui/shellMountOperation.js (+1/-1) js/ui/status/accessibility.js (+1/-1) js/ui/status/bluetooth.js (+3/-2) js/ui/status/keyboard.js (+1/-1) js/ui/status/network.js (+1/-1) js/ui/status/power.js (+5/-5) js/ui/status/volume.js (+1/-1) js/ui/statusIconDispatcher.js (+1/-1) js/ui/telepathyClient.js (+13/-8) js/ui/tweener.js (+1/-1) js/ui/userMenu.js (+51/-11) js/ui/viewSelector.js (+7/-3) js/ui/windowAttentionHandler.js (+9/-30) js/ui/windowManager.js (+18/-10) js/ui/workspace.js (+27/-5) js/ui/workspaceSwitcherPopup.js (+1/-1) js/ui/workspaceThumbnail.js (+1/-1) js/ui/workspacesView.js (+2/-70) js/ui/xdndHandler.js (+1/-1) po/LINGUAS (+2/-0) po/POTFILES.in (+1/-1) po/ast.po (+1630/-0) po/bg.po (+97/-88) po/ca.po (+75/-64) po/ca@valencia.po (+80/-68) po/de.po (+158/-131) po/en_GB.po (+283/-239) po/eo.po (+115/-105) po/es.po (+109/-94) po/fa.po (+174/-174) po/fr.po (+88/-88) po/ga.po (+743/-310) po/gl.po (+157/-133) po/hu.po (+157/-136) po/it.po (+94/-84) po/ja.po (+133/-131) po/ko.po (+74/-69) po/ku.po (+1575/-0) po/lt.po (+222/-184) po/lv.po (+94/-80) po/nl.po (+801/-355) po/pl.po (+143/-131) po/pt_BR.po (+110/-109) po/ru.po (+175/-211) po/sl.po (+78/-68) po/sr.po (+91/-90) po/sr@latin.po (+91/-90) po/sv.po (+81/-74) po/ta.po (+121/-117) po/te.po (+73/-108) po/uk.po (+754/-316) po/vi.po (+205/-215) po/zh_CN.po (+102/-100) src/hotplug-sniffer/hotplug-mimetypes.h (+2/-0) src/hotplug-sniffer/hotplug-sniffer.c (+1/-0) src/hotplug-sniffer/shell-mime-sniffer.c (+1/-0) src/hotplug-sniffer/shell-mime-sniffer.h (+1/-0) src/shell-a11y.c (+2/-2) src/shell-a11y.h (+2/-2) src/shell-app-private.h (+0/-2) src/shell-app-system.c (+16/-26) src/shell-app-usage.c (+39/-0) src/shell-app-usage.h (+4/-0) src/shell-app.c (+12/-21) src/shell-contact-system.c (+173/-39) src/shell-contact-system.h (+3/-0) src/shell-global.c (+4/-0) src/shell-mount-operation.c (+1/-0) src/shell-mount-operation.h (+1/-0) src/shell-recorder.c (+3/-3) src/shell-tp-client.c (+2/-0) src/shell-tp-client.h (+2/-0) src/shell-util.c (+1/-17) src/shell-util.h (+0/-2) src/st/st-entry.c (+79/-3) src/st/st-texture-cache.c (+13/-5) src/st/st-theme-node-drawing.c (+8/-18) tests/interactive/border-radius.js (+1/-1) tests/interactive/border-width.js (+1/-1) tests/interactive/borders.js (+1/-1) tests/interactive/box-layout.js (+1/-1) tests/interactive/box-shadows.js (+1/-1) tests/interactive/calendar.js (+1/-1) tests/interactive/css-fonts.js (+1/-1) tests/interactive/entry.js (+1/-1) tests/interactive/icons.js (+1/-1) tests/interactive/inline-style.js (+1/-1) tests/interactive/scroll-view-sizing.js (+1/-1) tests/interactive/scrolling.js (+1/-1) tests/interactive/table.js (+1/-1) tests/interactive/transitions.js (+1/-1) tests/testcommon/ui.js (+1/-1) tests/unit/format.js (+1/-1) tests/unit/markup.js (+1/-1) tests/unit/url.js (+1/-1) |
||||
To merge this branch: | bzr merge lp:~tkluck/ubuntu/oneiric/gnome-shell/fix-bluetooth-device-switch | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jeremy Bícha | Needs Fixing | ||
Ubuntu branches | Pending | ||
Review via email: mp+89040@code.launchpad.net |
Commit message
Description of the change
This fixes #918208:
"""
The device connection switches in the gnome-shell bluetooth menu can be toggled but don't work: their status is independent from the actual connection status.
This is a known bug with a trivial patch, and it has already been fixed in master:
https:/
It would be nice if the trivial fix could be incorporated into the Ubuntu's 3.2.1 package.
"""
Colin Watson (cjwatson) wrote : | # |
Rejected by request of seb128.
Sebastien Bacher (seb128) wrote : | # |
Rejecting the merge request since it was adressed to the wrong serie (oneiric rather than oneiric-proposed) and the fix seems to have been uploaded since according to the bug
Unmerged revisions
- 46. By Timo Kluck
-
Fix bluetooth device connecting from gnome-shell menu
- 45. By Evan Broder
-
No-change rebuild to fix up dependencies (LP: #903382)
- 44. By Jeremy Bícha
-
[ Jeremy Bicha ]
* New upstream release (LP: #878672).
- Restore the IM state on startup - if you were available in when you
logged out, then you'll be set available again when you log in.
- Improve searching for contacts in the overview: search more fields,
show a more meaningful name, require that all search terms match.
- Improve search for applications in the overview: take frequency into
account and tweak match algorithm
- Remove the "Show Password" switch from network password prompts, and
move the functionality to a right-click menu
- Add context menus with Cut/Paste options to most entries
- Display a caps-lock warning in password entries
- Show the state of installed extensions in Looking Glass
- Load user extensions after system ones
- Fix problem with many applications showing extra-large icons in
notifications
- Fix a problem where alt-Tab had trouble tracking the current
application with certain applications such as Emacs.
- Fix confusion between different users avatar images
- Remove behavior where you could switch workspaces by bumping
a dragged window in the overview against a screen edge; it was
leftover and just confusing.
- Fix long-standing bug where the Dash in the overview could end up
mis-sized and run off the screen
- Fix automatic launching of applications when media is inserted
- Fix handling of vertically stacked monitors with NVIDIA drivers
- Translation marking fixes
- Code cleanups and warning fixes
- Small memory leak fixes
- On screen keyboard:
+ Show the keyboard immediately when it's turned enabled
+ Fix problem where keyboard would hide when starting to type
in the search entry
+ Fix problem with keyboard hiding when selected accented characters
- Misc bug fixes
* debian/control.in:
- Bump minimum mutter to 3.2.1
- Drop dependency against libdconf0 and let dh_installgsettings set
the right dependencies.
- Depends on cups-pk-helper instead of recommends to ensure that
the printer applet works (LP: #877367)
* 01_favorite_apps.patch: dropped, replaced by override file.
* New upstream release.
Preview Diff
1 | === removed directory '.pc/01_favorite_apps.patch' | |||
2 | === removed directory '.pc/01_favorite_apps.patch/data' | |||
3 | === removed file '.pc/01_favorite_apps.patch/data/org.gnome.shell.gschema.xml.in' | |||
4 | --- .pc/01_favorite_apps.patch/data/org.gnome.shell.gschema.xml.in 2011-09-22 08:50:45 +0000 | |||
5 | +++ .pc/01_favorite_apps.patch/data/org.gnome.shell.gschema.xml.in 1970-01-01 00:00:00 +0000 | |||
6 | @@ -1,136 +0,0 @@ | |||
7 | 1 | <schemalist> | ||
8 | 2 | <schema id="org.gnome.shell" path="/org/gnome/shell/" | ||
9 | 3 | gettext-domain="@GETTEXT_PACKAGE@"> | ||
10 | 4 | <key name="development-tools" type="b"> | ||
11 | 5 | <default>true</default> | ||
12 | 6 | <_summary> | ||
13 | 7 | Enable internal tools useful for developers and testers from Alt-F2 | ||
14 | 8 | </_summary> | ||
15 | 9 | <_description> | ||
16 | 10 | Allows access to internal debugging and monitoring tools | ||
17 | 11 | using the Alt-F2 dialog. | ||
18 | 12 | </_description> | ||
19 | 13 | </key> | ||
20 | 14 | <key name="enabled-extensions" type="as"> | ||
21 | 15 | <default>[]</default> | ||
22 | 16 | <_summary>Uuids of extensions to enable</_summary> | ||
23 | 17 | <_description> | ||
24 | 18 | GNOME Shell extensions have a uuid property; this key lists extensions | ||
25 | 19 | which should be loaded. disabled-extensions overrides this setting for | ||
26 | 20 | extensions that appear in both lists. | ||
27 | 21 | </_description> | ||
28 | 22 | </key> | ||
29 | 23 | <key name="enable-app-monitoring" type="b"> | ||
30 | 24 | <default>true</default> | ||
31 | 25 | <_summary>Whether to collect stats about applications usage</_summary> | ||
32 | 26 | <_description> | ||
33 | 27 | The shell normally monitors active applications in order to present | ||
34 | 28 | the most used ones (e.g. in launchers). While this data will be | ||
35 | 29 | kept private, you may want to disable this for privacy reasons. | ||
36 | 30 | Please note that doing so won't remove already saved data. | ||
37 | 31 | </_description> | ||
38 | 32 | </key> | ||
39 | 33 | <key name="favorite-apps" type="as"> | ||
40 | 34 | <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> | ||
41 | 35 | <_summary>List of desktop file IDs for favorite applications</_summary> | ||
42 | 36 | <_description> | ||
43 | 37 | The applications corresponding to these identifiers | ||
44 | 38 | will be displayed in the favorites area. | ||
45 | 39 | </_description> | ||
46 | 40 | </key> | ||
47 | 41 | <key name="disabled-open-search-providers" type="as"> | ||
48 | 42 | <default>[]</default> | ||
49 | 43 | <_summary>disabled OpenSearch providers</_summary> | ||
50 | 44 | </key> | ||
51 | 45 | <key name="command-history" type="as"> | ||
52 | 46 | <default>[]</default> | ||
53 | 47 | <_summary>History for command (Alt-F2) dialog</_summary> | ||
54 | 48 | </key> | ||
55 | 49 | <key name="looking-glass-history" type="as"> | ||
56 | 50 | <default>[]</default> | ||
57 | 51 | <_summary>History for the looking glass dialog</_summary> | ||
58 | 52 | </key> | ||
59 | 53 | <child name="clock" schema="org.gnome.shell.clock"/> | ||
60 | 54 | <child name="calendar" schema="org.gnome.shell.calendar"/> | ||
61 | 55 | <child name="recorder" schema="org.gnome.shell.recorder"/> | ||
62 | 56 | <child name="keyboard" schema="org.gnome.shell.keyboard"/> | ||
63 | 57 | </schema> | ||
64 | 58 | |||
65 | 59 | <schema id="org.gnome.shell.calendar" path="/org/gnome/shell/calendar/" | ||
66 | 60 | gettext-domain="@GETTEXT_PACKAGE@"> | ||
67 | 61 | <key name="show-weekdate" type="b"> | ||
68 | 62 | <default>false</default> | ||
69 | 63 | <_summary>Show the week date in the calendar</_summary> | ||
70 | 64 | <_description> | ||
71 | 65 | If true, display the ISO week date in the calendar. | ||
72 | 66 | </_description> | ||
73 | 67 | </key> | ||
74 | 68 | </schema> | ||
75 | 69 | |||
76 | 70 | <schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/" | ||
77 | 71 | gettext-domain="@GETTEXT_PACKAGE@"> | ||
78 | 72 | <key name="keyboard-type" type="s"> | ||
79 | 73 | <default>'touch'</default> | ||
80 | 74 | <_summary>Which keyboard to use</_summary> | ||
81 | 75 | <_description> | ||
82 | 76 | The type of keyboard to use. | ||
83 | 77 | </_description> | ||
84 | 78 | </key> | ||
85 | 79 | </schema> | ||
86 | 80 | |||
87 | 81 | <schema id="org.gnome.shell.clock" path="/org/gnome/shell/clock/" | ||
88 | 82 | gettext-domain="@GETTEXT_PACKAGE@"> | ||
89 | 83 | <key name="show-seconds" type="b"> | ||
90 | 84 | <default>false</default> | ||
91 | 85 | <_summary>Show time with seconds</_summary> | ||
92 | 86 | <_description> | ||
93 | 87 | If true, display seconds in time. | ||
94 | 88 | </_description> | ||
95 | 89 | </key> | ||
96 | 90 | <key name="show-date" type="b"> | ||
97 | 91 | <default>false</default> | ||
98 | 92 | <_summary>Show date in clock</_summary> | ||
99 | 93 | <_description> | ||
100 | 94 | If true, display date in the clock, in addition to time. | ||
101 | 95 | </_description> | ||
102 | 96 | </key> | ||
103 | 97 | </schema> | ||
104 | 98 | |||
105 | 99 | <schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/" | ||
106 | 100 | gettext-domain="@GETTEXT_PACKAGE@"> | ||
107 | 101 | <key name="framerate" type="i"> | ||
108 | 102 | <default>15</default> | ||
109 | 103 | <_summary>Framerate used for recording screencasts.</_summary> | ||
110 | 104 | <_description> | ||
111 | 105 | The framerate of the resulting screencast recordered | ||
112 | 106 | by GNOME Shell's screencast recorder in frames-per-second. | ||
113 | 107 | </_description> | ||
114 | 108 | </key> | ||
115 | 109 | <key name="pipeline" type="s"> | ||
116 | 110 | <default>''</default> | ||
117 | 111 | <_summary>The gstreamer pipeline used to encode the screencast</_summary> | ||
118 | 112 | <_description> | ||
119 | 113 | Sets the GStreamer pipeline used to encode recordings. | ||
120 | 114 | It follows the syntax used for gst-launch. The pipeline should have | ||
121 | 115 | an unconnected sink pad where the recorded video is recorded. It will | ||
122 | 116 | normally have a unconnected source pad; output from that pad | ||
123 | 117 | will be written into the output file. However the pipeline can also | ||
124 | 118 | take care of its own output - this might be used to send the output | ||
125 | 119 | to an icecast server via shout2send or similar. When unset or set | ||
126 | 120 | to an empty value, the default pipeline will be used. This is currently | ||
127 | 121 | 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' | ||
128 | 122 | and records to WEBM using the VP8 codec. %T is used as a placeholder | ||
129 | 123 | for a guess at the optimal thread count on the system. | ||
130 | 124 | </_description> | ||
131 | 125 | </key> | ||
132 | 126 | <key name="file-extension" type="s"> | ||
133 | 127 | <default>'webm'</default> | ||
134 | 128 | <_summary>File extension used for storing the screencast</_summary> | ||
135 | 129 | <_description> | ||
136 | 130 | The filename for recorded screencasts will be a unique filename | ||
137 | 131 | based on the current date, and use this extension. It should be | ||
138 | 132 | changed when recording to a different container format. | ||
139 | 133 | </_description> | ||
140 | 134 | </key> | ||
141 | 135 | </schema> | ||
142 | 136 | </schemalist> | ||
143 | 137 | 0 | ||
144 | === modified file '.pc/03_remove-glx-dependency-on-armel.patch/configure' | |||
145 | --- .pc/03_remove-glx-dependency-on-armel.patch/configure 2011-09-28 06:48:58 +0000 | |||
146 | +++ .pc/03_remove-glx-dependency-on-armel.patch/configure 2012-01-18 14:13:28 +0000 | |||
147 | @@ -1,6 +1,6 @@ | |||
148 | 1 | #! /bin/sh | 1 | #! /bin/sh |
149 | 2 | # Guess values for system-dependent variables and create Makefiles. | 2 | # Guess values for system-dependent variables and create Makefiles. |
151 | 3 | # Generated by GNU Autoconf 2.68 for gnome-shell 3.2.0. | 3 | # Generated by GNU Autoconf 2.68 for gnome-shell 3.2.1. |
152 | 4 | # | 4 | # |
153 | 5 | # Report bugs to <https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell>. | 5 | # Report bugs to <https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell>. |
154 | 6 | # | 6 | # |
155 | @@ -571,8 +571,8 @@ | |||
156 | 571 | # Identity of this package. | 571 | # Identity of this package. |
157 | 572 | PACKAGE_NAME='gnome-shell' | 572 | PACKAGE_NAME='gnome-shell' |
158 | 573 | PACKAGE_TARNAME='gnome-shell' | 573 | PACKAGE_TARNAME='gnome-shell' |
161 | 574 | PACKAGE_VERSION='3.2.0' | 574 | PACKAGE_VERSION='3.2.1' |
162 | 575 | PACKAGE_STRING='gnome-shell 3.2.0' | 575 | PACKAGE_STRING='gnome-shell 3.2.1' |
163 | 576 | PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell' | 576 | PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell' |
164 | 577 | PACKAGE_URL='' | 577 | PACKAGE_URL='' |
165 | 578 | 578 | ||
166 | @@ -1453,7 +1453,7 @@ | |||
167 | 1453 | # Omit some internal or obsolete options to make the list less imposing. | 1453 | # Omit some internal or obsolete options to make the list less imposing. |
168 | 1454 | # This message is too long to be a string in the A/UX 3.1 sh. | 1454 | # This message is too long to be a string in the A/UX 3.1 sh. |
169 | 1455 | cat <<_ACEOF | 1455 | cat <<_ACEOF |
171 | 1456 | \`configure' configures gnome-shell 3.2.0 to adapt to many kinds of systems. | 1456 | \`configure' configures gnome-shell 3.2.1 to adapt to many kinds of systems. |
172 | 1457 | 1457 | ||
173 | 1458 | Usage: $0 [OPTION]... [VAR=VALUE]... | 1458 | Usage: $0 [OPTION]... [VAR=VALUE]... |
174 | 1459 | 1459 | ||
175 | @@ -1523,7 +1523,7 @@ | |||
176 | 1523 | 1523 | ||
177 | 1524 | if test -n "$ac_init_help"; then | 1524 | if test -n "$ac_init_help"; then |
178 | 1525 | case $ac_init_help in | 1525 | case $ac_init_help in |
180 | 1526 | short | recursive ) echo "Configuration of gnome-shell 3.2.0:";; | 1526 | short | recursive ) echo "Configuration of gnome-shell 3.2.1:";; |
181 | 1527 | esac | 1527 | esac |
182 | 1528 | cat <<\_ACEOF | 1528 | cat <<\_ACEOF |
183 | 1529 | 1529 | ||
184 | @@ -1698,7 +1698,7 @@ | |||
185 | 1698 | test -n "$ac_init_help" && exit $ac_status | 1698 | test -n "$ac_init_help" && exit $ac_status |
186 | 1699 | if $ac_init_version; then | 1699 | if $ac_init_version; then |
187 | 1700 | cat <<\_ACEOF | 1700 | cat <<\_ACEOF |
189 | 1701 | gnome-shell configure 3.2.0 | 1701 | gnome-shell configure 3.2.1 |
190 | 1702 | generated by GNU Autoconf 2.68 | 1702 | generated by GNU Autoconf 2.68 |
191 | 1703 | 1703 | ||
192 | 1704 | Copyright (C) 2010 Free Software Foundation, Inc. | 1704 | Copyright (C) 2010 Free Software Foundation, Inc. |
193 | @@ -2067,7 +2067,7 @@ | |||
194 | 2067 | This file contains any messages produced by compilers while | 2067 | This file contains any messages produced by compilers while |
195 | 2068 | running configure, to aid debugging if configure makes a mistake. | 2068 | running configure, to aid debugging if configure makes a mistake. |
196 | 2069 | 2069 | ||
198 | 2070 | It was created by gnome-shell $as_me 3.2.0, which was | 2070 | It was created by gnome-shell $as_me 3.2.1, which was |
199 | 2071 | generated by GNU Autoconf 2.68. Invocation command line was | 2071 | generated by GNU Autoconf 2.68. Invocation command line was |
200 | 2072 | 2072 | ||
201 | 2073 | $ $0 $@ | 2073 | $ $0 $@ |
202 | @@ -2894,7 +2894,7 @@ | |||
203 | 2894 | 2894 | ||
204 | 2895 | # Define the identity of the package. | 2895 | # Define the identity of the package. |
205 | 2896 | PACKAGE='gnome-shell' | 2896 | PACKAGE='gnome-shell' |
207 | 2897 | VERSION='3.2.0' | 2897 | VERSION='3.2.1' |
208 | 2898 | 2898 | ||
209 | 2899 | 2899 | ||
210 | 2900 | cat >>confdefs.h <<_ACEOF | 2900 | cat >>confdefs.h <<_ACEOF |
211 | @@ -14948,7 +14948,7 @@ | |||
212 | 14948 | CLUTTER_MIN_VERSION=1.7.5 | 14948 | CLUTTER_MIN_VERSION=1.7.5 |
213 | 14949 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | 14949 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 |
214 | 14950 | GJS_MIN_VERSION=1.29.18 | 14950 | GJS_MIN_VERSION=1.29.18 |
216 | 14951 | MUTTER_MIN_VERSION=3.0.0 | 14951 | MUTTER_MIN_VERSION=3.2.1 |
217 | 14952 | FOLKS_MIN_VERSION=0.5.2 | 14952 | FOLKS_MIN_VERSION=0.5.2 |
218 | 14953 | GTK_MIN_VERSION=3.0.0 | 14953 | GTK_MIN_VERSION=3.0.0 |
219 | 14954 | GIO_MIN_VERSION=2.29.10 | 14954 | GIO_MIN_VERSION=2.29.10 |
220 | @@ -17259,7 +17259,7 @@ | |||
221 | 17259 | # report actual input values of CONFIG_FILES etc. instead of their | 17259 | # report actual input values of CONFIG_FILES etc. instead of their |
222 | 17260 | # values after options handling. | 17260 | # values after options handling. |
223 | 17261 | ac_log=" | 17261 | ac_log=" |
225 | 17262 | This file was extended by gnome-shell $as_me 3.2.0, which was | 17262 | This file was extended by gnome-shell $as_me 3.2.1, which was |
226 | 17263 | generated by GNU Autoconf 2.68. Invocation command line was | 17263 | generated by GNU Autoconf 2.68. Invocation command line was |
227 | 17264 | 17264 | ||
228 | 17265 | CONFIG_FILES = $CONFIG_FILES | 17265 | CONFIG_FILES = $CONFIG_FILES |
229 | @@ -17325,7 +17325,7 @@ | |||
230 | 17325 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | 17325 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
231 | 17326 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | 17326 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
232 | 17327 | ac_cs_version="\\ | 17327 | ac_cs_version="\\ |
234 | 17328 | gnome-shell config.status 3.2.0 | 17328 | gnome-shell config.status 3.2.1 |
235 | 17329 | configured by $0, generated by GNU Autoconf 2.68, | 17329 | configured by $0, generated by GNU Autoconf 2.68, |
236 | 17330 | with options \\"\$ac_cs_config\\" | 17330 | with options \\"\$ac_cs_config\\" |
237 | 17331 | 17331 | ||
238 | 17332 | 17332 | ||
239 | === modified file '.pc/03_remove-glx-dependency-on-armel.patch/configure.ac' | |||
240 | --- .pc/03_remove-glx-dependency-on-armel.patch/configure.ac 2011-09-28 06:48:58 +0000 | |||
241 | +++ .pc/03_remove-glx-dependency-on-armel.patch/configure.ac 2012-01-18 14:13:28 +0000 | |||
242 | @@ -1,5 +1,5 @@ | |||
243 | 1 | AC_PREREQ(2.63) | 1 | AC_PREREQ(2.63) |
245 | 2 | AC_INIT([gnome-shell],[3.2.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | 2 | AC_INIT([gnome-shell],[3.2.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) |
246 | 3 | 3 | ||
247 | 4 | AC_CONFIG_HEADERS([config.h]) | 4 | AC_CONFIG_HEADERS([config.h]) |
248 | 5 | AC_CONFIG_SRCDIR([src/shell-global.c]) | 5 | AC_CONFIG_SRCDIR([src/shell-global.c]) |
249 | @@ -67,7 +67,7 @@ | |||
250 | 67 | CLUTTER_MIN_VERSION=1.7.5 | 67 | CLUTTER_MIN_VERSION=1.7.5 |
251 | 68 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | 68 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 |
252 | 69 | GJS_MIN_VERSION=1.29.18 | 69 | GJS_MIN_VERSION=1.29.18 |
254 | 70 | MUTTER_MIN_VERSION=3.0.0 | 70 | MUTTER_MIN_VERSION=3.2.1 |
255 | 71 | FOLKS_MIN_VERSION=0.5.2 | 71 | FOLKS_MIN_VERSION=0.5.2 |
256 | 72 | GTK_MIN_VERSION=3.0.0 | 72 | GTK_MIN_VERSION=3.0.0 |
257 | 73 | GIO_MIN_VERSION=2.29.10 | 73 | GIO_MIN_VERSION=2.29.10 |
258 | 74 | 74 | ||
259 | === added directory '.pc/04_bluetooth-fix-connection-from-gs-menu.patch' | |||
260 | === added file '.pc/04_bluetooth-fix-connection-from-gs-menu.patch/.timestamp' | |||
261 | === added directory '.pc/04_bluetooth-fix-connection-from-gs-menu.patch/js' | |||
262 | === added directory '.pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui' | |||
263 | === added directory '.pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui/status' | |||
264 | === added file '.pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui/status/bluetooth.js' | |||
265 | --- .pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui/status/bluetooth.js 1970-01-01 00:00:00 +0000 | |||
266 | +++ .pc/04_bluetooth-fix-connection-from-gs-menu.patch/js/ui/status/bluetooth.js 2012-01-18 14:13:28 +0000 | |||
267 | @@ -0,0 +1,508 @@ | |||
268 | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||
269 | 2 | |||
270 | 3 | const Clutter = imports.gi.Clutter; | ||
271 | 4 | const Gdk = imports.gi.Gdk; | ||
272 | 5 | const GLib = imports.gi.GLib; | ||
273 | 6 | const Gio = imports.gi.Gio; | ||
274 | 7 | const GnomeBluetoothApplet = imports.gi.GnomeBluetoothApplet; | ||
275 | 8 | const Gtk = imports.gi.Gtk; | ||
276 | 9 | const Lang = imports.lang; | ||
277 | 10 | const Mainloop = imports.mainloop; | ||
278 | 11 | const St = imports.gi.St; | ||
279 | 12 | const Shell = imports.gi.Shell; | ||
280 | 13 | |||
281 | 14 | const Main = imports.ui.main; | ||
282 | 15 | const MessageTray = imports.ui.messageTray; | ||
283 | 16 | const PanelMenu = imports.ui.panelMenu; | ||
284 | 17 | const PopupMenu = imports.ui.popupMenu; | ||
285 | 18 | |||
286 | 19 | const ConnectionState = { | ||
287 | 20 | DISCONNECTED: 0, | ||
288 | 21 | CONNECTED: 1, | ||
289 | 22 | DISCONNECTING: 2, | ||
290 | 23 | CONNECTING: 3 | ||
291 | 24 | } | ||
292 | 25 | |||
293 | 26 | function Indicator() { | ||
294 | 27 | this._init.apply(this, arguments); | ||
295 | 28 | } | ||
296 | 29 | |||
297 | 30 | Indicator.prototype = { | ||
298 | 31 | __proto__: PanelMenu.SystemStatusButton.prototype, | ||
299 | 32 | |||
300 | 33 | _init: function() { | ||
301 | 34 | PanelMenu.SystemStatusButton.prototype._init.call(this, 'bluetooth-disabled', null); | ||
302 | 35 | |||
303 | 36 | GLib.spawn_command_line_sync ('pkill -f "^bluetooth-applet$"'); | ||
304 | 37 | this._applet = new GnomeBluetoothApplet.Applet(); | ||
305 | 38 | |||
306 | 39 | this._killswitch = new PopupMenu.PopupSwitchMenuItem(_("Bluetooth"), false); | ||
307 | 40 | this._applet.connect('notify::killswitch-state', Lang.bind(this, this._updateKillswitch)); | ||
308 | 41 | this._killswitch.connect('toggled', Lang.bind(this, function() { | ||
309 | 42 | let current_state = this._applet.killswitch_state; | ||
310 | 43 | if (current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED && | ||
311 | 44 | current_state != GnomeBluetoothApplet.KillswitchState.NO_ADAPTER) { | ||
312 | 45 | this._applet.killswitch_state = this._killswitch.state ? | ||
313 | 46 | GnomeBluetoothApplet.KillswitchState.UNBLOCKED: | ||
314 | 47 | GnomeBluetoothApplet.KillswitchState.SOFT_BLOCKED; | ||
315 | 48 | } else | ||
316 | 49 | this._killswitch.setToggleState(false); | ||
317 | 50 | })); | ||
318 | 51 | |||
319 | 52 | this._discoverable = new PopupMenu.PopupSwitchMenuItem(_("Visibility"), this._applet.discoverable); | ||
320 | 53 | this._applet.connect('notify::discoverable', Lang.bind(this, function() { | ||
321 | 54 | this._discoverable.setToggleState(this._applet.discoverable); | ||
322 | 55 | })); | ||
323 | 56 | this._discoverable.connect('toggled', Lang.bind(this, function() { | ||
324 | 57 | this._applet.discoverable = this._discoverable.state; | ||
325 | 58 | })); | ||
326 | 59 | |||
327 | 60 | this._updateKillswitch(); | ||
328 | 61 | this.menu.addMenuItem(this._killswitch); | ||
329 | 62 | this.menu.addMenuItem(this._discoverable); | ||
330 | 63 | this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); | ||
331 | 64 | |||
332 | 65 | this._fullMenuItems = [new PopupMenu.PopupSeparatorMenuItem(), | ||
333 | 66 | new PopupMenu.PopupMenuItem(_("Send Files to Device...")), | ||
334 | 67 | new PopupMenu.PopupMenuItem(_("Set up a New Device...")), | ||
335 | 68 | new PopupMenu.PopupSeparatorMenuItem()]; | ||
336 | 69 | this._hasDevices = false; | ||
337 | 70 | |||
338 | 71 | this._fullMenuItems[1].connect('activate', function() { | ||
339 | 72 | GLib.spawn_command_line_async('bluetooth-sendto'); | ||
340 | 73 | }); | ||
341 | 74 | this._fullMenuItems[2].connect('activate', function() { | ||
342 | 75 | GLib.spawn_command_line_async('bluetooth-wizard'); | ||
343 | 76 | }); | ||
344 | 77 | |||
345 | 78 | for (let i = 0; i < this._fullMenuItems.length; i++) { | ||
346 | 79 | let item = this._fullMenuItems[i]; | ||
347 | 80 | this.menu.addMenuItem(item); | ||
348 | 81 | } | ||
349 | 82 | |||
350 | 83 | this._deviceItemPosition = 3; | ||
351 | 84 | this._deviceItems = []; | ||
352 | 85 | this._applet.connect('devices-changed', Lang.bind(this, this._updateDevices)); | ||
353 | 86 | this._updateDevices(); | ||
354 | 87 | |||
355 | 88 | this._applet.connect('notify::show-full-menu', Lang.bind(this, this._updateFullMenu)); | ||
356 | 89 | this._updateFullMenu(); | ||
357 | 90 | |||
358 | 91 | this.menu.addSettingsAction(_("Bluetooth Settings"), 'bluetooth-properties.desktop'); | ||
359 | 92 | |||
360 | 93 | this._applet.connect('pincode-request', Lang.bind(this, this._pinRequest)); | ||
361 | 94 | this._applet.connect('confirm-request', Lang.bind(this, this._confirmRequest)); | ||
362 | 95 | this._applet.connect('auth-request', Lang.bind(this, this._authRequest)); | ||
363 | 96 | this._applet.connect('cancel-request', Lang.bind(this, this._cancelRequest)); | ||
364 | 97 | }, | ||
365 | 98 | |||
366 | 99 | _updateKillswitch: function() { | ||
367 | 100 | let current_state = this._applet.killswitch_state; | ||
368 | 101 | let on = current_state == GnomeBluetoothApplet.KillswitchState.UNBLOCKED; | ||
369 | 102 | let has_adapter = current_state != GnomeBluetoothApplet.KillswitchState.NO_ADAPTER; | ||
370 | 103 | let can_toggle = current_state != GnomeBluetoothApplet.KillswitchState.NO_ADAPTER && | ||
371 | 104 | current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED; | ||
372 | 105 | |||
373 | 106 | this._killswitch.setToggleState(on); | ||
374 | 107 | if (can_toggle) | ||
375 | 108 | this._killswitch.setStatus(null); | ||
376 | 109 | else | ||
377 | 110 | /* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */ | ||
378 | 111 | this._killswitch.setStatus(_("hardware disabled")); | ||
379 | 112 | |||
380 | 113 | if (has_adapter) | ||
381 | 114 | this.actor.show(); | ||
382 | 115 | else | ||
383 | 116 | this.actor.hide(); | ||
384 | 117 | |||
385 | 118 | if (on) { | ||
386 | 119 | this._discoverable.actor.show(); | ||
387 | 120 | this.setIcon('bluetooth-active'); | ||
388 | 121 | } else { | ||
389 | 122 | this._discoverable.actor.hide(); | ||
390 | 123 | this.setIcon('bluetooth-disabled'); | ||
391 | 124 | } | ||
392 | 125 | }, | ||
393 | 126 | |||
394 | 127 | _updateDevices: function() { | ||
395 | 128 | let devices = this._applet.get_devices(); | ||
396 | 129 | |||
397 | 130 | let newlist = [ ]; | ||
398 | 131 | for (let i = 0; i < this._deviceItems.length; i++) { | ||
399 | 132 | let item = this._deviceItems[i]; | ||
400 | 133 | let destroy = true; | ||
401 | 134 | for (let j = 0; j < devices.length; j++) { | ||
402 | 135 | if (item._device.device_path == devices[j].device_path) { | ||
403 | 136 | this._updateDeviceItem(item, devices[j]); | ||
404 | 137 | destroy = false; | ||
405 | 138 | break; | ||
406 | 139 | } | ||
407 | 140 | } | ||
408 | 141 | if (destroy) | ||
409 | 142 | item.destroy(); | ||
410 | 143 | else | ||
411 | 144 | newlist.push(item); | ||
412 | 145 | } | ||
413 | 146 | |||
414 | 147 | this._deviceItems = newlist; | ||
415 | 148 | this._hasDevices = newlist.length > 0; | ||
416 | 149 | for (let i = 0; i < devices.length; i++) { | ||
417 | 150 | let d = devices[i]; | ||
418 | 151 | if (d._item) | ||
419 | 152 | continue; | ||
420 | 153 | let item = this._createDeviceItem(d); | ||
421 | 154 | if (item) { | ||
422 | 155 | this.menu.addMenuItem(item, this._deviceItemPosition + this._deviceItems.length); | ||
423 | 156 | this._deviceItems.push(item); | ||
424 | 157 | this._hasDevices = true; | ||
425 | 158 | } | ||
426 | 159 | } | ||
427 | 160 | }, | ||
428 | 161 | |||
429 | 162 | _updateDeviceItem: function(item, device) { | ||
430 | 163 | if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) { | ||
431 | 164 | item.destroy(); | ||
432 | 165 | return; | ||
433 | 166 | } | ||
434 | 167 | |||
435 | 168 | let prevDevice = item._device; | ||
436 | 169 | let prevCapabilities = prevDevice.capabilities; | ||
437 | 170 | let prevCanConnect = prevDevice.can_connect; | ||
438 | 171 | |||
439 | 172 | // adopt the new device object | ||
440 | 173 | item._device = device; | ||
441 | 174 | device._item = item; | ||
442 | 175 | |||
443 | 176 | // update properties | ||
444 | 177 | item.label.text = device.alias; | ||
445 | 178 | |||
446 | 179 | if (prevCapabilities != device.capabilities || | ||
447 | 180 | prevCanConnect != device.can_connect) { | ||
448 | 181 | // need to rebuild the submenu | ||
449 | 182 | item.menu.removeAll(); | ||
450 | 183 | this._buildDeviceSubMenu(item, device); | ||
451 | 184 | } | ||
452 | 185 | |||
453 | 186 | // update connected property | ||
454 | 187 | if (device.can_connect) | ||
455 | 188 | item._connectedMenuitem.setToggleState(device.connected); | ||
456 | 189 | }, | ||
457 | 190 | |||
458 | 191 | _createDeviceItem: function(device) { | ||
459 | 192 | if (!device.can_connect && device.capabilities == GnomeBluetoothApplet.Capabilities.NONE) | ||
460 | 193 | return null; | ||
461 | 194 | let item = new PopupMenu.PopupSubMenuMenuItem(device.alias); | ||
462 | 195 | |||
463 | 196 | // adopt the device object, and add a back link | ||
464 | 197 | item._device = device; | ||
465 | 198 | device._item = item; | ||
466 | 199 | |||
467 | 200 | this._buildDeviceSubMenu(item, device); | ||
468 | 201 | |||
469 | 202 | return item; | ||
470 | 203 | }, | ||
471 | 204 | |||
472 | 205 | _buildDeviceSubMenu: function(item, device) { | ||
473 | 206 | if (device.can_connect) { | ||
474 | 207 | item._connected = device.connected; | ||
475 | 208 | item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); | ||
476 | 209 | item._connectedMenuitem.connect('toggled', Lang.bind(this, function() { | ||
477 | 210 | if (item._connected > ConnectionState.CONNECTED) { | ||
478 | 211 | // operation already in progress, revert | ||
479 | 212 | // (should not happen anyway) | ||
480 | 213 | menuitem.setToggleState(menuitem.state); | ||
481 | 214 | } | ||
482 | 215 | if (item._connected) { | ||
483 | 216 | item._connected = ConnectionState.DISCONNECTING; | ||
484 | 217 | menuitem.setStatus(_("disconnecting...")); | ||
485 | 218 | this._applet.disconnect_device(item._device.device_path, function(applet, success) { | ||
486 | 219 | if (success) { // apply | ||
487 | 220 | item._connected = ConnectionState.DISCONNECTED; | ||
488 | 221 | menuitem.setToggleState(false); | ||
489 | 222 | } else { // revert | ||
490 | 223 | item._connected = ConnectionState.CONNECTED; | ||
491 | 224 | menuitem.setToggleState(true); | ||
492 | 225 | } | ||
493 | 226 | menuitem.setStatus(null); | ||
494 | 227 | }); | ||
495 | 228 | } else { | ||
496 | 229 | item._connected = ConnectionState.CONNECTING; | ||
497 | 230 | menuitem.setStatus(_("connecting...")); | ||
498 | 231 | this._applet.connect_device(item._device.device_path, function(applet, success) { | ||
499 | 232 | if (success) { // apply | ||
500 | 233 | item._connected = ConnectionState.CONNECTED; | ||
501 | 234 | menuitem.setToggleState(true); | ||
502 | 235 | } else { // revert | ||
503 | 236 | item._connected = ConnectionState.DISCONNECTED; | ||
504 | 237 | menuitem.setToggleState(false); | ||
505 | 238 | } | ||
506 | 239 | menuitem.setStatus(null); | ||
507 | 240 | }); | ||
508 | 241 | } | ||
509 | 242 | })); | ||
510 | 243 | |||
511 | 244 | item.menu.addMenuItem(item._connectedMenuitem); | ||
512 | 245 | } | ||
513 | 246 | |||
514 | 247 | if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_PUSH) { | ||
515 | 248 | item.menu.addAction(_("Send Files..."), Lang.bind(this, function() { | ||
516 | 249 | this._applet.send_to_address(device.bdaddr, device.alias); | ||
517 | 250 | })); | ||
518 | 251 | } | ||
519 | 252 | if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_FILE_TRANSFER) { | ||
520 | 253 | item.menu.addAction(_("Browse Files..."), Lang.bind(this, function(event) { | ||
521 | 254 | this._applet.browse_address(device.bdaddr, event.get_time(), | ||
522 | 255 | Lang.bind(this, function(applet, result) { | ||
523 | 256 | try { | ||
524 | 257 | applet.browse_address_finish(result); | ||
525 | 258 | } catch (e) { | ||
526 | 259 | this._ensureSource(); | ||
527 | 260 | this._source.notify(new MessageTray.Notification(this._source, | ||
528 | 261 | _("Bluetooth"), | ||
529 | 262 | _("Error browsing device"), | ||
530 | 263 | { body: _("The requested device cannot be browsed, error is '%s'").format(e) })); | ||
531 | 264 | } | ||
532 | 265 | })); | ||
533 | 266 | })); | ||
534 | 267 | } | ||
535 | 268 | |||
536 | 269 | switch (device.type) { | ||
537 | 270 | case GnomeBluetoothApplet.Type.KEYBOARD: | ||
538 | 271 | item.menu.addSettingsAction(_("Keyboard Settings"), 'gnome-keyboard-panel.desktop'); | ||
539 | 272 | break; | ||
540 | 273 | case GnomeBluetoothApplet.Type.MOUSE: | ||
541 | 274 | item.menu.addSettingsAction(_("Mouse Settings"), 'gnome-mouse-panel.desktop'); | ||
542 | 275 | break; | ||
543 | 276 | case GnomeBluetoothApplet.Type.HEADSET: | ||
544 | 277 | case GnomeBluetoothApplet.Type.HEADPHONES: | ||
545 | 278 | case GnomeBluetoothApplet.Type.OTHER_AUDIO: | ||
546 | 279 | item.menu.addSettingsAction(_("Sound Settings"), 'gnome-sound-panel.desktop'); | ||
547 | 280 | break; | ||
548 | 281 | default: | ||
549 | 282 | break; | ||
550 | 283 | } | ||
551 | 284 | }, | ||
552 | 285 | |||
553 | 286 | _updateFullMenu: function() { | ||
554 | 287 | if (this._applet.show_full_menu) { | ||
555 | 288 | this._showAll(this._fullMenuItems); | ||
556 | 289 | if (this._hasDevices) | ||
557 | 290 | this._showAll(this._deviceItems); | ||
558 | 291 | } else { | ||
559 | 292 | this._hideAll(this._fullMenuItems); | ||
560 | 293 | this._hideAll(this._deviceItems); | ||
561 | 294 | } | ||
562 | 295 | }, | ||
563 | 296 | |||
564 | 297 | _showAll: function(items) { | ||
565 | 298 | for (let i = 0; i < items.length; i++) | ||
566 | 299 | items[i].actor.show(); | ||
567 | 300 | }, | ||
568 | 301 | |||
569 | 302 | _hideAll: function(items) { | ||
570 | 303 | for (let i = 0; i < items.length; i++) | ||
571 | 304 | items[i].actor.hide(); | ||
572 | 305 | }, | ||
573 | 306 | |||
574 | 307 | _destroyAll: function(items) { | ||
575 | 308 | for (let i = 0; i < items.length; i++) | ||
576 | 309 | items[i].destroy(); | ||
577 | 310 | }, | ||
578 | 311 | |||
579 | 312 | _ensureSource: function() { | ||
580 | 313 | if (!this._source) { | ||
581 | 314 | this._source = new Source(); | ||
582 | 315 | Main.messageTray.add(this._source); | ||
583 | 316 | } | ||
584 | 317 | }, | ||
585 | 318 | |||
586 | 319 | _authRequest: function(applet, device_path, name, long_name, uuid) { | ||
587 | 320 | this._ensureSource(); | ||
588 | 321 | this._source.notify(new AuthNotification(this._source, this._applet, device_path, name, long_name, uuid)); | ||
589 | 322 | }, | ||
590 | 323 | |||
591 | 324 | _confirmRequest: function(applet, device_path, name, long_name, pin) { | ||
592 | 325 | this._ensureSource(); | ||
593 | 326 | this._source.notify(new ConfirmNotification(this._source, this._applet, device_path, name, long_name, pin)); | ||
594 | 327 | }, | ||
595 | 328 | |||
596 | 329 | _pinRequest: function(applet, device_path, name, long_name, numeric) { | ||
597 | 330 | this._ensureSource(); | ||
598 | 331 | this._source.notify(new PinNotification(this._source, this._applet, device_path, name, long_name, numeric)); | ||
599 | 332 | }, | ||
600 | 333 | |||
601 | 334 | _cancelRequest: function() { | ||
602 | 335 | this._source.destroy(); | ||
603 | 336 | } | ||
604 | 337 | } | ||
605 | 338 | |||
606 | 339 | function Source() { | ||
607 | 340 | this._init.apply(this, arguments); | ||
608 | 341 | } | ||
609 | 342 | |||
610 | 343 | Source.prototype = { | ||
611 | 344 | __proto__: MessageTray.Source.prototype, | ||
612 | 345 | |||
613 | 346 | _init: function() { | ||
614 | 347 | MessageTray.Source.prototype._init.call(this, _("Bluetooth")); | ||
615 | 348 | |||
616 | 349 | this._setSummaryIcon(this.createNotificationIcon()); | ||
617 | 350 | }, | ||
618 | 351 | |||
619 | 352 | notify: function(notification) { | ||
620 | 353 | this._private_destroyId = notification.connect('destroy', Lang.bind(this, function(notification) { | ||
621 | 354 | if (this.notification == notification) { | ||
622 | 355 | // the destroyed notification is the last for this source | ||
623 | 356 | this.notification.disconnect(this._private_destroyId); | ||
624 | 357 | this.destroy(); | ||
625 | 358 | } | ||
626 | 359 | })); | ||
627 | 360 | |||
628 | 361 | MessageTray.Source.prototype.notify.call(this, notification); | ||
629 | 362 | }, | ||
630 | 363 | |||
631 | 364 | createNotificationIcon: function() { | ||
632 | 365 | return new St.Icon({ icon_name: 'bluetooth-active', | ||
633 | 366 | icon_type: St.IconType.SYMBOLIC, | ||
634 | 367 | icon_size: this.ICON_SIZE }); | ||
635 | 368 | } | ||
636 | 369 | } | ||
637 | 370 | |||
638 | 371 | function AuthNotification() { | ||
639 | 372 | this._init.apply(this, arguments); | ||
640 | 373 | } | ||
641 | 374 | |||
642 | 375 | AuthNotification.prototype = { | ||
643 | 376 | __proto__: MessageTray.Notification.prototype, | ||
644 | 377 | |||
645 | 378 | _init: function(source, applet, device_path, name, long_name, uuid) { | ||
646 | 379 | MessageTray.Notification.prototype._init.call(this, | ||
647 | 380 | source, | ||
648 | 381 | _("Bluetooth"), | ||
649 | 382 | _("Authorization request from %s").format(name), | ||
650 | 383 | { customContent: true }); | ||
651 | 384 | this.setResident(true); | ||
652 | 385 | |||
653 | 386 | this._applet = applet; | ||
654 | 387 | this._devicePath = device_path; | ||
655 | 388 | this.addBody(_("Device %s wants access to the service '%s'").format(long_name, uuid)); | ||
656 | 389 | |||
657 | 390 | this.addButton('always-grant', _("Always grant access")); | ||
658 | 391 | this.addButton('grant', _("Grant this time only")); | ||
659 | 392 | this.addButton('reject', _("Reject")); | ||
660 | 393 | |||
661 | 394 | this.connect('action-invoked', Lang.bind(this, function(self, action) { | ||
662 | 395 | switch (action) { | ||
663 | 396 | case 'always-grant': | ||
664 | 397 | this._applet.agent_reply_auth(this._devicePath, true, true); | ||
665 | 398 | break; | ||
666 | 399 | case 'grant': | ||
667 | 400 | this._applet.agent_reply_auth(this._devicePath, true, false); | ||
668 | 401 | break; | ||
669 | 402 | case 'reject': | ||
670 | 403 | default: | ||
671 | 404 | this._applet.agent_reply_auth(this._devicePath, false, false); | ||
672 | 405 | } | ||
673 | 406 | this.destroy(); | ||
674 | 407 | })); | ||
675 | 408 | } | ||
676 | 409 | } | ||
677 | 410 | |||
678 | 411 | function ConfirmNotification() { | ||
679 | 412 | this._init.apply(this, arguments); | ||
680 | 413 | } | ||
681 | 414 | |||
682 | 415 | ConfirmNotification.prototype = { | ||
683 | 416 | __proto__: MessageTray.Notification.prototype, | ||
684 | 417 | |||
685 | 418 | _init: function(source, applet, device_path, name, long_name, pin) { | ||
686 | 419 | MessageTray.Notification.prototype._init.call(this, | ||
687 | 420 | source, | ||
688 | 421 | _("Bluetooth"), | ||
689 | 422 | _("Pairing confirmation for %s").format(name), | ||
690 | 423 | { customContent: true }); | ||
691 | 424 | this.setResident(true); | ||
692 | 425 | |||
693 | 426 | this._applet = applet; | ||
694 | 427 | this._devicePath = device_path; | ||
695 | 428 | this.addBody(_("Device %s wants to pair with this computer").format(long_name)); | ||
696 | 429 | this.addBody(_("Please confirm whether the PIN '%s' matches the one on the device.").format(pin)); | ||
697 | 430 | |||
698 | 431 | this.addButton('matches', _("Matches")); | ||
699 | 432 | this.addButton('does-not-match', _("Does not match")); | ||
700 | 433 | |||
701 | 434 | this.connect('action-invoked', Lang.bind(this, function(self, action) { | ||
702 | 435 | if (action == 'matches') | ||
703 | 436 | this._applet.agent_reply_confirm(this._devicePath, true); | ||
704 | 437 | else | ||
705 | 438 | this._applet.agent_reply_confirm(this._devicePath, false); | ||
706 | 439 | this.destroy(); | ||
707 | 440 | })); | ||
708 | 441 | } | ||
709 | 442 | } | ||
710 | 443 | |||
711 | 444 | function PinNotification() { | ||
712 | 445 | this._init.apply(this, arguments); | ||
713 | 446 | } | ||
714 | 447 | |||
715 | 448 | PinNotification.prototype = { | ||
716 | 449 | __proto__: MessageTray.Notification.prototype, | ||
717 | 450 | |||
718 | 451 | _init: function(source, applet, device_path, name, long_name, numeric) { | ||
719 | 452 | MessageTray.Notification.prototype._init.call(this, | ||
720 | 453 | source, | ||
721 | 454 | _("Bluetooth"), | ||
722 | 455 | _("Pairing request for %s").format(name), | ||
723 | 456 | { customContent: true }); | ||
724 | 457 | this.setResident(true); | ||
725 | 458 | |||
726 | 459 | this._applet = applet; | ||
727 | 460 | this._devicePath = device_path; | ||
728 | 461 | this._numeric = numeric; | ||
729 | 462 | this.addBody(_("Device %s wants to pair with this computer").format(long_name)); | ||
730 | 463 | this.addBody(_("Please enter the PIN mentioned on the device.")); | ||
731 | 464 | |||
732 | 465 | this._entry = new St.Entry(); | ||
733 | 466 | this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) { | ||
734 | 467 | let key = event.get_key_symbol(); | ||
735 | 468 | if (key == Clutter.KEY_Return) { | ||
736 | 469 | this.emit('action-invoked', 'ok'); | ||
737 | 470 | return true; | ||
738 | 471 | } else if (key == Clutter.KEY_Escape) { | ||
739 | 472 | this.emit('action-invoked', 'cancel'); | ||
740 | 473 | return true; | ||
741 | 474 | } | ||
742 | 475 | return false; | ||
743 | 476 | })); | ||
744 | 477 | this.addActor(this._entry); | ||
745 | 478 | |||
746 | 479 | this.addButton('ok', _("OK")); | ||
747 | 480 | this.addButton('cancel', _("Cancel")); | ||
748 | 481 | |||
749 | 482 | this.connect('action-invoked', Lang.bind(this, function(self, action) { | ||
750 | 483 | if (action == 'ok') { | ||
751 | 484 | if (this._numeric) { | ||
752 | 485 | let num = parseInt(this._entry.text); | ||
753 | 486 | if (isNaN(num)) { | ||
754 | 487 | // user reply was empty, or was invalid | ||
755 | 488 | // cancel the operation | ||
756 | 489 | num = -1; | ||
757 | 490 | } | ||
758 | 491 | this._applet.agent_reply_passkey(this._devicePath, num); | ||
759 | 492 | } else | ||
760 | 493 | this._applet.agent_reply_pincode(this._devicePath, this._entry.text); | ||
761 | 494 | } else { | ||
762 | 495 | if (this._numeric) | ||
763 | 496 | this._applet.agent_reply_passkey(this._devicePath, -1); | ||
764 | 497 | else | ||
765 | 498 | this._applet.agent_reply_pincode(this._devicePath, null); | ||
766 | 499 | } | ||
767 | 500 | this.destroy(); | ||
768 | 501 | })); | ||
769 | 502 | }, | ||
770 | 503 | |||
771 | 504 | grabFocus: function(lockTray) { | ||
772 | 505 | MessageTray.Notification.prototype.grabFocus.call(this, lockTray); | ||
773 | 506 | global.stage.set_key_focus(this._entry); | ||
774 | 507 | } | ||
775 | 508 | } | ||
776 | 0 | 509 | ||
777 | === modified file '.pc/applied-patches' | |||
778 | --- .pc/applied-patches 2011-09-22 08:50:45 +0000 | |||
779 | +++ .pc/applied-patches 2012-01-18 14:13:28 +0000 | |||
780 | @@ -1,2 +1,2 @@ | |||
781 | 1 | 01_favorite_apps.patch | ||
782 | 2 | 03_remove-glx-dependency-on-armel.patch | 1 | 03_remove-glx-dependency-on-armel.patch |
783 | 2 | 04_bluetooth-fix-connection-from-gs-menu.patch | ||
784 | 3 | 3 | ||
785 | === modified file 'NEWS' | |||
786 | --- NEWS 2011-09-28 00:41:45 +0000 | |||
787 | +++ NEWS 2012-01-18 14:13:28 +0000 | |||
788 | @@ -1,3 +1,69 @@ | |||
789 | 1 | 3.2.1 | ||
790 | 2 | ===== | ||
791 | 3 | * Restore the IM state on startup - if you were available in when you logged | ||
792 | 4 | out, then you'll be set available again when you log in. | ||
793 | 5 | [Florian; #65902, #661485] | ||
794 | 6 | * Improve searching for contacts in the overview: search more fields, | ||
795 | 7 | show a more meaningful name, require that all search terms match. | ||
796 | 8 | [Florian, Matthias; #660580] | ||
797 | 9 | * Improve search for applications in the overview: take frequency into | ||
798 | 10 | account and tweak match algorithm [Florian; #623372] | ||
799 | 11 | * Remove the "Show Password" switch from network password prompts, and | ||
800 | 12 | move the functionality to a right-click menu [Florian; #658948] | ||
801 | 13 | * Add context menus with Cut/Paste options to most entries [Florian; #659275] | ||
802 | 14 | * On screen keyboard: | ||
803 | 15 | - Show the keyboard immediately when it's turned enabled [Dan; #659743] | ||
804 | 16 | - Fix problem where keyboard would hide when starting to type | ||
805 | 17 | in the search entry [Nohemi; #661340] | ||
806 | 18 | - Fix problem with keyboard hiding when selected accented characters | ||
807 | 19 | [Nohemi; 661707] | ||
808 | 20 | * Login mode: | ||
809 | 21 | - Allow hitting Enter to select the first user [Ray; #657996] | ||
810 | 22 | - Fix flicker of a fingerprint prompt that could show up [Ray; #660492] | ||
811 | 23 | - Fix password bullets vanishing during login [Ray; #657894] | ||
812 | 24 | - Misc bug fixes and visual tweaks [Ray; #659763, #660919, #661479] | ||
813 | 25 | * Display a caps-lock warning in password entries [Florian; #660806] | ||
814 | 26 | * Show the state of installed extensions in Looking Glass [Jasper; #660494] | ||
815 | 27 | * Load user extensions after system ones [Jasper; #661815] | ||
816 | 28 | * Fix problem with many applications showing extra-large icons in | ||
817 | 29 | notifications [Marina; #659158] | ||
818 | 30 | * Fix a problem where alt-Tab had trouble tracking the current | ||
819 | 31 | application with certain applications such as Emacs. [Dan; #645026] | ||
820 | 32 | * Fix confusion between different users avatar images [Florian; #660585] | ||
821 | 33 | * Remove behavior where you could switch workspaces by bumping | ||
822 | 34 | a dragged window in the overview against a screen edge; it was | ||
823 | 35 | leftover and just confusing. [Florian; #660838] | ||
824 | 36 | * Fix long-standing bug where the Dash in the overview could end up mis-sized | ||
825 | 37 | and run off the screen [Florian; #649248] | ||
826 | 38 | * Fix automatic launching of applications when media is inserted | ||
827 | 39 | [Cosimo; #660821] | ||
828 | 40 | * Fix handling of vertically stacked monitors with NVIDIA drivers | ||
829 | 41 | [Florian; #661387] | ||
830 | 42 | * Translation marking fixes [Jasper, Wouter; #660600] | ||
831 | 43 | * Code cleanups and warning fixes [Adel, Dan, Florian, Jasper; | ||
832 | 44 | #659822, #659940, #660122, #660358, #660968, #661231] | ||
833 | 45 | * Small memory leak fixes [Florian, Jasper; #661231] | ||
834 | 46 | * Misc bug fixes [Adel, Florian, Jasper; #659274, #659861, #660166, #660310, | ||
835 | 47 | #660397, #660608, #660606, #660674, #660774. #660848, #661151, #661617] | ||
836 | 48 | |||
837 | 49 | Contributors: | ||
838 | 50 | Wouter Bolsterlee, Cosimo Cecchi, Matthias Clasen, Nohemi Fernandez, | ||
839 | 51 | Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode, Dan Winship, | ||
840 | 52 | Marina Zhurakhinskaya | ||
841 | 53 | |||
842 | 54 | Translations: | ||
843 | 55 | Tiffany Antopolski [eo], Xandru Armesto [ast], Alexander Shopov, | ||
844 | 56 | Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia], | ||
845 | 57 | Mario Blättermann, Paul Seyfert [de], Bruce Cowan [en_GB], | ||
846 | 58 | Jorge González, Daniel Mustieles [es], Arash Mousavi [fa], Bruno Brouard [fr], | ||
847 | 59 | Seán de Búrca [ga], Fran Diéguez [gl], Gabor Kelemen [hu], Luca Ferretti [it], | ||
848 | 60 | Takayuki Kusano [ja], Changwoo Ryu [ko], Erdal Ronahi [ku], | ||
849 | 61 | Algimantas Margevičius [lt], Rudolfs Mazurs [lv], Wouter Bolsterlee [nl], | ||
850 | 62 | Piotr Drąg [pl], Adorilson Bezerra [pt_BR], Yuri Myasoedov [ru], | ||
851 | 63 | Matej Urbančič [sl], Daniel Nylander [sv], Miroslav Nikolić [sr, sr@latin], | ||
852 | 64 | Tirumurti Vasudevan [ta], Krishnababu Krothapalli [te], Daniel Korostil [uk], | ||
853 | 65 | Nguyễn Thái Ngọc Duy [vi], YunQiang Su [zh_CN] | ||
854 | 66 | |||
855 | 1 | 3.2.0 | 67 | 3.2.0 |
856 | 2 | ===== | 68 | ===== |
857 | 3 | * Prevent the fallback on-screen keyboard from showing up while | 69 | * Prevent the fallback on-screen keyboard from showing up while |
858 | 4 | 70 | ||
859 | === modified file 'configure' | |||
860 | --- configure 2011-09-28 06:48:58 +0000 | |||
861 | +++ configure 2012-01-18 14:13:28 +0000 | |||
862 | @@ -1,6 +1,6 @@ | |||
863 | 1 | #! /bin/sh | 1 | #! /bin/sh |
864 | 2 | # Guess values for system-dependent variables and create Makefiles. | 2 | # Guess values for system-dependent variables and create Makefiles. |
866 | 3 | # Generated by GNU Autoconf 2.68 for gnome-shell 3.2.0. | 3 | # Generated by GNU Autoconf 2.68 for gnome-shell 3.2.1. |
867 | 4 | # | 4 | # |
868 | 5 | # Report bugs to <https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell>. | 5 | # Report bugs to <https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell>. |
869 | 6 | # | 6 | # |
870 | @@ -571,8 +571,8 @@ | |||
871 | 571 | # Identity of this package. | 571 | # Identity of this package. |
872 | 572 | PACKAGE_NAME='gnome-shell' | 572 | PACKAGE_NAME='gnome-shell' |
873 | 573 | PACKAGE_TARNAME='gnome-shell' | 573 | PACKAGE_TARNAME='gnome-shell' |
876 | 574 | PACKAGE_VERSION='3.2.0' | 574 | PACKAGE_VERSION='3.2.1' |
877 | 575 | PACKAGE_STRING='gnome-shell 3.2.0' | 575 | PACKAGE_STRING='gnome-shell 3.2.1' |
878 | 576 | PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell' | 576 | PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell' |
879 | 577 | PACKAGE_URL='' | 577 | PACKAGE_URL='' |
880 | 578 | 578 | ||
881 | @@ -1453,7 +1453,7 @@ | |||
882 | 1453 | # Omit some internal or obsolete options to make the list less imposing. | 1453 | # Omit some internal or obsolete options to make the list less imposing. |
883 | 1454 | # This message is too long to be a string in the A/UX 3.1 sh. | 1454 | # This message is too long to be a string in the A/UX 3.1 sh. |
884 | 1455 | cat <<_ACEOF | 1455 | cat <<_ACEOF |
886 | 1456 | \`configure' configures gnome-shell 3.2.0 to adapt to many kinds of systems. | 1456 | \`configure' configures gnome-shell 3.2.1 to adapt to many kinds of systems. |
887 | 1457 | 1457 | ||
888 | 1458 | Usage: $0 [OPTION]... [VAR=VALUE]... | 1458 | Usage: $0 [OPTION]... [VAR=VALUE]... |
889 | 1459 | 1459 | ||
890 | @@ -1523,7 +1523,7 @@ | |||
891 | 1523 | 1523 | ||
892 | 1524 | if test -n "$ac_init_help"; then | 1524 | if test -n "$ac_init_help"; then |
893 | 1525 | case $ac_init_help in | 1525 | case $ac_init_help in |
895 | 1526 | short | recursive ) echo "Configuration of gnome-shell 3.2.0:";; | 1526 | short | recursive ) echo "Configuration of gnome-shell 3.2.1:";; |
896 | 1527 | esac | 1527 | esac |
897 | 1528 | cat <<\_ACEOF | 1528 | cat <<\_ACEOF |
898 | 1529 | 1529 | ||
899 | @@ -1698,7 +1698,7 @@ | |||
900 | 1698 | test -n "$ac_init_help" && exit $ac_status | 1698 | test -n "$ac_init_help" && exit $ac_status |
901 | 1699 | if $ac_init_version; then | 1699 | if $ac_init_version; then |
902 | 1700 | cat <<\_ACEOF | 1700 | cat <<\_ACEOF |
904 | 1701 | gnome-shell configure 3.2.0 | 1701 | gnome-shell configure 3.2.1 |
905 | 1702 | generated by GNU Autoconf 2.68 | 1702 | generated by GNU Autoconf 2.68 |
906 | 1703 | 1703 | ||
907 | 1704 | Copyright (C) 2010 Free Software Foundation, Inc. | 1704 | Copyright (C) 2010 Free Software Foundation, Inc. |
908 | @@ -2067,7 +2067,7 @@ | |||
909 | 2067 | This file contains any messages produced by compilers while | 2067 | This file contains any messages produced by compilers while |
910 | 2068 | running configure, to aid debugging if configure makes a mistake. | 2068 | running configure, to aid debugging if configure makes a mistake. |
911 | 2069 | 2069 | ||
913 | 2070 | It was created by gnome-shell $as_me 3.2.0, which was | 2070 | It was created by gnome-shell $as_me 3.2.1, which was |
914 | 2071 | generated by GNU Autoconf 2.68. Invocation command line was | 2071 | generated by GNU Autoconf 2.68. Invocation command line was |
915 | 2072 | 2072 | ||
916 | 2073 | $ $0 $@ | 2073 | $ $0 $@ |
917 | @@ -2894,7 +2894,7 @@ | |||
918 | 2894 | 2894 | ||
919 | 2895 | # Define the identity of the package. | 2895 | # Define the identity of the package. |
920 | 2896 | PACKAGE='gnome-shell' | 2896 | PACKAGE='gnome-shell' |
922 | 2897 | VERSION='3.2.0' | 2897 | VERSION='3.2.1' |
923 | 2898 | 2898 | ||
924 | 2899 | 2899 | ||
925 | 2900 | cat >>confdefs.h <<_ACEOF | 2900 | cat >>confdefs.h <<_ACEOF |
926 | @@ -14948,7 +14948,7 @@ | |||
927 | 14948 | CLUTTER_MIN_VERSION=1.7.5 | 14948 | CLUTTER_MIN_VERSION=1.7.5 |
928 | 14949 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | 14949 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 |
929 | 14950 | GJS_MIN_VERSION=1.29.18 | 14950 | GJS_MIN_VERSION=1.29.18 |
931 | 14951 | MUTTER_MIN_VERSION=3.0.0 | 14951 | MUTTER_MIN_VERSION=3.2.1 |
932 | 14952 | FOLKS_MIN_VERSION=0.5.2 | 14952 | FOLKS_MIN_VERSION=0.5.2 |
933 | 14953 | GTK_MIN_VERSION=3.0.0 | 14953 | GTK_MIN_VERSION=3.0.0 |
934 | 14954 | GIO_MIN_VERSION=2.29.10 | 14954 | GIO_MIN_VERSION=2.29.10 |
935 | @@ -17250,7 +17250,7 @@ | |||
936 | 17250 | # report actual input values of CONFIG_FILES etc. instead of their | 17250 | # report actual input values of CONFIG_FILES etc. instead of their |
937 | 17251 | # values after options handling. | 17251 | # values after options handling. |
938 | 17252 | ac_log=" | 17252 | ac_log=" |
940 | 17253 | This file was extended by gnome-shell $as_me 3.2.0, which was | 17253 | This file was extended by gnome-shell $as_me 3.2.1, which was |
941 | 17254 | generated by GNU Autoconf 2.68. Invocation command line was | 17254 | generated by GNU Autoconf 2.68. Invocation command line was |
942 | 17255 | 17255 | ||
943 | 17256 | CONFIG_FILES = $CONFIG_FILES | 17256 | CONFIG_FILES = $CONFIG_FILES |
944 | @@ -17316,7 +17316,7 @@ | |||
945 | 17316 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | 17316 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
946 | 17317 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | 17317 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
947 | 17318 | ac_cs_version="\\ | 17318 | ac_cs_version="\\ |
949 | 17319 | gnome-shell config.status 3.2.0 | 17319 | gnome-shell config.status 3.2.1 |
950 | 17320 | configured by $0, generated by GNU Autoconf 2.68, | 17320 | configured by $0, generated by GNU Autoconf 2.68, |
951 | 17321 | with options \\"\$ac_cs_config\\" | 17321 | with options \\"\$ac_cs_config\\" |
952 | 17322 | 17322 | ||
953 | 17323 | 17323 | ||
954 | === modified file 'configure.ac' | |||
955 | --- configure.ac 2011-09-28 06:48:58 +0000 | |||
956 | +++ configure.ac 2012-01-18 14:13:28 +0000 | |||
957 | @@ -1,5 +1,5 @@ | |||
958 | 1 | AC_PREREQ(2.63) | 1 | AC_PREREQ(2.63) |
960 | 2 | AC_INIT([gnome-shell],[3.2.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | 2 | AC_INIT([gnome-shell],[3.2.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) |
961 | 3 | 3 | ||
962 | 4 | AC_CONFIG_HEADERS([config.h]) | 4 | AC_CONFIG_HEADERS([config.h]) |
963 | 5 | AC_CONFIG_SRCDIR([src/shell-global.c]) | 5 | AC_CONFIG_SRCDIR([src/shell-global.c]) |
964 | @@ -67,7 +67,7 @@ | |||
965 | 67 | CLUTTER_MIN_VERSION=1.7.5 | 67 | CLUTTER_MIN_VERSION=1.7.5 |
966 | 68 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | 68 | GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 |
967 | 69 | GJS_MIN_VERSION=1.29.18 | 69 | GJS_MIN_VERSION=1.29.18 |
969 | 70 | MUTTER_MIN_VERSION=3.0.0 | 70 | MUTTER_MIN_VERSION=3.2.1 |
970 | 71 | FOLKS_MIN_VERSION=0.5.2 | 71 | FOLKS_MIN_VERSION=0.5.2 |
971 | 72 | GTK_MIN_VERSION=3.0.0 | 72 | GTK_MIN_VERSION=3.0.0 |
972 | 73 | GIO_MIN_VERSION=2.29.10 | 73 | GIO_MIN_VERSION=2.29.10 |
973 | 74 | 74 | ||
974 | === modified file 'data/org.gnome.shell.gschema.xml.in' | |||
975 | --- data/org.gnome.shell.gschema.xml.in 2011-09-22 08:50:45 +0000 | |||
976 | +++ data/org.gnome.shell.gschema.xml.in 2012-01-18 14:13:28 +0000 | |||
977 | @@ -31,7 +31,7 @@ | |||
978 | 31 | </_description> | 31 | </_description> |
979 | 32 | </key> | 32 | </key> |
980 | 33 | <key name="favorite-apps" type="as"> | 33 | <key name="favorite-apps" type="as"> |
982 | 34 | <default>[ 'firefox.desktop', 'thunderbird.desktop', 'empathy.desktop', 'banshee.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> | 34 | <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> |
983 | 35 | <_summary>List of desktop file IDs for favorite applications</_summary> | 35 | <_summary>List of desktop file IDs for favorite applications</_summary> |
984 | 36 | <_description> | 36 | <_description> |
985 | 37 | The applications corresponding to these identifiers | 37 | The applications corresponding to these identifiers |
986 | @@ -50,6 +50,14 @@ | |||
987 | 50 | <default>[]</default> | 50 | <default>[]</default> |
988 | 51 | <_summary>History for the looking glass dialog</_summary> | 51 | <_summary>History for the looking glass dialog</_summary> |
989 | 52 | </key> | 52 | </key> |
990 | 53 | <key name="saved-im-presence" type="i"> | ||
991 | 54 | <default>1</default> | ||
992 | 55 | <_summary></_summary> | ||
993 | 56 | </key> | ||
994 | 57 | <key name="saved-session-presence" type="i"> | ||
995 | 58 | <default>0</default> | ||
996 | 59 | <_summary></_summary> | ||
997 | 60 | </key> | ||
998 | 53 | <child name="clock" schema="org.gnome.shell.clock"/> | 61 | <child name="clock" schema="org.gnome.shell.clock"/> |
999 | 54 | <child name="calendar" schema="org.gnome.shell.calendar"/> | 62 | <child name="calendar" schema="org.gnome.shell.calendar"/> |
1000 | 55 | <child name="recorder" schema="org.gnome.shell.recorder"/> | 63 | <child name="recorder" schema="org.gnome.shell.recorder"/> |
1001 | 56 | 64 | ||
1002 | === modified file 'data/theme/gdm.css' | |||
1003 | --- data/theme/gdm.css 2011-09-21 16:26:15 +0000 | |||
1004 | +++ data/theme/gdm.css 2012-01-18 14:13:28 +0000 | |||
1005 | @@ -98,8 +98,12 @@ | |||
1006 | 98 | color: #666666; | 98 | color: #666666; |
1007 | 99 | } | 99 | } |
1008 | 100 | 100 | ||
1009 | 101 | .login-dialog-not-listed-button:hover .login-dialog-not-listed-label { | ||
1010 | 102 | color: white; | ||
1011 | 103 | } | ||
1012 | 104 | |||
1013 | 101 | .login-dialog-prompt-layout { | 105 | .login-dialog-prompt-layout { |
1015 | 102 | padding-bottom: 64px; | 106 | padding-bottom: 32px; |
1016 | 103 | } | 107 | } |
1017 | 104 | .login-dialog-prompt-label { | 108 | .login-dialog-prompt-label { |
1018 | 105 | color: white; | 109 | color: white; |
1019 | @@ -117,6 +121,16 @@ | |||
1020 | 117 | width: 15em; | 121 | width: 15em; |
1021 | 118 | } | 122 | } |
1022 | 119 | 123 | ||
1023 | 124 | .login-dialog-prompt-entry .capslock-warning { | ||
1024 | 125 | icon-size: 16px; | ||
1025 | 126 | warning-color: #999; | ||
1026 | 127 | } | ||
1027 | 128 | |||
1028 | 129 | .login-dialog-prompt-entry:insensitive { | ||
1029 | 130 | color: rgba(0,0,0,0.7); | ||
1030 | 131 | border: 2px solid #565656; | ||
1031 | 132 | } | ||
1032 | 133 | |||
1033 | 120 | .login-dialog-session-list { | 134 | .login-dialog-session-list { |
1034 | 121 | color: #ffffff; | 135 | color: #ffffff; |
1035 | 122 | font-size: 10.5pt; | 136 | font-size: 10.5pt; |
1036 | 123 | 137 | ||
1037 | === modified file 'data/theme/gnome-shell.css' | |||
1038 | --- data/theme/gnome-shell.css 2011-09-21 16:26:15 +0000 | |||
1039 | +++ data/theme/gnome-shell.css 2012-01-18 14:13:28 +0000 | |||
1040 | @@ -907,7 +907,7 @@ | |||
1041 | 907 | font-weight: bold; | 907 | font-weight: bold; |
1042 | 908 | } | 908 | } |
1043 | 909 | 909 | ||
1045 | 910 | .lg-extension-actions { | 910 | .lg-extension-meta { |
1046 | 911 | spacing: 6px; | 911 | spacing: 6px; |
1047 | 912 | } | 912 | } |
1048 | 913 | 913 | ||
1049 | @@ -1907,6 +1907,12 @@ | |||
1050 | 1907 | border: 2px solid #3465a4; | 1907 | border: 2px solid #3465a4; |
1051 | 1908 | } | 1908 | } |
1052 | 1909 | 1909 | ||
1053 | 1910 | .polkit-dialog-password-entry .capslock-warning { | ||
1054 | 1911 | icon-size: 16px; | ||
1055 | 1912 | warning-color: #999; | ||
1056 | 1913 | padding: 0 4px; | ||
1057 | 1914 | } | ||
1058 | 1915 | |||
1059 | 1910 | .polkit-dialog-error-label { | 1916 | .polkit-dialog-error-label { |
1060 | 1911 | font-size: 10pt; | 1917 | font-size: 10pt; |
1061 | 1912 | color: #ffff00; | 1918 | color: #ffff00; |
1062 | @@ -1925,14 +1931,6 @@ | |||
1063 | 1925 | padding-bottom: 8px; | 1931 | padding-bottom: 8px; |
1064 | 1926 | } | 1932 | } |
1065 | 1927 | 1933 | ||
1066 | 1928 | .network-dialog-show-password-checkbox { | ||
1067 | 1929 | padding-top: 5px; | ||
1068 | 1930 | padding-bottom: 5px; | ||
1069 | 1931 | font-size: 10pt; | ||
1070 | 1932 | color: white; | ||
1071 | 1933 | spacing: 10px; | ||
1072 | 1934 | } | ||
1073 | 1935 | |||
1074 | 1936 | .network-dialog-secret-table { | 1934 | .network-dialog-secret-table { |
1075 | 1937 | spacing-rows: 15px; | 1935 | spacing-rows: 15px; |
1076 | 1938 | } | 1936 | } |
1077 | 1939 | 1937 | ||
1078 | === modified file 'debian/changelog' | |||
1079 | --- debian/changelog 2011-09-28 06:48:58 +0000 | |||
1080 | +++ debian/changelog 2012-01-18 14:13:28 +0000 | |||
1081 | @@ -1,3 +1,63 @@ | |||
1082 | 1 | gnome-shell (3.2.1-0ubuntu1.2~tkluck1) oneiric; urgency=low | ||
1083 | 2 | |||
1084 | 3 | * Fix bluetooth device connecting from gnome-shell menu | ||
1085 | 4 | |||
1086 | 5 | -- Timo Kluck <tkluck@infty.nl> Wed, 18 Jan 2012 14:34:22 +0100 | ||
1087 | 6 | |||
1088 | 7 | gnome-shell (3.2.1-0ubuntu1.1) oneiric-proposed; urgency=low | ||
1089 | 8 | |||
1090 | 9 | * No-change rebuild to fix up dependencies (LP: #903382) | ||
1091 | 10 | |||
1092 | 11 | -- Evan Broder <evan@ebroder.net> Mon, 19 Dec 2011 23:13:06 -0800 | ||
1093 | 12 | |||
1094 | 13 | gnome-shell (3.2.1-0ubuntu1) oneiric-proposed; urgency=low | ||
1095 | 14 | |||
1096 | 15 | [ Jeremy Bicha ] | ||
1097 | 16 | * New upstream release (LP: #878672). | ||
1098 | 17 | - Restore the IM state on startup - if you were available in when you | ||
1099 | 18 | logged out, then you'll be set available again when you log in. | ||
1100 | 19 | - Improve searching for contacts in the overview: search more fields, | ||
1101 | 20 | show a more meaningful name, require that all search terms match. | ||
1102 | 21 | - Improve search for applications in the overview: take frequency into | ||
1103 | 22 | account and tweak match algorithm | ||
1104 | 23 | - Remove the "Show Password" switch from network password prompts, and | ||
1105 | 24 | move the functionality to a right-click menu | ||
1106 | 25 | - Add context menus with Cut/Paste options to most entries | ||
1107 | 26 | - Display a caps-lock warning in password entries | ||
1108 | 27 | - Show the state of installed extensions in Looking Glass | ||
1109 | 28 | - Load user extensions after system ones | ||
1110 | 29 | - Fix problem with many applications showing extra-large icons in | ||
1111 | 30 | notifications | ||
1112 | 31 | - Fix a problem where alt-Tab had trouble tracking the current | ||
1113 | 32 | application with certain applications such as Emacs. | ||
1114 | 33 | - Fix confusion between different users avatar images | ||
1115 | 34 | - Remove behavior where you could switch workspaces by bumping | ||
1116 | 35 | a dragged window in the overview against a screen edge; it was | ||
1117 | 36 | leftover and just confusing. | ||
1118 | 37 | - Fix long-standing bug where the Dash in the overview could end up | ||
1119 | 38 | mis-sized and run off the screen | ||
1120 | 39 | - Fix automatic launching of applications when media is inserted | ||
1121 | 40 | - Fix handling of vertically stacked monitors with NVIDIA drivers | ||
1122 | 41 | - Translation marking fixes | ||
1123 | 42 | - Code cleanups and warning fixes | ||
1124 | 43 | - Small memory leak fixes | ||
1125 | 44 | - On screen keyboard: | ||
1126 | 45 | + Show the keyboard immediately when it's turned enabled | ||
1127 | 46 | + Fix problem where keyboard would hide when starting to type | ||
1128 | 47 | in the search entry | ||
1129 | 48 | + Fix problem with keyboard hiding when selected accented characters | ||
1130 | 49 | - Misc bug fixes | ||
1131 | 50 | * debian/control.in: | ||
1132 | 51 | - Bump minimum mutter to 3.2.1 | ||
1133 | 52 | - Drop dependency against libdconf0 and let dh_installgsettings set | ||
1134 | 53 | the right dependencies. | ||
1135 | 54 | - Depends on cups-pk-helper instead of recommends to ensure that | ||
1136 | 55 | the printer applet works (LP: #877367) | ||
1137 | 56 | * 01_favorite_apps.patch: dropped, replaced by override file. | ||
1138 | 57 | * New upstream release. | ||
1139 | 58 | |||
1140 | 59 | -- Jeremy Bicha <jbicha@ubuntu.com> Mon, 24 Oct 2011 06:43:05 +0200 | ||
1141 | 60 | |||
1142 | 1 | gnome-shell (3.2.0-0ubuntu1) oneiric; urgency=low | 61 | gnome-shell (3.2.0-0ubuntu1) oneiric; urgency=low |
1143 | 2 | 62 | ||
1144 | 3 | * New upstream stable release. | 63 | * New upstream stable release. |
1145 | 4 | 64 | ||
1146 | === modified file 'debian/control' | |||
1147 | --- debian/control 2011-09-28 06:48:58 +0000 | |||
1148 | +++ debian/control 2012-01-18 14:13:28 +0000 | |||
1149 | @@ -36,7 +36,7 @@ | |||
1150 | 36 | libgudev-1.0-dev, | 36 | libgudev-1.0-dev, |
1151 | 37 | libnm-glib-dev (>= 0.8.999), | 37 | libnm-glib-dev (>= 0.8.999), |
1152 | 38 | libstartup-notification0-dev (>= 0.11), | 38 | libstartup-notification0-dev (>= 0.11), |
1154 | 39 | libmutter-dev (>= 3.1.92), | 39 | libmutter-dev (>= 3.2.1), |
1155 | 40 | librsvg2-dev, | 40 | librsvg2-dev, |
1156 | 41 | libwnck-dev, | 41 | libwnck-dev, |
1157 | 42 | libclutter-1.0-dev (>= 1.7.5), | 42 | libclutter-1.0-dev (>= 1.7.5), |
1158 | @@ -62,7 +62,7 @@ | |||
1159 | 62 | ${shlibs:Depends}, | 62 | ${shlibs:Depends}, |
1160 | 63 | ${misc:Depends}, | 63 | ${misc:Depends}, |
1161 | 64 | caribou, | 64 | caribou, |
1163 | 65 | libdconf0 | gsettings-backend, | 65 | cups-pk-helper, |
1164 | 66 | gnome-settings-daemon (>= 2.91.5.1), | 66 | gnome-settings-daemon (>= 2.91.5.1), |
1165 | 67 | gsettings-desktop-schemas (>= 0.1.7), | 67 | gsettings-desktop-schemas (>= 0.1.7), |
1166 | 68 | gnome-icon-theme-symbolic (>= 2.91), | 68 | gnome-icon-theme-symbolic (>= 2.91), |
1167 | @@ -78,7 +78,7 @@ | |||
1168 | 78 | python, | 78 | python, |
1169 | 79 | pkg-config, | 79 | pkg-config, |
1170 | 80 | mesa-utils | 80 | mesa-utils |
1172 | 81 | Recommends: gnome-control-center, gnome-user-guide, gnome-themes-standard, cups-pk-helper, gnome-session-fallback | 81 | Recommends: gnome-control-center, gnome-user-guide, gnome-themes-standard, gnome-session-fallback |
1173 | 82 | Breaks: gnome-control-center (<< 1:3.0) | 82 | Breaks: gnome-control-center (<< 1:3.0) |
1174 | 83 | Description: graphical shell for the GNOME desktop | 83 | Description: graphical shell for the GNOME desktop |
1175 | 84 | The GNOME Shell redefines user interactions with the GNOME desktop. | 84 | The GNOME Shell redefines user interactions with the GNOME desktop. |
1176 | 85 | 85 | ||
1177 | === modified file 'debian/control.in' | |||
1178 | --- debian/control.in 2011-09-28 06:48:58 +0000 | |||
1179 | +++ debian/control.in 2012-01-18 14:13:28 +0000 | |||
1180 | @@ -31,7 +31,7 @@ | |||
1181 | 31 | libgudev-1.0-dev, | 31 | libgudev-1.0-dev, |
1182 | 32 | libnm-glib-dev (>= 0.8.999), | 32 | libnm-glib-dev (>= 0.8.999), |
1183 | 33 | libstartup-notification0-dev (>= 0.11), | 33 | libstartup-notification0-dev (>= 0.11), |
1185 | 34 | libmutter-dev (>= 3.1.92), | 34 | libmutter-dev (>= 3.2.1), |
1186 | 35 | librsvg2-dev, | 35 | librsvg2-dev, |
1187 | 36 | libwnck-dev, | 36 | libwnck-dev, |
1188 | 37 | libclutter-1.0-dev (>= 1.7.5), | 37 | libclutter-1.0-dev (>= 1.7.5), |
1189 | @@ -57,7 +57,7 @@ | |||
1190 | 57 | ${shlibs:Depends}, | 57 | ${shlibs:Depends}, |
1191 | 58 | ${misc:Depends}, | 58 | ${misc:Depends}, |
1192 | 59 | caribou, | 59 | caribou, |
1194 | 60 | libdconf0 | gsettings-backend, | 60 | cups-pk-helper, |
1195 | 61 | gnome-settings-daemon (>= 2.91.5.1), | 61 | gnome-settings-daemon (>= 2.91.5.1), |
1196 | 62 | gsettings-desktop-schemas (>= 0.1.7), | 62 | gsettings-desktop-schemas (>= 0.1.7), |
1197 | 63 | gnome-icon-theme-symbolic (>= 2.91), | 63 | gnome-icon-theme-symbolic (>= 2.91), |
1198 | @@ -73,7 +73,7 @@ | |||
1199 | 73 | python, | 73 | python, |
1200 | 74 | pkg-config, | 74 | pkg-config, |
1201 | 75 | mesa-utils | 75 | mesa-utils |
1203 | 76 | Recommends: gnome-control-center, gnome-user-guide, gnome-themes-standard, cups-pk-helper, gnome-session-fallback | 76 | Recommends: gnome-control-center, gnome-user-guide, gnome-themes-standard, gnome-session-fallback |
1204 | 77 | Breaks: gnome-control-center (<< 1:3.0) | 77 | Breaks: gnome-control-center (<< 1:3.0) |
1205 | 78 | Description: graphical shell for the GNOME desktop | 78 | Description: graphical shell for the GNOME desktop |
1206 | 79 | The GNOME Shell redefines user interactions with the GNOME desktop. | 79 | The GNOME Shell redefines user interactions with the GNOME desktop. |
1207 | 80 | 80 | ||
1208 | === added file 'debian/gnome-shell.gsettings-override' | |||
1209 | --- debian/gnome-shell.gsettings-override 1970-01-01 00:00:00 +0000 | |||
1210 | +++ debian/gnome-shell.gsettings-override 2012-01-18 14:13:28 +0000 | |||
1211 | @@ -0,0 +1,3 @@ | |||
1212 | 1 | [org.gnome.shell] | ||
1213 | 2 | favorite-apps=[ 'firefox.desktop', 'thunderbird.desktop', 'empathy.desktop', 'banshee.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ] | ||
1214 | 3 | |||
1215 | 0 | 4 | ||
1216 | === removed file 'debian/patches/01_favorite_apps.patch' | |||
1217 | --- debian/patches/01_favorite_apps.patch 2011-09-22 08:50:45 +0000 | |||
1218 | +++ debian/patches/01_favorite_apps.patch 1970-01-01 00:00:00 +0000 | |||
1219 | @@ -1,16 +0,0 @@ | |||
1220 | 1 | Description: Use Ubuntu defaults (Firefox, Thunderbird, and Banshee) | ||
1221 | 2 | Forwarded: not-needed | ||
1222 | 3 | Author: Jeremy Bicha <jbicha@ubuntu.com> | ||
1223 | 4 | Index: oneiric/data/org.gnome.shell.gschema.xml.in | ||
1224 | 5 | =================================================================== | ||
1225 | 6 | --- oneiric.orig/data/org.gnome.shell.gschema.xml.in 2011-09-20 18:38:13.116385829 -0400 | ||
1226 | 7 | +++ oneiric/data/org.gnome.shell.gschema.xml.in 2011-09-20 18:38:36.746420484 -0400 | ||
1227 | 8 | @@ -31,7 +31,7 @@ | ||
1228 | 9 | </_description> | ||
1229 | 10 | </key> | ||
1230 | 11 | <key name="favorite-apps" type="as"> | ||
1231 | 12 | - <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> | ||
1232 | 13 | + <default>[ 'firefox.desktop', 'thunderbird.desktop', 'empathy.desktop', 'banshee.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default> | ||
1233 | 14 | <_summary>List of desktop file IDs for favorite applications</_summary> | ||
1234 | 15 | <_description> | ||
1235 | 16 | The applications corresponding to these identifiers | ||
1236 | 17 | 0 | ||
1237 | === added file 'debian/patches/04_bluetooth-fix-connection-from-gs-menu.patch' | |||
1238 | --- debian/patches/04_bluetooth-fix-connection-from-gs-menu.patch 1970-01-01 00:00:00 +0000 | |||
1239 | +++ debian/patches/04_bluetooth-fix-connection-from-gs-menu.patch 2012-01-18 14:13:28 +0000 | |||
1240 | @@ -0,0 +1,31 @@ | |||
1241 | 1 | From 0ed0dc89b51f8e584dd21c87a7178ba138bed44b Mon Sep 17 00:00:00 2001 | ||
1242 | 2 | From: Alessandro Crismani <alessandro.crismani@gmail.com> | ||
1243 | 3 | Date: Tue, 13 Dec 2011 10:01:34 +0100 | ||
1244 | 4 | Subject: [PATCH] Bluetooth: fix connecting devices from GS's panel on 3.2.1 | ||
1245 | 5 | |||
1246 | 6 | Connecting devices from Gnome Shell's panel on Gnome 3.2.1 fails because | ||
1247 | 7 | of an undefined variable in | ||
1248 | 8 | js/ui/status/bluetooth.js:buildDeviceSubMenu. More explicitly, the | ||
1249 | 9 | menuitem variable is not declared and hence connecting and disconnecting | ||
1250 | 10 | fails. Fix it to make the bluetooth panel menu item work. | ||
1251 | 11 | --- | ||
1252 | 12 | js/ui/status/bluetooth.js | 3 ++- | ||
1253 | 13 | 1 files changed, 2 insertions(+), 1 deletions(-) | ||
1254 | 14 | |||
1255 | 15 | diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js | ||
1256 | 16 | index f2d95f5..3aa7960 100644 | ||
1257 | 17 | --- a/js/ui/status/bluetooth.js | ||
1258 | 18 | +++ b/js/ui/status/bluetooth.js | ||
1259 | 19 | @@ -205,7 +205,8 @@ Indicator.prototype = { | ||
1260 | 20 | _buildDeviceSubMenu: function(item, device) { | ||
1261 | 21 | if (device.can_connect) { | ||
1262 | 22 | item._connected = device.connected; | ||
1263 | 23 | - item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); | ||
1264 | 24 | + let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); | ||
1265 | 25 | + item._connectedMenuitem = menuitem; | ||
1266 | 26 | item._connectedMenuitem.connect('toggled', Lang.bind(this, function() { | ||
1267 | 27 | if (item._connected > ConnectionState.CONNECTED) { | ||
1268 | 28 | // operation already in progress, revert | ||
1269 | 29 | -- | ||
1270 | 30 | 1.7.8 | ||
1271 | 31 | |||
1272 | 0 | 32 | ||
1273 | === modified file 'debian/patches/series' | |||
1274 | --- debian/patches/series 2011-09-22 08:50:45 +0000 | |||
1275 | +++ debian/patches/series 2012-01-18 14:13:28 +0000 | |||
1276 | @@ -1,2 +1,2 @@ | |||
1277 | 1 | 01_favorite_apps.patch | ||
1278 | 2 | 03_remove-glx-dependency-on-armel.patch | 1 | 03_remove-glx-dependency-on-armel.patch |
1279 | 2 | 04_bluetooth-fix-connection-from-gs-menu.patch | ||
1280 | 3 | 3 | ||
1281 | === modified file 'js/Makefile.am' | |||
1282 | --- js/Makefile.am 2011-09-22 08:50:45 +0000 | |||
1283 | +++ js/Makefile.am 2012-01-18 14:13:28 +0000 | |||
1284 | @@ -46,6 +46,7 @@ | |||
1285 | 46 | ui/messageTray.js \ | 46 | ui/messageTray.js \ |
1286 | 47 | ui/modalDialog.js \ | 47 | ui/modalDialog.js \ |
1287 | 48 | ui/networkAgent.js \ | 48 | ui/networkAgent.js \ |
1288 | 49 | ui/shellEntry.js \ | ||
1289 | 49 | ui/shellMountOperation.js \ | 50 | ui/shellMountOperation.js \ |
1290 | 50 | ui/notificationDaemon.js \ | 51 | ui/notificationDaemon.js \ |
1291 | 51 | ui/overview.js \ | 52 | ui/overview.js \ |
1292 | 52 | 53 | ||
1293 | === modified file 'js/Makefile.in' | |||
1294 | --- js/Makefile.in 2011-09-22 08:50:45 +0000 | |||
1295 | +++ js/Makefile.in 2012-01-18 14:13:28 +0000 | |||
1296 | @@ -337,6 +337,7 @@ | |||
1297 | 337 | ui/messageTray.js \ | 337 | ui/messageTray.js \ |
1298 | 338 | ui/modalDialog.js \ | 338 | ui/modalDialog.js \ |
1299 | 339 | ui/networkAgent.js \ | 339 | ui/networkAgent.js \ |
1300 | 340 | ui/shellEntry.js \ | ||
1301 | 340 | ui/shellMountOperation.js \ | 341 | ui/shellMountOperation.js \ |
1302 | 341 | ui/notificationDaemon.js \ | 342 | ui/notificationDaemon.js \ |
1303 | 342 | ui/overview.js \ | 343 | ui/overview.js \ |
1304 | 343 | 344 | ||
1305 | === modified file 'js/gdm/batch.js' | |||
1306 | --- js/gdm/batch.js 2011-09-04 08:02:35 +0000 | |||
1307 | +++ js/gdm/batch.js 2012-01-18 14:13:28 +0000 | |||
1308 | @@ -1,5 +1,5 @@ | |||
1311 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1312 | 2 | * | 2 | /* |
1313 | 3 | * Copyright 2011 Red Hat, Inc | 3 | * Copyright 2011 Red Hat, Inc |
1314 | 4 | * | 4 | * |
1315 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
1316 | 6 | 6 | ||
1317 | === modified file 'js/gdm/consoleKit.js' | |||
1318 | --- js/gdm/consoleKit.js 2011-09-21 16:26:15 +0000 | |||
1319 | +++ js/gdm/consoleKit.js 2012-01-18 14:13:28 +0000 | |||
1320 | @@ -1,4 +1,4 @@ | |||
1322 | 1 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1323 | 2 | 2 | ||
1324 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1325 | 4 | 4 | ||
1326 | 5 | 5 | ||
1327 | === modified file 'js/gdm/fingerprint.js' | |||
1328 | --- js/gdm/fingerprint.js 2011-09-21 16:26:15 +0000 | |||
1329 | +++ js/gdm/fingerprint.js 2012-01-18 14:13:28 +0000 | |||
1330 | @@ -1,4 +1,4 @@ | |||
1332 | 1 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1333 | 2 | 2 | ||
1334 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1335 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1336 | 5 | 5 | ||
1337 | === modified file 'js/gdm/loginDialog.js' | |||
1338 | --- js/gdm/loginDialog.js 2011-09-21 16:26:15 +0000 | |||
1339 | +++ js/gdm/loginDialog.js 2012-01-18 14:13:28 +0000 | |||
1340 | @@ -1,5 +1,5 @@ | |||
1343 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1344 | 2 | * | 2 | /* |
1345 | 3 | * Copyright 2011 Red Hat, Inc | 3 | * Copyright 2011 Red Hat, Inc |
1346 | 4 | * | 4 | * |
1347 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
1348 | @@ -297,6 +297,20 @@ | |||
1349 | 297 | x_align: St.Align.START, | 297 | x_align: St.Align.START, |
1350 | 298 | y_align: St.Align.MIDDLE }); | 298 | y_align: St.Align.MIDDLE }); |
1351 | 299 | this._items = {}; | 299 | this._items = {}; |
1352 | 300 | |||
1353 | 301 | this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems)); | ||
1354 | 302 | }, | ||
1355 | 303 | |||
1356 | 304 | _moveFocusToItems: function() { | ||
1357 | 305 | let hasItems = Object.keys(this._items).length > 0; | ||
1358 | 306 | |||
1359 | 307 | if (!hasItems) | ||
1360 | 308 | return; | ||
1361 | 309 | |||
1362 | 310 | if (global.stage.get_key_focus() != this.actor) | ||
1363 | 311 | return; | ||
1364 | 312 | |||
1365 | 313 | this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); | ||
1366 | 300 | }, | 314 | }, |
1367 | 301 | 315 | ||
1368 | 302 | _showItem: function(item) { | 316 | _showItem: function(item) { |
1369 | @@ -502,6 +516,8 @@ | |||
1370 | 502 | item.showFocusAnimation(0); | 516 | item.showFocusAnimation(0); |
1371 | 503 | })); | 517 | })); |
1372 | 504 | 518 | ||
1373 | 519 | this._moveFocusToItems(); | ||
1374 | 520 | |||
1375 | 505 | this.emit('item-added', item); | 521 | this.emit('item-added', item); |
1376 | 506 | }, | 522 | }, |
1377 | 507 | 523 | ||
1378 | @@ -694,10 +710,13 @@ | |||
1379 | 694 | let ids = GdmGreeter.get_session_ids(); | 710 | let ids = GdmGreeter.get_session_ids(); |
1380 | 695 | ids.sort(); | 711 | ids.sort(); |
1381 | 696 | 712 | ||
1383 | 697 | if (ids.length <= 1) | 713 | if (ids.length <= 1) { |
1384 | 698 | this._box.hide(); | 714 | this._box.hide(); |
1386 | 699 | else | 715 | this._button.hide(); |
1387 | 716 | } else { | ||
1388 | 717 | this._button.show(); | ||
1389 | 700 | this._box.show(); | 718 | this._box.show(); |
1390 | 719 | } | ||
1391 | 701 | 720 | ||
1392 | 702 | for (let i = 0; i < ids.length; i++) { | 721 | for (let i = 0; i < ids.length; i++) { |
1393 | 703 | let [sessionName, sessionDescription] = GdmGreeter.get_session_name_and_description(ids[i]); | 722 | let [sessionName, sessionDescription] = GdmGreeter.get_session_name_and_description(ids[i]); |
1394 | @@ -922,6 +941,7 @@ | |||
1395 | 922 | 941 | ||
1396 | 923 | function() { | 942 | function() { |
1397 | 924 | this._sessionList.close(); | 943 | this._sessionList.close(); |
1398 | 944 | this._promptFingerprintMessage.hide(); | ||
1399 | 925 | this._userList.actor.show(); | 945 | this._userList.actor.show(); |
1400 | 926 | this._userList.actor.opacity = 255; | 946 | this._userList.actor.opacity = 255; |
1401 | 927 | return this._userList.showItems(); | 947 | return this._userList.showItems(); |
1402 | @@ -943,7 +963,18 @@ | |||
1403 | 943 | }, | 963 | }, |
1404 | 944 | 964 | ||
1405 | 945 | _onInfo: function(client, serviceName, info) { | 965 | _onInfo: function(client, serviceName, info) { |
1407 | 946 | // we don't want fingerprint messages with the word UPEK in them | 966 | // We don't display fingerprint messages, because they |
1408 | 967 | // have words like UPEK in them. Instead we use the messages | ||
1409 | 968 | // as a cue to display our own message. | ||
1410 | 969 | if (serviceName == _FINGERPRINT_SERVICE_NAME && | ||
1411 | 970 | this._haveFingerprintReader && | ||
1412 | 971 | (!this._promptFingerprintMessage.visible || | ||
1413 | 972 | this._promptFingerprintMessage.opacity != 255)) { | ||
1414 | 973 | |||
1415 | 974 | _fadeInActor(this._promptFingerprintMessage); | ||
1416 | 975 | return; | ||
1417 | 976 | } | ||
1418 | 977 | |||
1419 | 947 | if (serviceName != _PASSWORD_SERVICE_NAME) | 978 | if (serviceName != _PASSWORD_SERVICE_NAME) |
1420 | 948 | return; | 979 | return; |
1421 | 949 | Main.notifyError(info); | 980 | Main.notifyError(info); |
1422 | @@ -971,10 +1002,10 @@ | |||
1423 | 971 | }, | 1002 | }, |
1424 | 972 | 1003 | ||
1425 | 973 | function() { | 1004 | function() { |
1430 | 974 | if (!this._haveFingerprintReader) | 1005 | // Show it with 0 opacity so we preallocate space for it |
1431 | 975 | return null; | 1006 | // in the event we need to fade in the message |
1432 | 976 | 1007 | this._promptFingerprintMessage.opacity = 0; | |
1433 | 977 | return _fadeInActor(this._promptFingerprintMessage); | 1008 | this._promptFingerprintMessage.show(); |
1434 | 978 | }, | 1009 | }, |
1435 | 979 | 1010 | ||
1436 | 980 | function() { | 1011 | function() { |
1437 | @@ -1046,6 +1077,8 @@ | |||
1438 | 1046 | 1077 | ||
1439 | 1047 | function() { | 1078 | function() { |
1440 | 1048 | this._promptFingerprintMessage.hide(); | 1079 | this._promptFingerprintMessage.hide(); |
1441 | 1080 | this._promptEntry.reactive = true; | ||
1442 | 1081 | this._promptEntry.remove_style_pseudo_class('insensitive'); | ||
1443 | 1049 | this._promptEntry.set_text(''); | 1082 | this._promptEntry.set_text(''); |
1444 | 1050 | }]; | 1083 | }]; |
1445 | 1051 | 1084 | ||
1446 | @@ -1061,7 +1094,8 @@ | |||
1447 | 1061 | 1094 | ||
1448 | 1062 | function() { | 1095 | function() { |
1449 | 1063 | let _text = this._promptEntry.get_text(); | 1096 | let _text = this._promptEntry.get_text(); |
1451 | 1064 | this._promptEntry.set_text(''); | 1097 | this._promptEntry.reactive = false; |
1452 | 1098 | this._promptEntry.add_style_pseudo_class('insensitive'); | ||
1453 | 1065 | this._greeterClient.call_answer_query(serviceName, _text); | 1099 | this._greeterClient.call_answer_query(serviceName, _text); |
1454 | 1066 | }]; | 1100 | }]; |
1455 | 1067 | 1101 | ||
1456 | 1068 | 1102 | ||
1457 | === modified file 'js/gdm/powerMenu.js' | |||
1458 | --- js/gdm/powerMenu.js 2011-09-21 16:26:15 +0000 | |||
1459 | +++ js/gdm/powerMenu.js 2012-01-18 14:13:28 +0000 | |||
1460 | @@ -1,5 +1,5 @@ | |||
1463 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1464 | 2 | * | 2 | /* |
1465 | 3 | * Copyright 2011 Red Hat, Inc | 3 | * Copyright 2011 Red Hat, Inc |
1466 | 4 | * | 4 | * |
1467 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
1468 | 6 | 6 | ||
1469 | === modified file 'js/misc/config.js' | |||
1470 | --- js/misc/config.js 2011-09-28 00:41:45 +0000 | |||
1471 | +++ js/misc/config.js 2012-01-18 14:13:28 +0000 | |||
1472 | @@ -1,10 +1,11 @@ | |||
1474 | 1 | /* mode: js2; indent-tabs-mode: nil; tab-size: 4 */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1475 | 2 | |||
1476 | 2 | /* The name of this package (not localized) */ | 3 | /* The name of this package (not localized) */ |
1477 | 3 | const PACKAGE_NAME = 'gnome-shell'; | 4 | const PACKAGE_NAME = 'gnome-shell'; |
1478 | 4 | /* The version of this package */ | 5 | /* The version of this package */ |
1480 | 5 | const PACKAGE_VERSION = '3.2.0'; | 6 | const PACKAGE_VERSION = '3.2.1'; |
1481 | 6 | /* The version of GJS we're linking to */ | 7 | /* The version of GJS we're linking to */ |
1483 | 7 | const GJS_VERSION = '1.29.19'; | 8 | const GJS_VERSION = '1.30.0'; |
1484 | 8 | /* 1 if gnome-bluetooth is available, 0 otherwise */ | 9 | /* 1 if gnome-bluetooth is available, 0 otherwise */ |
1485 | 9 | const HAVE_BLUETOOTH = 1; | 10 | const HAVE_BLUETOOTH = 1; |
1486 | 10 | /* The system TLS CA list */ | 11 | /* The system TLS CA list */ |
1487 | 11 | 12 | ||
1488 | === modified file 'js/misc/config.js.in' | |||
1489 | --- js/misc/config.js.in 2011-09-21 16:26:15 +0000 | |||
1490 | +++ js/misc/config.js.in 2012-01-18 14:13:28 +0000 | |||
1491 | @@ -1,4 +1,5 @@ | |||
1493 | 1 | /* mode: js2; indent-tabs-mode: nil; tab-size: 4 */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1494 | 2 | |||
1495 | 2 | /* The name of this package (not localized) */ | 3 | /* The name of this package (not localized) */ |
1496 | 3 | const PACKAGE_NAME = '@PACKAGE_NAME@'; | 4 | const PACKAGE_NAME = '@PACKAGE_NAME@'; |
1497 | 4 | /* The version of this package */ | 5 | /* The version of this package */ |
1498 | 5 | 6 | ||
1499 | === modified file 'js/misc/docInfo.js' | |||
1500 | --- js/misc/docInfo.js 2011-02-25 12:23:23 +0000 | |||
1501 | +++ js/misc/docInfo.js 2012-01-18 14:13:28 +0000 | |||
1502 | @@ -1,4 +1,4 @@ | |||
1504 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1505 | 2 | 2 | ||
1506 | 3 | const St = imports.gi.St; | 3 | const St = imports.gi.St; |
1507 | 4 | const Shell = imports.gi.Shell; | 4 | const Shell = imports.gi.Shell; |
1508 | 5 | 5 | ||
1509 | === modified file 'js/misc/fileUtils.js' | |||
1510 | --- js/misc/fileUtils.js 2011-09-21 16:26:15 +0000 | |||
1511 | +++ js/misc/fileUtils.js 2012-01-18 14:13:28 +0000 | |||
1512 | @@ -1,3 +1,5 @@ | |||
1513 | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||
1514 | 2 | |||
1515 | 1 | const Gio = imports.gi.Gio; | 3 | const Gio = imports.gi.Gio; |
1516 | 2 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
1517 | 3 | 5 | ||
1518 | 4 | 6 | ||
1519 | === modified file 'js/misc/format.js' | |||
1520 | --- js/misc/format.js 2010-07-13 14:36:34 +0000 | |||
1521 | +++ js/misc/format.js 2012-01-18 14:13:28 +0000 | |||
1522 | @@ -1,4 +1,4 @@ | |||
1524 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1525 | 2 | 2 | ||
1526 | 3 | /* | 3 | /* |
1527 | 4 | * This function is intended to extend the String object and provide | 4 | * This function is intended to extend the String object and provide |
1528 | 5 | 5 | ||
1529 | === modified file 'js/misc/gnomeSession.js' | |||
1530 | --- js/misc/gnomeSession.js 2011-07-20 14:46:28 +0000 | |||
1531 | +++ js/misc/gnomeSession.js 2012-01-18 14:13:28 +0000 | |||
1532 | @@ -1,4 +1,4 @@ | |||
1534 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1535 | 2 | 2 | ||
1536 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1537 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1538 | @@ -78,7 +78,7 @@ | |||
1539 | 78 | Inhibitor.prototype = { | 78 | Inhibitor.prototype = { |
1540 | 79 | _init: function(objectPath) { | 79 | _init: function(objectPath) { |
1541 | 80 | DBus.session.proxifyObject(this, | 80 | DBus.session.proxifyObject(this, |
1543 | 81 | "org.gnome.SessionManager", | 81 | 'org.gnome.SessionManager', |
1544 | 82 | objectPath); | 82 | objectPath); |
1545 | 83 | this.isLoaded = false; | 83 | this.isLoaded = false; |
1546 | 84 | this._loadingPropertiesCount = InhibitorIface.properties.length; | 84 | this._loadingPropertiesCount = InhibitorIface.properties.length; |
1547 | @@ -94,7 +94,7 @@ | |||
1548 | 94 | 94 | ||
1549 | 95 | if (this._loadingPropertiesCount == 0) { | 95 | if (this._loadingPropertiesCount == 0) { |
1550 | 96 | this.isLoaded = true; | 96 | this.isLoaded = true; |
1552 | 97 | this.emit("is-loaded"); | 97 | this.emit('is-loaded'); |
1553 | 98 | } | 98 | } |
1554 | 99 | })); | 99 | })); |
1555 | 100 | } | 100 | } |
1556 | 101 | 101 | ||
1557 | === modified file 'js/misc/history.js' | |||
1558 | --- js/misc/history.js 2011-05-31 19:31:47 +0000 | |||
1559 | +++ js/misc/history.js 2012-01-18 14:13:28 +0000 | |||
1560 | @@ -1,4 +1,4 @@ | |||
1562 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1563 | 2 | 2 | ||
1564 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
1565 | 4 | const Signals = imports.signals; | 4 | const Signals = imports.signals; |
1566 | 5 | 5 | ||
1567 | === modified file 'js/misc/modemManager.js' | |||
1568 | --- js/misc/modemManager.js 2011-03-24 19:28:12 +0000 | |||
1569 | +++ js/misc/modemManager.js 2012-01-18 14:13:28 +0000 | |||
1570 | @@ -1,4 +1,4 @@ | |||
1572 | 1 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1573 | 2 | 2 | ||
1574 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1575 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1576 | 5 | 5 | ||
1577 | === modified file 'js/misc/params.js' | |||
1578 | --- js/misc/params.js 2010-05-31 11:03:29 +0000 | |||
1579 | +++ js/misc/params.js 2012-01-18 14:13:28 +0000 | |||
1580 | @@ -1,4 +1,4 @@ | |||
1582 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1583 | 2 | 2 | ||
1584 | 3 | // parse: | 3 | // parse: |
1585 | 4 | // @params: caller-provided parameter object, or %null | 4 | // @params: caller-provided parameter object, or %null |
1586 | 5 | 5 | ||
1587 | === modified file 'js/misc/screenSaver.js' | |||
1588 | --- js/misc/screenSaver.js 2011-08-24 02:33:44 +0000 | |||
1589 | +++ js/misc/screenSaver.js 2012-01-18 14:13:28 +0000 | |||
1590 | @@ -1,4 +1,4 @@ | |||
1592 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1593 | 2 | 2 | ||
1594 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1595 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1596 | 5 | 5 | ||
1597 | === modified file 'js/misc/util.js' | |||
1598 | --- js/misc/util.js 2011-09-21 16:26:15 +0000 | |||
1599 | +++ js/misc/util.js 2012-01-18 14:13:28 +0000 | |||
1600 | @@ -1,4 +1,4 @@ | |||
1602 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1603 | 2 | 2 | ||
1604 | 3 | const Gdk = imports.gi.Gdk; | 3 | const Gdk = imports.gi.Gdk; |
1605 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
1606 | 5 | 5 | ||
1607 | === modified file 'js/perf/core.js' | |||
1608 | --- js/perf/core.js 2011-09-04 08:02:35 +0000 | |||
1609 | +++ js/perf/core.js 2012-01-18 14:13:28 +0000 | |||
1610 | @@ -1,4 +1,4 @@ | |||
1612 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1613 | 2 | 2 | ||
1614 | 3 | const Main = imports.ui.main; | 3 | const Main = imports.ui.main; |
1615 | 4 | const Scripting = imports.ui.scripting; | 4 | const Scripting = imports.ui.scripting; |
1616 | 5 | 5 | ||
1617 | === modified file 'js/ui/altTab.js' | |||
1618 | --- js/ui/altTab.js 2011-09-22 08:50:45 +0000 | |||
1619 | +++ js/ui/altTab.js 2012-01-18 14:13:28 +0000 | |||
1620 | @@ -1,4 +1,4 @@ | |||
1622 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1623 | 2 | 2 | ||
1624 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
1625 | 4 | const Gdk = imports.gi.Gdk; | 4 | const Gdk = imports.gi.Gdk; |
1626 | @@ -134,11 +134,40 @@ | |||
1627 | 134 | } | 134 | } |
1628 | 135 | }, | 135 | }, |
1629 | 136 | 136 | ||
1630 | 137 | _getAppLists: function() { | ||
1631 | 138 | let tracker = Shell.WindowTracker.get_default(); | ||
1632 | 139 | let appSys = Shell.AppSystem.get_default(); | ||
1633 | 140 | let allApps = appSys.get_running (); | ||
1634 | 141 | |||
1635 | 142 | let screen = global.screen; | ||
1636 | 143 | let display = screen.get_display(); | ||
1637 | 144 | let windows = display.get_tab_list(Meta.TabList.NORMAL, screen, | ||
1638 | 145 | screen.get_active_workspace()); | ||
1639 | 146 | |||
1640 | 147 | // windows is only the windows on the current workspace. For | ||
1641 | 148 | // each one, if it corresponds to an app we know, move that | ||
1642 | 149 | // app from allApps to apps. | ||
1643 | 150 | let apps = []; | ||
1644 | 151 | for (let i = 0; i < windows.length && allApps.length != 0; i++) { | ||
1645 | 152 | let app = tracker.get_window_app(windows[i]); | ||
1646 | 153 | let index = allApps.indexOf(app); | ||
1647 | 154 | if (index != -1) { | ||
1648 | 155 | apps.push(app); | ||
1649 | 156 | allApps.splice(index, 1); | ||
1650 | 157 | } | ||
1651 | 158 | } | ||
1652 | 159 | |||
1653 | 160 | // Now @apps is a list of apps on the current workspace, in | ||
1654 | 161 | // standard Alt+Tab order (MRU except for minimized windows), | ||
1655 | 162 | // and allApps is a list of apps that only appear on other | ||
1656 | 163 | // workspaces, sorted by user_time, which is good enough. | ||
1657 | 164 | return [apps, allApps]; | ||
1658 | 165 | }, | ||
1659 | 166 | |||
1660 | 137 | show : function(backward, binding, mask) { | 167 | show : function(backward, binding, mask) { |
1663 | 138 | let appSys = Shell.AppSystem.get_default(); | 168 | let [localApps, otherApps] = this._getAppLists(); |
1662 | 139 | let apps = appSys.get_running (); | ||
1664 | 140 | 169 | ||
1666 | 141 | if (!apps.length) | 170 | if (localApps.length == 0 && otherApps.length == 0) |
1667 | 142 | return false; | 171 | return false; |
1668 | 143 | 172 | ||
1669 | 144 | if (!Main.pushModal(this.actor)) | 173 | if (!Main.pushModal(this.actor)) |
1670 | @@ -152,7 +181,7 @@ | |||
1671 | 152 | this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside)); | 181 | this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside)); |
1672 | 153 | this.actor.connect('scroll-event', Lang.bind(this, this._onScroll)); | 182 | this.actor.connect('scroll-event', Lang.bind(this, this._onScroll)); |
1673 | 154 | 183 | ||
1675 | 155 | this._appSwitcher = new AppSwitcher(apps, this); | 184 | this._appSwitcher = new AppSwitcher(localApps, otherApps, this); |
1676 | 156 | this.actor.add_actor(this._appSwitcher.actor); | 185 | this.actor.add_actor(this._appSwitcher.actor); |
1677 | 157 | this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated)); | 186 | this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated)); |
1678 | 158 | this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered)); | 187 | this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered)); |
1679 | @@ -846,33 +875,32 @@ | |||
1680 | 846 | } | 875 | } |
1681 | 847 | }; | 876 | }; |
1682 | 848 | 877 | ||
1685 | 849 | function AppSwitcher(apps, altTabPopup) { | 878 | function AppSwitcher() { |
1686 | 850 | this._init(apps, altTabPopup); | 879 | this._init.apply(this, arguments); |
1687 | 851 | } | 880 | } |
1688 | 852 | 881 | ||
1689 | 853 | AppSwitcher.prototype = { | 882 | AppSwitcher.prototype = { |
1690 | 854 | __proto__ : SwitcherList.prototype, | 883 | __proto__ : SwitcherList.prototype, |
1691 | 855 | 884 | ||
1693 | 856 | _init : function(apps, altTabPopup) { | 885 | _init : function(localApps, otherApps, altTabPopup) { |
1694 | 857 | SwitcherList.prototype._init.call(this, true); | 886 | SwitcherList.prototype._init.call(this, true); |
1695 | 858 | 887 | ||
1697 | 859 | // Construct the AppIcons, sort by time, add to the popup | 888 | // Construct the AppIcons, add to the popup |
1698 | 860 | let activeWorkspace = global.screen.get_active_workspace(); | 889 | let activeWorkspace = global.screen.get_active_workspace(); |
1699 | 861 | let workspaceIcons = []; | 890 | let workspaceIcons = []; |
1700 | 862 | let otherIcons = []; | 891 | let otherIcons = []; |
1703 | 863 | for (let i = 0; i < apps.length; i++) { | 892 | for (let i = 0; i < localApps.length; i++) { |
1704 | 864 | let appIcon = new AppIcon(apps[i]); | 893 | let appIcon = new AppIcon(localApps[i]); |
1705 | 865 | // Cache the window list now; we don't handle dynamic changes here, | 894 | // Cache the window list now; we don't handle dynamic changes here, |
1706 | 866 | // and we don't want to be continually retrieving it | 895 | // and we don't want to be continually retrieving it |
1707 | 867 | appIcon.cachedWindows = appIcon.app.get_windows(); | 896 | appIcon.cachedWindows = appIcon.app.get_windows(); |
1716 | 868 | if (this._hasWindowsOnWorkspace(appIcon, activeWorkspace)) | 897 | workspaceIcons.push(appIcon); |
1717 | 869 | workspaceIcons.push(appIcon); | 898 | } |
1718 | 870 | else | 899 | for (let i = 0; i < otherApps.length; i++) { |
1719 | 871 | otherIcons.push(appIcon); | 900 | let appIcon = new AppIcon(otherApps[i]); |
1720 | 872 | } | 901 | appIcon.cachedWindows = appIcon.app.get_windows(); |
1721 | 873 | 902 | otherIcons.push(appIcon); | |
1722 | 874 | workspaceIcons.sort(Lang.bind(this, this._sortAppIcon)); | 903 | } |
1715 | 875 | otherIcons.sort(Lang.bind(this, this._sortAppIcon)); | ||
1723 | 876 | 904 | ||
1724 | 877 | this.icons = []; | 905 | this.icons = []; |
1725 | 878 | this._arrows = []; | 906 | this._arrows = []; |
1726 | @@ -1012,19 +1040,6 @@ | |||
1727 | 1012 | 1040 | ||
1728 | 1013 | if (appIcon.cachedWindows.length == 1) | 1041 | if (appIcon.cachedWindows.length == 1) |
1729 | 1014 | arrow.hide(); | 1042 | arrow.hide(); |
1730 | 1015 | }, | ||
1731 | 1016 | |||
1732 | 1017 | _hasWindowsOnWorkspace: function(appIcon, workspace) { | ||
1733 | 1018 | let windows = appIcon.cachedWindows; | ||
1734 | 1019 | for (let i = 0; i < windows.length; i++) { | ||
1735 | 1020 | if (windows[i].get_workspace() == workspace) | ||
1736 | 1021 | return true; | ||
1737 | 1022 | } | ||
1738 | 1023 | return false; | ||
1739 | 1024 | }, | ||
1740 | 1025 | |||
1741 | 1026 | _sortAppIcon : function(appIcon1, appIcon2) { | ||
1742 | 1027 | return appIcon1.app.compare(appIcon2.app); | ||
1743 | 1028 | } | 1043 | } |
1744 | 1029 | }; | 1044 | }; |
1745 | 1030 | 1045 | ||
1746 | 1031 | 1046 | ||
1747 | === modified file 'js/ui/appDisplay.js' | |||
1748 | --- js/ui/appDisplay.js 2011-09-21 16:26:15 +0000 | |||
1749 | +++ js/ui/appDisplay.js 2012-01-18 14:13:28 +0000 | |||
1750 | @@ -1,4 +1,4 @@ | |||
1752 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1753 | 2 | 2 | ||
1754 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
1755 | 4 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
1756 | 5 | 5 | ||
1757 | === modified file 'js/ui/appFavorites.js' | |||
1758 | --- js/ui/appFavorites.js 2011-09-04 08:02:35 +0000 | |||
1759 | +++ js/ui/appFavorites.js 2012-01-18 14:13:28 +0000 | |||
1760 | @@ -1,4 +1,4 @@ | |||
1762 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1763 | 2 | 2 | ||
1764 | 3 | const Shell = imports.gi.Shell; | 3 | const Shell = imports.gi.Shell; |
1765 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1766 | 5 | 5 | ||
1767 | === modified file 'js/ui/automountManager.js' | |||
1768 | --- js/ui/automountManager.js 2011-08-24 02:33:44 +0000 | |||
1769 | +++ js/ui/automountManager.js 2012-01-18 14:13:28 +0000 | |||
1770 | @@ -1,4 +1,4 @@ | |||
1772 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1773 | 2 | 2 | ||
1774 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
1775 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
1776 | @@ -209,10 +209,14 @@ | |||
1777 | 209 | } | 209 | } |
1778 | 210 | } | 210 | } |
1779 | 211 | 211 | ||
1780 | 212 | // Volume is already mounted, don't bother. | ||
1781 | 213 | if (volume.get_mount()) | ||
1782 | 214 | return; | ||
1783 | 215 | |||
1784 | 212 | if (!this._settings.get_boolean(SETTING_ENABLE_AUTOMOUNT) || | 216 | if (!this._settings.get_boolean(SETTING_ENABLE_AUTOMOUNT) || |
1785 | 213 | !volume.should_automount() || | 217 | !volume.should_automount() || |
1786 | 214 | !volume.can_mount()) { | 218 | !volume.can_mount()) { |
1788 | 215 | // allow the autorun to run anyway; this can happen if the | 219 | // allow the autorun to run anyway; this can happen if the |
1789 | 216 | // mount gets added programmatically later, even if | 220 | // mount gets added programmatically later, even if |
1790 | 217 | // should_automount() or can_mount() are false, like for | 221 | // should_automount() or can_mount() are false, like for |
1791 | 218 | // blank optical media. | 222 | // blank optical media. |
1792 | 219 | 223 | ||
1793 | === modified file 'js/ui/autorunManager.js' | |||
1794 | --- js/ui/autorunManager.js 2011-09-28 00:41:45 +0000 | |||
1795 | +++ js/ui/autorunManager.js 2012-01-18 14:13:28 +0000 | |||
1796 | @@ -1,4 +1,4 @@ | |||
1798 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1799 | 2 | 2 | ||
1800 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
1801 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
1802 | @@ -491,7 +491,7 @@ | |||
1803 | 491 | let app = null; | 491 | let app = null; |
1804 | 492 | 492 | ||
1805 | 493 | if (setting == AutorunSetting.RUN) { | 493 | if (setting == AutorunSetting.RUN) { |
1807 | 494 | app = Gio.app_info_get_default_for_type(type, false); | 494 | app = Gio.app_info_get_default_for_type(contentTypes[0], false); |
1808 | 495 | } else if (setting == AutorunSetting.FILES) { | 495 | } else if (setting == AutorunSetting.FILES) { |
1809 | 496 | app = Gio.app_info_get_default_for_type('inode/directory', false); | 496 | app = Gio.app_info_get_default_for_type('inode/directory', false); |
1810 | 497 | } | 497 | } |
1811 | 498 | 498 | ||
1812 | === modified file 'js/ui/boxpointer.js' | |||
1813 | --- js/ui/boxpointer.js 2011-09-04 08:02:35 +0000 | |||
1814 | +++ js/ui/boxpointer.js 2012-01-18 14:13:28 +0000 | |||
1815 | @@ -1,4 +1,4 @@ | |||
1817 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1818 | 2 | 2 | ||
1819 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
1820 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1821 | @@ -46,6 +46,7 @@ | |||
1822 | 46 | this._yOffset = 0; | 46 | this._yOffset = 0; |
1823 | 47 | this._xPosition = 0; | 47 | this._xPosition = 0; |
1824 | 48 | this._yPosition = 0; | 48 | this._yPosition = 0; |
1825 | 49 | this._sourceAlignment = 0.5; | ||
1826 | 49 | }, | 50 | }, |
1827 | 50 | 51 | ||
1828 | 51 | show: function(animate, onComplete) { | 52 | show: function(animate, onComplete) { |
1829 | @@ -75,7 +76,7 @@ | |||
1830 | 75 | Tweener.addTween(this, { opacity: 255, | 76 | Tweener.addTween(this, { opacity: 255, |
1831 | 76 | xOffset: 0, | 77 | xOffset: 0, |
1832 | 77 | yOffset: 0, | 78 | yOffset: 0, |
1834 | 78 | transition: "linear", | 79 | transition: 'linear', |
1835 | 79 | onComplete: onComplete, | 80 | onComplete: onComplete, |
1836 | 80 | time: POPUP_ANIMATION_TIME }); | 81 | time: POPUP_ANIMATION_TIME }); |
1837 | 81 | }, | 82 | }, |
1838 | @@ -106,7 +107,7 @@ | |||
1839 | 106 | Tweener.addTween(this, { opacity: 0, | 107 | Tweener.addTween(this, { opacity: 0, |
1840 | 107 | xOffset: xOffset, | 108 | xOffset: xOffset, |
1841 | 108 | yOffset: yOffset, | 109 | yOffset: yOffset, |
1843 | 109 | transition: "linear", | 110 | transition: 'linear', |
1844 | 110 | time: POPUP_ANIMATION_TIME, | 111 | time: POPUP_ANIMATION_TIME, |
1845 | 111 | onComplete: Lang.bind(this, function () { | 112 | onComplete: Lang.bind(this, function () { |
1846 | 112 | this.actor.hide(); | 113 | this.actor.hide(); |
1847 | @@ -180,7 +181,7 @@ | |||
1848 | 180 | this.bin.allocate(childBox, flags); | 181 | this.bin.allocate(childBox, flags); |
1849 | 181 | 182 | ||
1850 | 182 | if (this._sourceActor && this._sourceActor.mapped) | 183 | if (this._sourceActor && this._sourceActor.mapped) |
1852 | 183 | this._reposition(this._sourceActor, this._alignment); | 184 | this._reposition(this._sourceActor, this._arrowAlignment); |
1853 | 184 | }, | 185 | }, |
1854 | 185 | 186 | ||
1855 | 186 | _drawBorder: function(area) { | 187 | _drawBorder: function(area) { |
1856 | @@ -312,24 +313,37 @@ | |||
1857 | 312 | this.actor.show(); | 313 | this.actor.show(); |
1858 | 313 | 314 | ||
1859 | 314 | this._sourceActor = sourceActor; | 315 | this._sourceActor = sourceActor; |
1861 | 315 | this._alignment = alignment; | 316 | this._arrowAlignment = alignment; |
1862 | 316 | 317 | ||
1863 | 317 | this._reposition(sourceActor, alignment); | 318 | this._reposition(sourceActor, alignment); |
1864 | 318 | }, | 319 | }, |
1865 | 319 | 320 | ||
1866 | 321 | setSourceAlignment: function(alignment) { | ||
1867 | 322 | this._sourceAlignment = alignment; | ||
1868 | 323 | |||
1869 | 324 | if (!this._sourceActor) | ||
1870 | 325 | return; | ||
1871 | 326 | |||
1872 | 327 | // We need to show it now to force an allocation, | ||
1873 | 328 | // so that we can query the correct size. | ||
1874 | 329 | this.actor.show(); | ||
1875 | 330 | |||
1876 | 331 | this._reposition(this._sourceActor, this._arrowAlignment); | ||
1877 | 332 | }, | ||
1878 | 333 | |||
1879 | 320 | _reposition: function(sourceActor, alignment) { | 334 | _reposition: function(sourceActor, alignment) { |
1880 | 321 | // Position correctly relative to the sourceActor | 335 | // Position correctly relative to the sourceActor |
1881 | 322 | let sourceNode = sourceActor.get_theme_node(); | 336 | let sourceNode = sourceActor.get_theme_node(); |
1882 | 323 | let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box()); | 337 | let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box()); |
1883 | 324 | let sourceAllocation = Shell.util_get_transformed_allocation(sourceActor); | 338 | let sourceAllocation = Shell.util_get_transformed_allocation(sourceActor); |
1886 | 325 | let sourceCenterX = sourceAllocation.x1 + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) / 2; | 339 | let sourceCenterX = sourceAllocation.x1 + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) * this._sourceAlignment; |
1887 | 326 | let sourceCenterY = sourceAllocation.y1 + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) / 2; | 340 | let sourceCenterY = sourceAllocation.y1 + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) * this._sourceAlignment; |
1888 | 327 | let [minWidth, minHeight, natWidth, natHeight] = this.actor.get_preferred_size(); | 341 | let [minWidth, minHeight, natWidth, natHeight] = this.actor.get_preferred_size(); |
1889 | 328 | 342 | ||
1890 | 329 | // We also want to keep it onscreen, and separated from the | 343 | // We also want to keep it onscreen, and separated from the |
1891 | 330 | // edge by the same distance as the main part of the box is | 344 | // edge by the same distance as the main part of the box is |
1892 | 331 | // separated from its sourceActor | 345 | // separated from its sourceActor |
1894 | 332 | let primary = Main.layoutManager.primaryMonitor; | 346 | let monitor = Main.layoutManager.findMonitorForActor(sourceActor); |
1895 | 333 | let themeNode = this.actor.get_theme_node(); | 347 | let themeNode = this.actor.get_theme_node(); |
1896 | 334 | let borderWidth = themeNode.get_length('-arrow-border-width'); | 348 | let borderWidth = themeNode.get_length('-arrow-border-width'); |
1897 | 335 | let arrowBase = themeNode.get_length('-arrow-base'); | 349 | let arrowBase = themeNode.get_length('-arrow-base'); |
1898 | @@ -364,8 +378,8 @@ | |||
1899 | 364 | case St.Side.BOTTOM: | 378 | case St.Side.BOTTOM: |
1900 | 365 | resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment); | 379 | resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment); |
1901 | 366 | 380 | ||
1904 | 367 | resX = Math.max(resX, primary.x + 10); | 381 | resX = Math.max(resX, monitor.x + 10); |
1905 | 368 | resX = Math.min(resX, primary.x + primary.width - (10 + natWidth)); | 382 | resX = Math.min(resX, monitor.x + monitor.width - (10 + natWidth)); |
1906 | 369 | this.setArrowOrigin(sourceCenterX - resX); | 383 | this.setArrowOrigin(sourceCenterX - resX); |
1907 | 370 | break; | 384 | break; |
1908 | 371 | 385 | ||
1909 | @@ -373,8 +387,8 @@ | |||
1910 | 373 | case St.Side.RIGHT: | 387 | case St.Side.RIGHT: |
1911 | 374 | resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment); | 388 | resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment); |
1912 | 375 | 389 | ||
1915 | 376 | resY = Math.max(resY, primary.y + 10); | 390 | resY = Math.max(resY, monitor.y + 10); |
1916 | 377 | resY = Math.min(resY, primary.y + primary.height - (10 + natHeight)); | 391 | resY = Math.min(resY, monitor.y + monitor.height - (10 + natHeight)); |
1917 | 378 | 392 | ||
1918 | 379 | this.setArrowOrigin(sourceCenterY - resY); | 393 | this.setArrowOrigin(sourceCenterY - resY); |
1919 | 380 | break; | 394 | break; |
1920 | 381 | 395 | ||
1921 | === modified file 'js/ui/calendar.js' | |||
1922 | --- js/ui/calendar.js 2011-09-04 08:02:35 +0000 | |||
1923 | +++ js/ui/calendar.js 2012-01-18 14:13:28 +0000 | |||
1924 | @@ -1,4 +1,4 @@ | |||
1926 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1927 | 2 | 2 | ||
1928 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
1929 | 4 | const Clutter = imports.gi.Clutter; | 4 | const Clutter = imports.gi.Clutter; |
1930 | 5 | 5 | ||
1931 | === modified file 'js/ui/contactDisplay.js' | |||
1932 | --- js/ui/contactDisplay.js 2011-09-04 08:02:35 +0000 | |||
1933 | +++ js/ui/contactDisplay.js 2012-01-18 14:13:28 +0000 | |||
1934 | @@ -1,4 +1,4 @@ | |||
1936 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1937 | 2 | 2 | ||
1938 | 3 | const Folks = imports.gi.Folks | 3 | const Folks = imports.gi.Folks |
1939 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
1940 | @@ -26,7 +26,8 @@ | |||
1941 | 26 | 26 | ||
1942 | 27 | Contact.prototype = { | 27 | Contact.prototype = { |
1943 | 28 | _init: function(id) { | 28 | _init: function(id) { |
1945 | 29 | this.individual = Shell.ContactSystem.get_default().get_individual(id); | 29 | this._contactSys = Shell.ContactSystem.get_default(); |
1946 | 30 | this.individual = this._contactSys.get_individual(id); | ||
1947 | 30 | 31 | ||
1948 | 31 | this.actor = new St.Bin({ style_class: 'contact', | 32 | this.actor = new St.Bin({ style_class: 'contact', |
1949 | 32 | reactive: true, | 33 | reactive: true, |
1950 | @@ -56,7 +57,12 @@ | |||
1951 | 56 | x_align: St.Align.START, | 57 | x_align: St.Align.START, |
1952 | 57 | y_align: St.Align.MIDDLE }); | 58 | y_align: St.Align.MIDDLE }); |
1953 | 58 | 59 | ||
1955 | 59 | let aliasText = this.individual.alias || _("Unknown"); | 60 | let email = this._contactSys.get_email_for_display(this.individual); |
1956 | 61 | let aliasText = this.individual.alias || | ||
1957 | 62 | this.individual.full_name || | ||
1958 | 63 | this.individual.nickname || | ||
1959 | 64 | email || | ||
1960 | 65 | _("Unknown"); | ||
1961 | 60 | let aliasLabel = new St.Label({ text: aliasText, | 66 | let aliasLabel = new St.Label({ text: aliasText, |
1962 | 61 | style_class: 'contact-details-alias' }); | 67 | style_class: 'contact-details-alias' }); |
1963 | 62 | details.add(aliasLabel, { x_fill: true, | 68 | details.add(aliasLabel, { x_fill: true, |
1964 | 63 | 69 | ||
1965 | === modified file 'js/ui/ctrlAltTab.js' | |||
1966 | --- js/ui/ctrlAltTab.js 2011-09-21 16:26:15 +0000 | |||
1967 | +++ js/ui/ctrlAltTab.js 2012-01-18 14:13:28 +0000 | |||
1968 | @@ -1,4 +1,4 @@ | |||
1970 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1971 | 2 | 2 | ||
1972 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
1973 | 4 | const Gdk = imports.gi.Gdk; | 4 | const Gdk = imports.gi.Gdk; |
1974 | 5 | 5 | ||
1975 | === modified file 'js/ui/dash.js' | |||
1976 | --- js/ui/dash.js 2011-09-21 16:26:15 +0000 | |||
1977 | +++ js/ui/dash.js 2012-01-18 14:13:28 +0000 | |||
1978 | @@ -1,4 +1,4 @@ | |||
1980 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
1981 | 2 | 2 | ||
1982 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
1983 | 4 | const Signals = imports.signals; | 4 | const Signals = imports.signals; |
1984 | @@ -37,6 +37,7 @@ | |||
1985 | 37 | this.child = null; | 37 | this.child = null; |
1986 | 38 | this._childScale = 1; | 38 | this._childScale = 1; |
1987 | 39 | this._childOpacity = 255; | 39 | this._childOpacity = 255; |
1988 | 40 | this.animatingOut = false; | ||
1989 | 40 | }, | 41 | }, |
1990 | 41 | 42 | ||
1991 | 42 | _allocate: function(actor, box, flags) { | 43 | _allocate: function(actor, box, flags) { |
1992 | @@ -115,6 +116,7 @@ | |||
1993 | 115 | return; | 116 | return; |
1994 | 116 | } | 117 | } |
1995 | 117 | 118 | ||
1996 | 119 | this.animatingOut = true; | ||
1997 | 118 | this.childScale = 1.0; | 120 | this.childScale = 1.0; |
1998 | 119 | Tweener.addTween(this, | 121 | Tweener.addTween(this, |
1999 | 120 | { childScale: 0.0, | 122 | { childScale: 0.0, |
2000 | @@ -177,12 +179,6 @@ | |||
2001 | 177 | this._iconBin._delegate = this; | 179 | this._iconBin._delegate = this; |
2002 | 178 | 180 | ||
2003 | 179 | this.setChild(this._iconBin); | 181 | this.setChild(this._iconBin); |
2004 | 180 | this.hiding = false; | ||
2005 | 181 | }, | ||
2006 | 182 | |||
2007 | 183 | animateOutAndDestroy: function() { | ||
2008 | 184 | DashItemContainer.prototype.animateOutAndDestroy.call(this); | ||
2009 | 185 | this.hiding = true; | ||
2010 | 186 | }, | 182 | }, |
2011 | 187 | 183 | ||
2012 | 188 | _createIcon: function(size) { | 184 | _createIcon: function(size) { |
2013 | @@ -314,15 +310,12 @@ | |||
2014 | 314 | _endDrag: function() { | 310 | _endDrag: function() { |
2015 | 315 | this._clearDragPlaceholder(); | 311 | this._clearDragPlaceholder(); |
2016 | 316 | if (this._favRemoveTarget) { | 312 | if (this._favRemoveTarget) { |
2017 | 317 | this._favRemoveTarget.actor.hide(); | ||
2018 | 318 | this._adjustIconSize(); | ||
2019 | 319 | this._favRemoveTarget.actor.show(); | ||
2020 | 320 | |||
2021 | 321 | this._favRemoveTarget.animateOutAndDestroy(); | 313 | this._favRemoveTarget.animateOutAndDestroy(); |
2022 | 322 | this._favRemoveTarget.actor.connect('destroy', Lang.bind(this, | 314 | this._favRemoveTarget.actor.connect('destroy', Lang.bind(this, |
2023 | 323 | function() { | 315 | function() { |
2024 | 324 | this._favRemoveTarget = null; | 316 | this._favRemoveTarget = null; |
2025 | 325 | })); | 317 | })); |
2026 | 318 | this._adjustIconSize(); | ||
2027 | 326 | } | 319 | } |
2028 | 327 | DND.removeDragMonitor(this._dragMonitor); | 320 | DND.removeDragMonitor(this._dragMonitor); |
2029 | 328 | }, | 321 | }, |
2030 | @@ -401,8 +394,18 @@ | |||
2031 | 401 | }, | 394 | }, |
2032 | 402 | 395 | ||
2033 | 403 | _adjustIconSize: function() { | 396 | _adjustIconSize: function() { |
2036 | 404 | let children = this._box.get_children(); | 397 | // For the icon size, we only consider children which are "proper" |
2037 | 405 | if (children.length == 0) { | 398 | // icons (i.e. ignoring drag placeholders) and which are not |
2038 | 399 | // animating out (which means they will be destroyed at the end of | ||
2039 | 400 | // the animation) | ||
2040 | 401 | let iconChildren = this._box.get_children().filter(function(actor) { | ||
2041 | 402 | return actor._delegate.child && | ||
2042 | 403 | actor._delegate.child._delegate && | ||
2043 | 404 | actor._delegate.child._delegate.icon && | ||
2044 | 405 | !actor._delegate.animatingOut; | ||
2045 | 406 | }); | ||
2046 | 407 | |||
2047 | 408 | if (iconChildren.length == 0) { | ||
2048 | 406 | this._box.add_style_pseudo_class('empty'); | 409 | this._box.add_style_pseudo_class('empty'); |
2049 | 407 | return; | 410 | return; |
2050 | 408 | } | 411 | } |
2051 | @@ -412,23 +415,45 @@ | |||
2052 | 412 | if (this._maxHeight == -1) | 415 | if (this._maxHeight == -1) |
2053 | 413 | return; | 416 | return; |
2054 | 414 | 417 | ||
2066 | 415 | let iconChildren = children.filter(function(actor) { | 418 | |
2067 | 416 | return actor.visible && | 419 | let themeNode = this.actor.get_theme_node(); |
2068 | 417 | actor._delegate.child && | 420 | let maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0, |
2069 | 418 | actor._delegate.child._delegate && | 421 | x2: 42 /* whatever */, |
2070 | 419 | actor._delegate.child._delegate.icon; | 422 | y2: this._maxHeight }); |
2071 | 420 | }); | 423 | let maxContent = themeNode.get_content_box(maxAllocation); |
2072 | 421 | 424 | let availHeight = maxContent.y2 - maxContent.y1; | |
2073 | 422 | // Compute the amount of extra space (or missing space) we have | 425 | let spacing = themeNode.get_length('spacing'); |
2074 | 423 | // per icon with the current icon size | 426 | |
2075 | 424 | let [minHeight, natHeight] = this.actor.get_preferred_height(-1); | 427 | |
2076 | 425 | let diff = (this._maxHeight - natHeight) / iconChildren.length; | 428 | let firstIcon = iconChildren[0]._delegate.child._delegate.icon; |
2077 | 429 | |||
2078 | 430 | let minHeight, natHeight; | ||
2079 | 431 | |||
2080 | 432 | // Enforce the current icon size during the size request if | ||
2081 | 433 | // the icon is animating | ||
2082 | 434 | if (firstIcon._animating) { | ||
2083 | 435 | let [currentWidth, currentHeight] = firstIcon.icon.get_size(); | ||
2084 | 436 | |||
2085 | 437 | firstIcon.icon.set_size(this.iconSize, this.iconSize); | ||
2086 | 438 | [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1); | ||
2087 | 439 | |||
2088 | 440 | firstIcon.icon.set_size(currentWidth, currentHeight); | ||
2089 | 441 | } else { | ||
2090 | 442 | [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1); | ||
2091 | 443 | } | ||
2092 | 444 | |||
2093 | 445 | |||
2094 | 446 | // Subtract icon padding and box spacing from the available height | ||
2095 | 447 | availHeight -= iconChildren.length * (natHeight - this.iconSize) + | ||
2096 | 448 | (iconChildren.length - 1) * spacing; | ||
2097 | 449 | |||
2098 | 450 | let availSize = availHeight / iconChildren.length; | ||
2099 | 426 | 451 | ||
2100 | 427 | let iconSizes = [ 16, 22, 24, 32, 48, 64 ]; | 452 | let iconSizes = [ 16, 22, 24, 32, 48, 64 ]; |
2101 | 428 | 453 | ||
2102 | 429 | let newIconSize = 16; | 454 | let newIconSize = 16; |
2103 | 430 | for (let i = 0; i < iconSizes.length; i++) { | 455 | for (let i = 0; i < iconSizes.length; i++) { |
2105 | 431 | if (iconSizes[i] < this.iconSize + diff) | 456 | if (iconSizes[i] < availSize) |
2106 | 432 | newIconSize = iconSizes[i]; | 457 | newIconSize = iconSizes[i]; |
2107 | 433 | } | 458 | } |
2108 | 434 | 459 | ||
2109 | @@ -459,11 +484,15 @@ | |||
2110 | 459 | icon.icon.set_size(icon.icon.width * scale, | 484 | icon.icon.set_size(icon.icon.width * scale, |
2111 | 460 | icon.icon.height * scale); | 485 | icon.icon.height * scale); |
2112 | 461 | 486 | ||
2113 | 487 | icon._animating = true; | ||
2114 | 462 | Tweener.addTween(icon.icon, | 488 | Tweener.addTween(icon.icon, |
2115 | 463 | { width: targetWidth, | 489 | { width: targetWidth, |
2116 | 464 | height: targetHeight, | 490 | height: targetHeight, |
2117 | 465 | time: DASH_ANIMATION_TIME, | 491 | time: DASH_ANIMATION_TIME, |
2119 | 466 | transition: 'easeOutQuad' | 492 | transition: 'easeOutQuad', |
2120 | 493 | onComplete: function() { | ||
2121 | 494 | icon._animating = false; | ||
2122 | 495 | } | ||
2123 | 467 | }); | 496 | }); |
2124 | 468 | } | 497 | } |
2125 | 469 | }, | 498 | }, |
2126 | @@ -566,29 +595,7 @@ | |||
2127 | 566 | this._box.insert_actor(addedItems[i].item.actor, | 595 | this._box.insert_actor(addedItems[i].item.actor, |
2128 | 567 | addedItems[i].pos); | 596 | addedItems[i].pos); |
2129 | 568 | 597 | ||
2130 | 569 | // Hide removed actors to not take them into account | ||
2131 | 570 | // when adjusting the icon size ... | ||
2132 | 571 | for (let i = 0; i < removedActors.length; i++) | ||
2133 | 572 | removedActors[i].hide(); | ||
2134 | 573 | |||
2135 | 574 | // ... and do the same for the remove target if necessary | ||
2136 | 575 | if (this._favRemoveTarget && this._favRemoveTarget.hiding) | ||
2137 | 576 | this._favRemoveTarget.actor.hide(); | ||
2138 | 577 | |||
2139 | 578 | this._adjustIconSize(); | ||
2140 | 579 | |||
2141 | 580 | if (this._favRemoveTarget && this._favRemoveTarget.hiding) | ||
2142 | 581 | this._favRemoveTarget.actor.show(); | ||
2143 | 582 | |||
2144 | 583 | // Skip animations on first run when adding the initial set | ||
2145 | 584 | // of items, to avoid all items zooming in at once | ||
2146 | 585 | if (!this._shownInitially) { | ||
2147 | 586 | this._shownInitially = true; | ||
2148 | 587 | return; | ||
2149 | 588 | } | ||
2150 | 589 | |||
2151 | 590 | for (let i = 0; i < removedActors.length; i++) { | 598 | for (let i = 0; i < removedActors.length; i++) { |
2152 | 591 | removedActors[i].show(); | ||
2153 | 592 | let item = removedActors[i]._delegate; | 599 | let item = removedActors[i]._delegate; |
2154 | 593 | 600 | ||
2155 | 594 | // Don't animate item removal when the overview is hidden | 601 | // Don't animate item removal when the overview is hidden |
2156 | @@ -598,6 +605,15 @@ | |||
2157 | 598 | item.actor.destroy(); | 605 | item.actor.destroy(); |
2158 | 599 | } | 606 | } |
2159 | 600 | 607 | ||
2160 | 608 | this._adjustIconSize(); | ||
2161 | 609 | |||
2162 | 610 | // Skip animations on first run when adding the initial set | ||
2163 | 611 | // of items, to avoid all items zooming in at once | ||
2164 | 612 | if (!this._shownInitially) { | ||
2165 | 613 | this._shownInitially = true; | ||
2166 | 614 | return; | ||
2167 | 615 | } | ||
2168 | 616 | |||
2169 | 601 | // Don't animate item addition when the overview is hidden | 617 | // Don't animate item addition when the overview is hidden |
2170 | 602 | if (!Main.overview.visible) | 618 | if (!Main.overview.visible) |
2171 | 603 | return; | 619 | return; |
2172 | 604 | 620 | ||
2173 | === modified file 'js/ui/dateMenu.js' | |||
2174 | --- js/ui/dateMenu.js 2011-09-21 16:26:15 +0000 | |||
2175 | +++ js/ui/dateMenu.js 2012-01-18 14:13:28 +0000 | |||
2176 | @@ -1,4 +1,4 @@ | |||
2178 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2179 | 2 | 2 | ||
2180 | 3 | const GLib = imports.gi.GLib; | 3 | const GLib = imports.gi.GLib; |
2181 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
2182 | 5 | 5 | ||
2183 | === modified file 'js/ui/dnd.js' | |||
2184 | --- js/ui/dnd.js 2011-07-20 14:46:28 +0000 | |||
2185 | +++ js/ui/dnd.js 2012-01-18 14:13:28 +0000 | |||
2186 | @@ -1,4 +1,4 @@ | |||
2188 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2189 | 2 | 2 | ||
2190 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2191 | 4 | const Gtk = imports.gi.Gtk; | 4 | const Gtk = imports.gi.Gtk; |
2192 | 5 | 5 | ||
2193 | === modified file 'js/ui/docDisplay.js' | |||
2194 | --- js/ui/docDisplay.js 2011-09-04 08:02:35 +0000 | |||
2195 | +++ js/ui/docDisplay.js 2012-01-18 14:13:28 +0000 | |||
2196 | @@ -1,4 +1,4 @@ | |||
2198 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2199 | 2 | 2 | ||
2200 | 3 | const DocInfo = imports.misc.docInfo; | 3 | const DocInfo = imports.misc.docInfo; |
2201 | 4 | const Params = imports.misc.params; | 4 | const Params = imports.misc.params; |
2202 | 5 | 5 | ||
2203 | === modified file 'js/ui/endSessionDialog.js' | |||
2204 | --- js/ui/endSessionDialog.js 2011-09-21 16:26:15 +0000 | |||
2205 | +++ js/ui/endSessionDialog.js 2012-01-18 14:13:28 +0000 | |||
2206 | @@ -1,5 +1,5 @@ | |||
2209 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2210 | 2 | * | 2 | /* |
2211 | 3 | * Copyright 2010 Red Hat, Inc | 3 | * Copyright 2010 Red Hat, Inc |
2212 | 4 | * | 4 | * |
2213 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
2214 | 6 | 6 | ||
2215 | === modified file 'js/ui/environment.js' | |||
2216 | --- js/ui/environment.js 2011-07-20 14:46:28 +0000 | |||
2217 | +++ js/ui/environment.js 2012-01-18 14:13:28 +0000 | |||
2218 | @@ -1,4 +1,4 @@ | |||
2220 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2221 | 2 | 2 | ||
2222 | 3 | imports.gi.versions.Clutter = '1.0'; | 3 | imports.gi.versions.Clutter = '1.0'; |
2223 | 4 | imports.gi.versions.Gio = '2.0'; | 4 | imports.gi.versions.Gio = '2.0'; |
2224 | 5 | 5 | ||
2225 | === modified file 'js/ui/extensionSystem.js' | |||
2226 | --- js/ui/extensionSystem.js 2011-09-21 16:26:15 +0000 | |||
2227 | +++ js/ui/extensionSystem.js 2012-01-18 14:13:28 +0000 | |||
2228 | @@ -1,4 +1,4 @@ | |||
2230 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2231 | 2 | 2 | ||
2232 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
2233 | 4 | const Signals = imports.signals; | 4 | const Signals = imports.signals; |
2234 | @@ -289,7 +289,7 @@ | |||
2235 | 289 | } | 289 | } |
2236 | 290 | 290 | ||
2237 | 291 | if (extensions[uuid] != undefined) { | 291 | if (extensions[uuid] != undefined) { |
2239 | 292 | logExtensionError(uuid, "extension already loaded"); | 292 | logExtensionError(uuid, 'extension already loaded'); |
2240 | 293 | return; | 293 | return; |
2241 | 294 | } | 294 | } |
2242 | 295 | 295 | ||
2243 | @@ -450,7 +450,6 @@ | |||
2244 | 450 | } | 450 | } |
2245 | 451 | 451 | ||
2246 | 452 | function loadExtensions() { | 452 | function loadExtensions() { |
2247 | 453 | _loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER); | ||
2248 | 454 | let systemDataDirs = GLib.get_system_data_dirs(); | 453 | let systemDataDirs = GLib.get_system_data_dirs(); |
2249 | 455 | for (let i = 0; i < systemDataDirs.length; i++) { | 454 | for (let i = 0; i < systemDataDirs.length; i++) { |
2250 | 456 | let dirPath = systemDataDirs[i] + '/gnome-shell/extensions'; | 455 | let dirPath = systemDataDirs[i] + '/gnome-shell/extensions'; |
2251 | @@ -458,6 +457,7 @@ | |||
2252 | 458 | if (dir.query_exists(null)) | 457 | if (dir.query_exists(null)) |
2253 | 459 | _loadExtensionsIn(dir, ExtensionType.SYSTEM); | 458 | _loadExtensionsIn(dir, ExtensionType.SYSTEM); |
2254 | 460 | } | 459 | } |
2255 | 460 | _loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER); | ||
2256 | 461 | } | 461 | } |
2257 | 462 | 462 | ||
2258 | 463 | function InstallExtensionDialog(uuid, version_tag, name) { | 463 | function InstallExtensionDialog(uuid, version_tag, name) { |
2259 | 464 | 464 | ||
2260 | === modified file 'js/ui/iconGrid.js' | |||
2261 | --- js/ui/iconGrid.js 2011-07-20 14:46:28 +0000 | |||
2262 | +++ js/ui/iconGrid.js 2012-01-18 14:13:28 +0000 | |||
2263 | @@ -1,4 +1,4 @@ | |||
2265 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2266 | 2 | 2 | ||
2267 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2268 | 4 | const Shell = imports.gi.Shell; | 4 | const Shell = imports.gi.Shell; |
2269 | 5 | 5 | ||
2270 | === modified file 'js/ui/keyboard.js' | |||
2271 | --- js/ui/keyboard.js 2011-09-28 00:41:45 +0000 | |||
2272 | +++ js/ui/keyboard.js 2012-01-18 14:13:28 +0000 | |||
2273 | @@ -1,4 +1,4 @@ | |||
2275 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2276 | 2 | 2 | ||
2277 | 3 | const Caribou = imports.gi.Caribou; | 3 | const Caribou = imports.gi.Caribou; |
2278 | 4 | const Clutter = imports.gi.Clutter; | 4 | const Clutter = imports.gi.Clutter; |
2279 | @@ -75,7 +75,7 @@ | |||
2280 | 75 | this._extended_keys = this._key.get_extended_keys(); | 75 | this._extended_keys = this._key.get_extended_keys(); |
2281 | 76 | this._extended_keyboard = null; | 76 | this._extended_keyboard = null; |
2282 | 77 | 77 | ||
2284 | 78 | if (this._key.name == "Control_L" || this._key.name == "Alt_L") | 78 | if (this._key.name == 'Control_L' || this._key.name == 'Alt_L') |
2285 | 79 | this._key.latch = true; | 79 | this._key.latch = true; |
2286 | 80 | 80 | ||
2287 | 81 | this._key.connect('key-pressed', Lang.bind(this, function () | 81 | this._key.connect('key-pressed', Lang.bind(this, function () |
2288 | @@ -218,7 +218,7 @@ | |||
2289 | 218 | this._redraw(); | 218 | this._redraw(); |
2290 | 219 | }, | 219 | }, |
2291 | 220 | 220 | ||
2293 | 221 | _settingsChanged: function () { | 221 | _settingsChanged: function (settings, key) { |
2294 | 222 | this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); | 222 | this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); |
2295 | 223 | if (!this._enableKeyboard && !this._keyboard) | 223 | if (!this._enableKeyboard && !this._keyboard) |
2296 | 224 | return; | 224 | return; |
2297 | @@ -228,9 +228,20 @@ | |||
2298 | 228 | 228 | ||
2299 | 229 | if (this._keyboard) | 229 | if (this._keyboard) |
2300 | 230 | this._destroyKeyboard(); | 230 | this._destroyKeyboard(); |
2304 | 231 | if (this._enableKeyboard) | 231 | |
2305 | 232 | this._setupKeyboard(); | 232 | if (this._enableKeyboard) { |
2306 | 233 | else | 233 | // If we've been called because the setting actually just |
2307 | 234 | // changed to true (as opposed to being called from | ||
2308 | 235 | // this._init()), then we want to pop up the keyboard. | ||
2309 | 236 | let showKeyboard = (settings != null); | ||
2310 | 237 | |||
2311 | 238 | // However, caribou-gtk-module or this._onKeyFocusChanged | ||
2312 | 239 | // will probably immediately tell us to hide it, so we | ||
2313 | 240 | // have to fake things out so we'll ignore that request. | ||
2314 | 241 | if (showKeyboard) | ||
2315 | 242 | this._timestamp = global.display.get_current_time_roundtrip() + 1; | ||
2316 | 243 | this._setupKeyboard(showKeyboard); | ||
2317 | 244 | } else | ||
2318 | 234 | Main.layoutManager.hideKeyboard(true); | 245 | Main.layoutManager.hideKeyboard(true); |
2319 | 235 | }, | 246 | }, |
2320 | 236 | 247 | ||
2321 | @@ -246,7 +257,7 @@ | |||
2322 | 246 | this._destroySource(); | 257 | this._destroySource(); |
2323 | 247 | }, | 258 | }, |
2324 | 248 | 259 | ||
2326 | 249 | _setupKeyboard: function() { | 260 | _setupKeyboard: function(show) { |
2327 | 250 | this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true }); | 261 | this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true }); |
2328 | 251 | Main.layoutManager.keyboardBox.add_actor(this.actor); | 262 | Main.layoutManager.keyboardBox.add_actor(this.actor); |
2329 | 252 | Main.layoutManager.trackChrome(this.actor); | 263 | Main.layoutManager.trackChrome(this.actor); |
2330 | @@ -263,20 +274,26 @@ | |||
2331 | 263 | 274 | ||
2332 | 264 | this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged)); | 275 | this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged)); |
2333 | 265 | this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged)); | 276 | this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged)); |
2335 | 266 | this._createSource(); | 277 | |
2336 | 278 | if (show) | ||
2337 | 279 | this.show(); | ||
2338 | 280 | else | ||
2339 | 281 | this._createSource(); | ||
2340 | 267 | }, | 282 | }, |
2341 | 268 | 283 | ||
2342 | 269 | _onKeyFocusChanged: function () { | 284 | _onKeyFocusChanged: function () { |
2343 | 270 | let focus = global.stage.key_focus; | 285 | let focus = global.stage.key_focus; |
2344 | 271 | 286 | ||
2347 | 272 | // Showing an extended key popup will grab focus, but ignore that | 287 | // Showing an extended key popup and clicking a key from the extended keys |
2348 | 273 | if (focus && focus._extended_keys) | 288 | // will grab focus, but ignore that |
2349 | 289 | if (focus && (focus._extended_keys || (focus._key && focus._key.extended_key))) | ||
2350 | 274 | return; | 290 | return; |
2351 | 275 | 291 | ||
2352 | 292 | let time = global.current_event_time(); | ||
2353 | 276 | if (focus instanceof Clutter.Text) | 293 | if (focus instanceof Clutter.Text) |
2355 | 277 | this.show(); | 294 | this.Show(time); |
2356 | 278 | else | 295 | else |
2358 | 279 | this.hide(); | 296 | this.Hide(time); |
2359 | 280 | }, | 297 | }, |
2360 | 281 | 298 | ||
2361 | 282 | _addKeys: function () { | 299 | _addKeys: function () { |
2362 | @@ -305,7 +322,8 @@ | |||
2363 | 305 | }, | 322 | }, |
2364 | 306 | 323 | ||
2365 | 307 | _getTrayIcon: function () { | 324 | _getTrayIcon: function () { |
2367 | 308 | let trayButton = new St.Button ({ label: "tray", style_class: 'keyboard-key' }); | 325 | let trayButton = new St.Button ({ label: _("tray"), |
2368 | 326 | style_class: 'keyboard-key' }); | ||
2369 | 309 | trayButton.key_width = 1; | 327 | trayButton.key_width = 1; |
2370 | 310 | trayButton.connect('button-press-event', Lang.bind(this, function () { | 328 | trayButton.connect('button-press-event', Lang.bind(this, function () { |
2371 | 311 | Main.messageTray.toggle(); | 329 | Main.messageTray.toggle(); |
2372 | @@ -339,7 +357,7 @@ | |||
2373 | 339 | right_box.add(button.actor); | 357 | right_box.add(button.actor); |
2374 | 340 | else | 358 | else |
2375 | 341 | left_box.add(button.actor); | 359 | left_box.add(button.actor); |
2377 | 342 | if (key.name == "Caribou_Prefs") { | 360 | if (key.name == 'Caribou_Prefs') { |
2378 | 343 | key.connect('key-released', Lang.bind(this, this.hide)); | 361 | key.connect('key-released', Lang.bind(this, this.hide)); |
2379 | 344 | 362 | ||
2380 | 345 | // Add new key for hiding message tray | 363 | // Add new key for hiding message tray |
2381 | @@ -476,6 +494,9 @@ | |||
2382 | 476 | 494 | ||
2383 | 477 | // D-Bus methods | 495 | // D-Bus methods |
2384 | 478 | Show: function(timestamp) { | 496 | Show: function(timestamp) { |
2385 | 497 | if (!this._enableKeyboard) | ||
2386 | 498 | return; | ||
2387 | 499 | |||
2388 | 479 | if (timestamp - this._timestamp < 0) | 500 | if (timestamp - this._timestamp < 0) |
2389 | 480 | return; | 501 | return; |
2390 | 481 | 502 | ||
2391 | @@ -484,6 +505,9 @@ | |||
2392 | 484 | }, | 505 | }, |
2393 | 485 | 506 | ||
2394 | 486 | Hide: function(timestamp) { | 507 | Hide: function(timestamp) { |
2395 | 508 | if (!this._enableKeyboard) | ||
2396 | 509 | return; | ||
2397 | 510 | |||
2398 | 487 | if (timestamp - this._timestamp < 0) | 511 | if (timestamp - this._timestamp < 0) |
2399 | 488 | return; | 512 | return; |
2400 | 489 | 513 | ||
2401 | @@ -492,10 +516,16 @@ | |||
2402 | 492 | }, | 516 | }, |
2403 | 493 | 517 | ||
2404 | 494 | SetCursorLocation: function(x, y, w, h) { | 518 | SetCursorLocation: function(x, y, w, h) { |
2405 | 519 | if (!this._enableKeyboard) | ||
2406 | 520 | return; | ||
2407 | 521 | |||
2408 | 495 | // this._setLocation(x, y); | 522 | // this._setLocation(x, y); |
2409 | 496 | }, | 523 | }, |
2410 | 497 | 524 | ||
2411 | 498 | SetEntryLocation: function(x, y, w, h) { | 525 | SetEntryLocation: function(x, y, w, h) { |
2412 | 526 | if (!this._enableKeyboard) | ||
2413 | 527 | return; | ||
2414 | 528 | |||
2415 | 499 | // this._setLocation(x, y); | 529 | // this._setLocation(x, y); |
2416 | 500 | }, | 530 | }, |
2417 | 501 | 531 | ||
2418 | 502 | 532 | ||
2419 | === modified file 'js/ui/layout.js' | |||
2420 | --- js/ui/layout.js 2011-09-28 06:48:58 +0000 | |||
2421 | +++ js/ui/layout.js 2012-01-18 14:13:28 +0000 | |||
2422 | @@ -1,4 +1,4 @@ | |||
2424 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2425 | 2 | 2 | ||
2426 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2427 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
2428 | @@ -216,10 +216,10 @@ | |||
2429 | 216 | let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width; | 216 | let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width; |
2430 | 217 | let primaryLeft = primary.x, primaryRight = primary.x + primary.width; | 217 | let primaryLeft = primary.x, primaryRight = primary.x + primary.width; |
2431 | 218 | 218 | ||
2436 | 219 | if ((monitorLeft >= primaryLeft && monitorLeft <= primaryRight) || | 219 | if ((monitorLeft >= primaryLeft && monitorLeft < primaryRight) || |
2437 | 220 | (monitorRight >= primaryLeft && monitorRight <= primaryRight) || | 220 | (monitorRight > primaryLeft && monitorRight <= primaryRight) || |
2438 | 221 | (primaryLeft >= monitorLeft && primaryLeft <= monitorRight) || | 221 | (primaryLeft >= monitorLeft && primaryLeft < monitorRight) || |
2439 | 222 | (primaryRight >= monitorLeft && primaryRight <= monitorRight)) | 222 | (primaryRight > monitorLeft && primaryRight <= monitorRight)) |
2440 | 223 | return true; | 223 | return true; |
2441 | 224 | 224 | ||
2442 | 225 | return false; | 225 | return false; |
2443 | @@ -369,6 +369,10 @@ | |||
2444 | 369 | // Removes @actor from the chrome | 369 | // Removes @actor from the chrome |
2445 | 370 | removeChrome: function(actor) { | 370 | removeChrome: function(actor) { |
2446 | 371 | this._chrome.removeActor(actor); | 371 | this._chrome.removeActor(actor); |
2447 | 372 | }, | ||
2448 | 373 | |||
2449 | 374 | findMonitorForActor: function(actor) { | ||
2450 | 375 | return this._chrome.findMonitorForActor(actor); | ||
2451 | 372 | } | 376 | } |
2452 | 373 | }; | 377 | }; |
2453 | 374 | Signals.addSignalMethods(LayoutManager.prototype); | 378 | Signals.addSignalMethods(LayoutManager.prototype); |
2454 | @@ -621,7 +625,7 @@ | |||
2455 | 621 | // We can't use Params.parse here because we want to drop | 625 | // We can't use Params.parse here because we want to drop |
2456 | 622 | // the extra values like ancestorData.actor | 626 | // the extra values like ancestorData.actor |
2457 | 623 | for (let prop in defaultParams) { | 627 | for (let prop in defaultParams) { |
2459 | 624 | if (!params[prop]) | 628 | if (!params.hasOwnProperty(prop)) |
2460 | 625 | params[prop] = ancestorData[prop]; | 629 | params[prop] = ancestorData[prop]; |
2461 | 626 | } | 630 | } |
2462 | 627 | 631 | ||
2463 | @@ -700,7 +704,7 @@ | |||
2464 | 700 | else if (this._inOverview) | 704 | else if (this._inOverview) |
2465 | 701 | visible = true; | 705 | visible = true; |
2466 | 702 | else if (!actorData.visibleInFullscreen && | 706 | else if (!actorData.visibleInFullscreen && |
2468 | 703 | this._findMonitorForActor(actorData.actor).inFullscreen) | 707 | this.findMonitorForActor(actorData.actor).inFullscreen) |
2469 | 704 | visible = false; | 708 | visible = false; |
2470 | 705 | else | 709 | else |
2471 | 706 | visible = true; | 710 | visible = true; |
2472 | @@ -762,7 +766,7 @@ | |||
2473 | 762 | 766 | ||
2474 | 763 | // This call guarantees that we return some monitor to simplify usage of it | 767 | // This call guarantees that we return some monitor to simplify usage of it |
2475 | 764 | // In practice all tracked actors should be visible on some monitor anyway | 768 | // In practice all tracked actors should be visible on some monitor anyway |
2477 | 765 | _findMonitorForActor: function(actor) { | 769 | findMonitorForActor: function(actor) { |
2478 | 766 | let [x, y] = actor.get_transformed_position(); | 770 | let [x, y] = actor.get_transformed_position(); |
2479 | 767 | let [w, h] = actor.get_transformed_size(); | 771 | let [w, h] = actor.get_transformed_size(); |
2480 | 768 | let monitor = this._findMonitorForRect(x, y, w, h); | 772 | let monitor = this._findMonitorForRect(x, y, w, h); |
2481 | @@ -821,6 +825,18 @@ | |||
2482 | 821 | monitor.inFullscreen = true; | 825 | monitor.inFullscreen = true; |
2483 | 822 | } | 826 | } |
2484 | 823 | if (layer == Meta.StackLayer.OVERRIDE_REDIRECT) { | 827 | if (layer == Meta.StackLayer.OVERRIDE_REDIRECT) { |
2485 | 828 | // Check whether the window is screen sized | ||
2486 | 829 | let isScreenSized = | ||
2487 | 830 | (window.x == 0 && window.y == 0 && | ||
2488 | 831 | window.width == global.screen_width && | ||
2489 | 832 | window.height == global.screen_height); | ||
2490 | 833 | |||
2491 | 834 | if (isScreenSized) { | ||
2492 | 835 | for (let i = 0; i < this._monitors.length; i++) | ||
2493 | 836 | this._monitors[i].inFullscreen = true; | ||
2494 | 837 | } | ||
2495 | 838 | |||
2496 | 839 | // Or whether it is monitor sized | ||
2497 | 824 | let monitor = this._findMonitorForWindow(window); | 840 | let monitor = this._findMonitorForWindow(window); |
2498 | 825 | if (monitor && | 841 | if (monitor && |
2499 | 826 | window.x <= monitor.x && | 842 | window.x <= monitor.x && |
2500 | 827 | 843 | ||
2501 | === modified file 'js/ui/lightbox.js' | |||
2502 | --- js/ui/lightbox.js 2010-12-19 00:08:30 +0000 | |||
2503 | +++ js/ui/lightbox.js 2012-01-18 14:13:28 +0000 | |||
2504 | @@ -1,4 +1,4 @@ | |||
2506 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2507 | 2 | 2 | ||
2508 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
2509 | 4 | const Meta = imports.gi.Meta; | 4 | const Meta = imports.gi.Meta; |
2510 | 5 | 5 | ||
2511 | === modified file 'js/ui/link.js' | |||
2512 | --- js/ui/link.js 2010-12-19 00:08:30 +0000 | |||
2513 | +++ js/ui/link.js 2012-01-18 14:13:28 +0000 | |||
2514 | @@ -1,4 +1,4 @@ | |||
2516 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2517 | 2 | 2 | ||
2518 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
2519 | 4 | const Signals = imports.signals; | 4 | const Signals = imports.signals; |
2520 | 5 | 5 | ||
2521 | === modified file 'js/ui/lookingGlass.js' | |||
2522 | --- js/ui/lookingGlass.js 2011-09-21 16:26:15 +0000 | |||
2523 | +++ js/ui/lookingGlass.js 2012-01-18 14:13:28 +0000 | |||
2524 | @@ -1,4 +1,4 @@ | |||
2526 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2527 | 2 | 2 | ||
2528 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2529 | 4 | const Cogl = imports.gi.Cogl; | 4 | const Cogl = imports.gi.Cogl; |
2530 | @@ -17,6 +17,7 @@ | |||
2531 | 17 | const History = imports.misc.history; | 17 | const History = imports.misc.history; |
2532 | 18 | const ExtensionSystem = imports.ui.extensionSystem; | 18 | const ExtensionSystem = imports.ui.extensionSystem; |
2533 | 19 | const Link = imports.ui.link; | 19 | const Link = imports.ui.link; |
2534 | 20 | const ShellEntry = imports.ui.shellEntry; | ||
2535 | 20 | const Tweener = imports.ui.tweener; | 21 | const Tweener = imports.ui.tweener; |
2536 | 21 | const Main = imports.ui.main; | 22 | const Main = imports.ui.main; |
2537 | 22 | 23 | ||
2538 | @@ -157,9 +158,9 @@ | |||
2539 | 157 | function objectToString(o) { | 158 | function objectToString(o) { |
2540 | 158 | if (typeof(o) == typeof(objectToString)) { | 159 | if (typeof(o) == typeof(objectToString)) { |
2541 | 159 | // special case this since the default is way, way too verbose | 160 | // special case this since the default is way, way too verbose |
2543 | 160 | return "<js function>"; | 161 | return '<js function>'; |
2544 | 161 | } else { | 162 | } else { |
2546 | 162 | return "" + o; | 163 | return '' + o; |
2547 | 163 | } | 164 | } |
2548 | 164 | } | 165 | } |
2549 | 165 | 166 | ||
2550 | @@ -322,7 +323,7 @@ | |||
2551 | 322 | link = new St.Label({ text: '<error>' }); | 323 | link = new St.Label({ text: '<error>' }); |
2552 | 323 | } | 324 | } |
2553 | 324 | let hbox = new St.BoxLayout(); | 325 | let hbox = new St.BoxLayout(); |
2555 | 325 | let propText = propName + ": " + valueStr; | 326 | let propText = propName + ': ' + valueStr; |
2556 | 326 | hbox.add(new St.Label({ text: propName + ': ' })); | 327 | hbox.add(new St.Label({ text: propName + ': ' })); |
2557 | 327 | hbox.add(link); | 328 | hbox.add(link); |
2558 | 328 | this._container.add_actor(hbox); | 329 | this._container.add_actor(hbox); |
2559 | @@ -343,7 +344,7 @@ | |||
2560 | 343 | this.actor.move_anchor_point(Math.floor(sourceX + sourceWidth / 2), | 344 | this.actor.move_anchor_point(Math.floor(sourceX + sourceWidth / 2), |
2561 | 344 | Math.floor(sourceY + sourceHeight / 2)); | 345 | Math.floor(sourceY + sourceHeight / 2)); |
2562 | 345 | Tweener.addTween(this.actor, { scale_x: 1, scale_y: 1, | 346 | Tweener.addTween(this.actor, { scale_x: 1, scale_y: 1, |
2564 | 346 | transition: "easeOutQuad", | 347 | transition: 'easeOutQuad', |
2565 | 347 | time: 0.2 }); | 348 | time: 0.2 }); |
2566 | 348 | } else { | 349 | } else { |
2567 | 349 | this.actor.set_scale(1, 1); | 350 | this.actor.set_scale(1, 1); |
2568 | @@ -710,27 +711,23 @@ | |||
2569 | 710 | text: meta.description || 'No description' }); | 711 | text: meta.description || 'No description' }); |
2570 | 711 | box.add(description, { expand: true }); | 712 | box.add(description, { expand: true }); |
2571 | 712 | 713 | ||
2573 | 713 | let metaBox = new St.BoxLayout(); | 714 | let metaBox = new St.BoxLayout({ style_class: 'lg-extension-meta' }); |
2574 | 714 | box.add(metaBox); | 715 | box.add(metaBox); |
2575 | 715 | let stateString = this._stateToString(meta.state); | 716 | let stateString = this._stateToString(meta.state); |
2576 | 716 | let state = new St.Label({ style_class: 'lg-extension-state', | 717 | let state = new St.Label({ style_class: 'lg-extension-state', |
2577 | 717 | text: this._stateToString(meta.state) }); | 718 | text: this._stateToString(meta.state) }); |
2583 | 718 | 719 | metaBox.add(state); | |
2579 | 719 | let actionsContainer = new St.Bin({ x_align: St.Align.END }); | ||
2580 | 720 | metaBox.add(actionsContainer); | ||
2581 | 721 | let actionsBox = new St.BoxLayout({ style_class: 'lg-extension-actions' }); | ||
2582 | 722 | actionsContainer.set_child(actionsBox); | ||
2584 | 723 | 720 | ||
2585 | 724 | let viewsource = new Link.Link({ label: _("View Source") }); | 721 | let viewsource = new Link.Link({ label: _("View Source") }); |
2586 | 725 | viewsource.actor._extensionMeta = meta; | 722 | viewsource.actor._extensionMeta = meta; |
2587 | 726 | viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource)); | 723 | viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource)); |
2589 | 727 | actionsBox.add(viewsource.actor); | 724 | metaBox.add(viewsource.actor); |
2590 | 728 | 725 | ||
2591 | 729 | if (meta.url) { | 726 | if (meta.url) { |
2592 | 730 | let webpage = new Link.Link({ label: _("Web Page") }); | 727 | let webpage = new Link.Link({ label: _("Web Page") }); |
2593 | 731 | webpage.actor._extensionMeta = meta; | 728 | webpage.actor._extensionMeta = meta; |
2594 | 732 | webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage)); | 729 | webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage)); |
2596 | 733 | actionsBox.add(webpage.actor); | 730 | metaBox.add(webpage.actor); |
2597 | 734 | } | 731 | } |
2598 | 735 | 732 | ||
2599 | 736 | return box; | 733 | return box; |
2600 | @@ -820,6 +817,7 @@ | |||
2601 | 820 | entryArea.add(label); | 817 | entryArea.add(label); |
2602 | 821 | 818 | ||
2603 | 822 | this._entry = new St.Entry({ can_focus: true }); | 819 | this._entry = new St.Entry({ can_focus: true }); |
2604 | 820 | ShellEntry.addContextMenu(this._entry); | ||
2605 | 823 | entryArea.add(this._entry, { expand: true }); | 821 | entryArea.add(this._entry, { expand: true }); |
2606 | 824 | 822 | ||
2607 | 825 | this._windowList = new WindowList(); | 823 | this._windowList = new WindowList(); |
2608 | 826 | 824 | ||
2609 | === modified file 'js/ui/magnifier.js' | |||
2610 | --- js/ui/magnifier.js 2011-02-25 12:23:23 +0000 | |||
2611 | +++ js/ui/magnifier.js 2012-01-18 14:13:28 +0000 | |||
2612 | @@ -1,4 +1,4 @@ | |||
2614 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2615 | 2 | 2 | ||
2616 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2617 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
2618 | 5 | 5 | ||
2619 | === modified file 'js/ui/magnifierDBus.js' | |||
2620 | --- js/ui/magnifierDBus.js 2011-01-12 23:41:41 +0000 | |||
2621 | +++ js/ui/magnifierDBus.js 2012-01-18 14:13:28 +0000 | |||
2622 | @@ -1,4 +1,4 @@ | |||
2624 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2625 | 2 | 2 | ||
2626 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
2627 | 4 | const Main = imports.ui.main; | 4 | const Main = imports.ui.main; |
2628 | 5 | 5 | ||
2629 | === modified file 'js/ui/main.js' | |||
2630 | --- js/ui/main.js 2011-09-22 08:50:45 +0000 | |||
2631 | +++ js/ui/main.js 2012-01-18 14:13:28 +0000 | |||
2632 | @@ -1,4 +1,4 @@ | |||
2634 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2635 | 2 | 2 | ||
2636 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2637 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
2638 | @@ -129,8 +129,6 @@ | |||
2639 | 129 | function _initUserSession() { | 129 | function _initUserSession() { |
2640 | 130 | _initRecorder(); | 130 | _initRecorder(); |
2641 | 131 | 131 | ||
2642 | 132 | keyboard.init(); | ||
2643 | 133 | |||
2644 | 134 | global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1); | 132 | global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1); |
2645 | 135 | 133 | ||
2646 | 136 | ExtensionSystem.init(); | 134 | ExtensionSystem.init(); |
2647 | @@ -496,9 +494,9 @@ | |||
2648 | 496 | function notifyError(msg, details) { | 494 | function notifyError(msg, details) { |
2649 | 497 | // Also print to stderr so it's logged somewhere | 495 | // Also print to stderr so it's logged somewhere |
2650 | 498 | if (details) | 496 | if (details) |
2652 | 499 | log("error: " + msg + ": " + details); | 497 | log('error: ' + msg + ': ' + details); |
2653 | 500 | else | 498 | else |
2655 | 501 | log("error: " + msg) | 499 | log('error: ' + msg); |
2656 | 502 | 500 | ||
2657 | 503 | notify(msg, details); | 501 | notify(msg, details); |
2658 | 504 | } | 502 | } |
2659 | 505 | 503 | ||
2660 | === modified file 'js/ui/messageTray.js' | |||
2661 | --- js/ui/messageTray.js 2011-09-28 06:48:58 +0000 | |||
2662 | +++ js/ui/messageTray.js 2012-01-18 14:13:28 +0000 | |||
2663 | @@ -1,4 +1,4 @@ | |||
2665 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2666 | 2 | 2 | ||
2667 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2668 | 4 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
2669 | @@ -252,7 +252,8 @@ | |||
2670 | 252 | this._prevFocusedWindow = global.display.focus_window; | 252 | this._prevFocusedWindow = global.display.focus_window; |
2671 | 253 | this._prevKeyFocusActor = global.stage.get_key_focus(); | 253 | this._prevKeyFocusActor = global.stage.get_key_focus(); |
2672 | 254 | 254 | ||
2674 | 255 | if (!Main.overview.visible) | 255 | if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE || |
2675 | 256 | global.stage_input_mode == Shell.StageInputMode.NORMAL) | ||
2676 | 256 | global.set_stage_input_mode(Shell.StageInputMode.FOCUSED); | 257 | global.set_stage_input_mode(Shell.StageInputMode.FOCUSED); |
2677 | 257 | 258 | ||
2678 | 258 | // Use captured-event to notice clicks outside the focused actor | 259 | // Use captured-event to notice clicks outside the focused actor |
2679 | @@ -702,6 +703,7 @@ | |||
2680 | 702 | this._imageBin.opacity = 230; | 703 | this._imageBin.opacity = 230; |
2681 | 703 | this._table.add_style_class_name('multi-line-notification'); | 704 | this._table.add_style_class_name('multi-line-notification'); |
2682 | 704 | this._table.add_style_class_name('notification-with-image'); | 705 | this._table.add_style_class_name('notification-with-image'); |
2683 | 706 | this._addBannerBody(); | ||
2684 | 705 | this._updateLastColumnSettings(); | 707 | this._updateLastColumnSettings(); |
2685 | 706 | this._table.add(this._imageBin, { row: 1, | 708 | this._table.add(this._imageBin, { row: 1, |
2686 | 707 | col: 1, | 709 | col: 1, |
2687 | @@ -1585,7 +1587,7 @@ | |||
2688 | 1585 | 1587 | ||
2689 | 1586 | summaryItemToRemove.actor.destroy(); | 1588 | summaryItemToRemove.actor.destroy(); |
2690 | 1587 | 1589 | ||
2692 | 1588 | if (needUpdate); | 1590 | if (needUpdate) |
2693 | 1589 | this._updateState(); | 1591 | this._updateState(); |
2694 | 1590 | }, | 1592 | }, |
2695 | 1591 | 1593 | ||
2696 | 1592 | 1594 | ||
2697 | === modified file 'js/ui/modalDialog.js' | |||
2698 | --- js/ui/modalDialog.js 2011-09-21 16:26:15 +0000 | |||
2699 | +++ js/ui/modalDialog.js 2012-01-18 14:13:28 +0000 | |||
2700 | @@ -1,4 +1,4 @@ | |||
2702 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2703 | 2 | 2 | ||
2704 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2705 | 4 | const Gdk = imports.gi.Gdk; | 4 | const Gdk = imports.gi.Gdk; |
2706 | 5 | 5 | ||
2707 | === modified file 'js/ui/networkAgent.js' | |||
2708 | --- js/ui/networkAgent.js 2011-09-21 16:26:15 +0000 | |||
2709 | +++ js/ui/networkAgent.js 2012-01-18 14:13:28 +0000 | |||
2710 | @@ -1,5 +1,5 @@ | |||
2713 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2714 | 2 | * | 2 | /* |
2715 | 3 | * Copyright 2011 Giovanni Campagna <scampa.giovanni@gmail.com> | 3 | * Copyright 2011 Giovanni Campagna <scampa.giovanni@gmail.com> |
2716 | 4 | * | 4 | * |
2717 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
2718 | @@ -30,6 +30,7 @@ | |||
2719 | 30 | 30 | ||
2720 | 31 | const ModalDialog = imports.ui.modalDialog; | 31 | const ModalDialog = imports.ui.modalDialog; |
2721 | 32 | const PopupMenu = imports.ui.popupMenu; | 32 | const PopupMenu = imports.ui.popupMenu; |
2722 | 33 | const ShellEntry = imports.ui.shellEntry; | ||
2723 | 33 | 34 | ||
2724 | 34 | function NetworkSecretDialog() { | 35 | function NetworkSecretDialog() { |
2725 | 35 | this._init.apply(this, arguments); | 36 | this._init.apply(this, arguments); |
2726 | @@ -103,6 +104,8 @@ | |||
2727 | 103 | secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry', | 104 | secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry', |
2728 | 104 | text: secret.value, can_focus: reactive, | 105 | text: secret.value, can_focus: reactive, |
2729 | 105 | reactive: reactive }); | 106 | reactive: reactive }); |
2730 | 107 | ShellEntry.addContextMenu(secret.entry, | ||
2731 | 108 | { isPassword: secret.password }); | ||
2732 | 106 | 109 | ||
2733 | 107 | if (secret.validate) | 110 | if (secret.validate) |
2734 | 108 | secret.valid = secret.validate(secret); | 111 | secret.valid = secret.validate(secret); |
2735 | @@ -127,34 +130,14 @@ | |||
2736 | 127 | } else | 130 | } else |
2737 | 128 | secret.valid = true; | 131 | secret.valid = true; |
2738 | 129 | 132 | ||
2740 | 130 | secretTable.add(label, { row: pos, col: 0, x_align: St.Align.START, y_align: St.Align.START }); | 133 | secretTable.add(label, { row: pos, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START, y_align: St.Align.START }); |
2741 | 131 | secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END }); | 134 | secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END }); |
2742 | 132 | pos++; | 135 | pos++; |
2743 | 133 | 136 | ||
2745 | 134 | if (secret.password) { | 137 | if (secret.password) |
2746 | 135 | secret.entry.clutter_text.set_password_char('\u25cf'); | 138 | secret.entry.clutter_text.set_password_char('\u25cf'); |
2747 | 139 | } | ||
2748 | 136 | 140 | ||
2749 | 137 | // FIXME: need a real checkbox here | ||
2750 | 138 | let button = new St.Button({ button_mask: St.ButtonMask.ONE, | ||
2751 | 139 | can_focus: true }); | ||
2752 | 140 | let checkbox = new St.BoxLayout({ vertical: false, | ||
2753 | 141 | style_class: 'network-dialog-show-password-checkbox' | ||
2754 | 142 | }); | ||
2755 | 143 | let _switch = new PopupMenu.Switch(false); | ||
2756 | 144 | checkbox.add(_switch.actor); | ||
2757 | 145 | checkbox.add(new St.Label({ text: _("Show password") }), { expand: true }); | ||
2758 | 146 | button.connect('clicked', function() { | ||
2759 | 147 | _switch.toggle(); | ||
2760 | 148 | if (_switch.state) | ||
2761 | 149 | secret.entry.clutter_text.set_password_char(''); | ||
2762 | 150 | else | ||
2763 | 151 | secret.entry.clutter_text.set_password_char('\u25cf'); | ||
2764 | 152 | }); | ||
2765 | 153 | button.child = checkbox; | ||
2766 | 154 | secretTable.add(button, { row: pos, col: 1, x_expand: true, x_fill: true, y_fill: true }) | ||
2767 | 155 | pos++; | ||
2768 | 156 | } | ||
2769 | 157 | } | ||
2770 | 158 | messageBox.add(secretTable); | 141 | messageBox.add(secretTable); |
2771 | 159 | 142 | ||
2772 | 160 | this._okButton = { label: _("Connect"), | 143 | this._okButton = { label: _("Connect"), |
2773 | @@ -404,4 +387,4 @@ | |||
2774 | 404 | this._dialogs[requestId].close(global.get_current_time()); | 387 | this._dialogs[requestId].close(global.get_current_time()); |
2775 | 405 | this._dialogs[requestId].destroy(); | 388 | this._dialogs[requestId].destroy(); |
2776 | 406 | } | 389 | } |
2777 | 407 | }; | ||
2778 | 408 | \ No newline at end of file | 390 | \ No newline at end of file |
2779 | 391 | }; | ||
2780 | 409 | 392 | ||
2781 | === modified file 'js/ui/notificationDaemon.js' | |||
2782 | --- js/ui/notificationDaemon.js 2011-09-04 08:02:35 +0000 | |||
2783 | +++ js/ui/notificationDaemon.js 2012-01-18 14:13:28 +0000 | |||
2784 | @@ -1,4 +1,4 @@ | |||
2786 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2787 | 2 | 2 | ||
2788 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2789 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
2790 | @@ -109,6 +109,14 @@ | |||
2791 | 109 | _iconForNotificationData: function(icon, hints, size) { | 109 | _iconForNotificationData: function(icon, hints, size) { |
2792 | 110 | let textureCache = St.TextureCache.get_default(); | 110 | let textureCache = St.TextureCache.get_default(); |
2793 | 111 | 111 | ||
2794 | 112 | // If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon | ||
2795 | 113 | // and don't show a large image. There are currently many applications that use | ||
2796 | 114 | // notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets | ||
2797 | 115 | // the 'image-data' hint. These applications don't typically pass in 'app_icon' | ||
2798 | 116 | // argument to Notify() and actually expect the pixbuf to be shown as an icon. | ||
2799 | 117 | // So the logic here does the right thing for this case. If both an icon and either | ||
2800 | 118 | // one of 'image-data' or 'image-path' are specified, we show both an icon and | ||
2801 | 119 | // a large image. | ||
2802 | 112 | if (icon) { | 120 | if (icon) { |
2803 | 113 | if (icon.substr(0, 7) == 'file://') | 121 | if (icon.substr(0, 7) == 'file://') |
2804 | 114 | return textureCache.load_uri_async(icon, size, size); | 122 | return textureCache.load_uri_async(icon, size, size); |
2805 | @@ -119,6 +127,12 @@ | |||
2806 | 119 | return new St.Icon({ icon_name: icon, | 127 | return new St.Icon({ icon_name: icon, |
2807 | 120 | icon_type: St.IconType.FULLCOLOR, | 128 | icon_type: St.IconType.FULLCOLOR, |
2808 | 121 | icon_size: size }); | 129 | icon_size: size }); |
2809 | 130 | } else if (hints['image-data']) { | ||
2810 | 131 | let [width, height, rowStride, hasAlpha, | ||
2811 | 132 | bitsPerSample, nChannels, data] = hints['image-data']; | ||
2812 | 133 | return textureCache.load_from_raw(data, hasAlpha, width, height, rowStride, size); | ||
2813 | 134 | } else if (hints['image-path']) { | ||
2814 | 135 | return textureCache.load_uri_async(GLib.filename_to_uri(hints['image-path'], null), size, size); | ||
2815 | 122 | } else { | 136 | } else { |
2816 | 123 | let stockIcon; | 137 | let stockIcon; |
2817 | 124 | switch (hints.urgency) { | 138 | switch (hints.urgency) { |
2818 | @@ -330,7 +344,8 @@ | |||
2819 | 330 | clear: true }); | 344 | clear: true }); |
2820 | 331 | } | 345 | } |
2821 | 332 | 346 | ||
2823 | 333 | if (hints['image-data'] || hints['image-path']) { | 347 | // We only display a large image if an icon is also specified. |
2824 | 348 | if (icon && (hints['image-data'] || hints['image-path'])) { | ||
2825 | 334 | let image = null; | 349 | let image = null; |
2826 | 335 | if (hints['image-data']) { | 350 | if (hints['image-data']) { |
2827 | 336 | let [width, height, rowStride, hasAlpha, | 351 | let [width, height, rowStride, hasAlpha, |
2828 | 337 | 352 | ||
2829 | === modified file 'js/ui/overview.js' | |||
2830 | --- js/ui/overview.js 2011-09-21 16:26:15 +0000 | |||
2831 | +++ js/ui/overview.js 2012-01-18 14:13:28 +0000 | |||
2832 | @@ -1,4 +1,4 @@ | |||
2834 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2835 | 2 | 2 | ||
2836 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2837 | 4 | const Gtk = imports.gi.Gtk; | 4 | const Gtk = imports.gi.Gtk; |
2838 | 5 | 5 | ||
2839 | === modified file 'js/ui/panel.js' | |||
2840 | --- js/ui/panel.js 2011-09-21 16:26:15 +0000 | |||
2841 | +++ js/ui/panel.js 2012-01-18 14:13:28 +0000 | |||
2842 | @@ -1,4 +1,4 @@ | |||
2844 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2845 | 2 | 2 | ||
2846 | 3 | const Cairo = imports.cairo; | 3 | const Cairo = imports.cairo; |
2847 | 4 | const Clutter = imports.gi.Clutter; | 4 | const Clutter = imports.gi.Clutter; |
2848 | 5 | 5 | ||
2849 | === modified file 'js/ui/panelMenu.js' | |||
2850 | --- js/ui/panelMenu.js 2011-09-21 16:26:15 +0000 | |||
2851 | +++ js/ui/panelMenu.js 2012-01-18 14:13:28 +0000 | |||
2852 | @@ -1,4 +1,4 @@ | |||
2854 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2855 | 2 | 2 | ||
2856 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2857 | 4 | const Gtk = imports.gi.Gtk; | 4 | const Gtk = imports.gi.Gtk; |
2858 | 5 | 5 | ||
2859 | === modified file 'js/ui/placeDisplay.js' | |||
2860 | --- js/ui/placeDisplay.js 2011-09-04 08:02:35 +0000 | |||
2861 | +++ js/ui/placeDisplay.js 2012-01-18 14:13:28 +0000 | |||
2862 | @@ -1,4 +1,4 @@ | |||
2864 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2865 | 2 | 2 | ||
2866 | 3 | const GLib = imports.gi.GLib; | 3 | const GLib = imports.gi.GLib; |
2867 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
2868 | 5 | 5 | ||
2869 | === modified file 'js/ui/polkitAuthenticationAgent.js' | |||
2870 | --- js/ui/polkitAuthenticationAgent.js 2011-09-21 16:26:15 +0000 | |||
2871 | +++ js/ui/polkitAuthenticationAgent.js 2012-01-18 14:13:28 +0000 | |||
2872 | @@ -1,5 +1,5 @@ | |||
2875 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2876 | 2 | * | 2 | /* |
2877 | 3 | * Copyright 2010 Red Hat, Inc | 3 | * Copyright 2010 Red Hat, Inc |
2878 | 4 | * | 4 | * |
2879 | 5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
2880 | @@ -33,6 +33,7 @@ | |||
2881 | 33 | const PolkitAgent = imports.gi.PolkitAgent; | 33 | const PolkitAgent = imports.gi.PolkitAgent; |
2882 | 34 | 34 | ||
2883 | 35 | const ModalDialog = imports.ui.modalDialog; | 35 | const ModalDialog = imports.ui.modalDialog; |
2884 | 36 | const ShellEntry = imports.ui.shellEntry; | ||
2885 | 36 | 37 | ||
2886 | 37 | function AuthenticationDialog(actionId, message, cookie, userNames) { | 38 | function AuthenticationDialog(actionId, message, cookie, userNames) { |
2887 | 38 | this._init(actionId, message, cookie, userNames); | 39 | this._init(actionId, message, cookie, userNames); |
2888 | @@ -139,6 +140,7 @@ | |||
2889 | 139 | this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry', | 140 | this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry', |
2890 | 140 | text: "", | 141 | text: "", |
2891 | 141 | can_focus: true}); | 142 | can_focus: true}); |
2892 | 143 | ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true }); | ||
2893 | 142 | this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate)); | 144 | this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate)); |
2894 | 143 | this._passwordBox.add(this._passwordEntry, | 145 | this._passwordBox.add(this._passwordEntry, |
2895 | 144 | {expand: true }); | 146 | {expand: true }); |
2896 | 145 | 147 | ||
2897 | === modified file 'js/ui/popupMenu.js' | |||
2898 | --- js/ui/popupMenu.js 2011-09-28 00:41:45 +0000 | |||
2899 | +++ js/ui/popupMenu.js 2012-01-18 14:13:28 +0000 | |||
2900 | @@ -1,4 +1,4 @@ | |||
2902 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2903 | 2 | 2 | ||
2904 | 3 | const Cairo = imports.cairo; | 3 | const Cairo = imports.cairo; |
2905 | 4 | const Clutter = imports.gi.Clutter; | 4 | const Clutter = imports.gi.Clutter; |
2906 | @@ -1142,10 +1142,10 @@ | |||
2907 | 1142 | PopupMenu.prototype = { | 1142 | PopupMenu.prototype = { |
2908 | 1143 | __proto__: PopupMenuBase.prototype, | 1143 | __proto__: PopupMenuBase.prototype, |
2909 | 1144 | 1144 | ||
2911 | 1145 | _init: function(sourceActor, alignment, arrowSide) { | 1145 | _init: function(sourceActor, arrowAlignment, arrowSide) { |
2912 | 1146 | PopupMenuBase.prototype._init.call (this, sourceActor, 'popup-menu-content'); | 1146 | PopupMenuBase.prototype._init.call (this, sourceActor, 'popup-menu-content'); |
2913 | 1147 | 1147 | ||
2915 | 1148 | this._alignment = alignment; | 1148 | this._arrowAlignment = arrowAlignment; |
2916 | 1149 | this._arrowSide = arrowSide; | 1149 | this._arrowSide = arrowSide; |
2917 | 1150 | 1150 | ||
2918 | 1151 | this._boxPointer = new BoxPointer.BoxPointer(arrowSide, | 1151 | this._boxPointer = new BoxPointer.BoxPointer(arrowSide, |
2919 | @@ -1198,13 +1198,17 @@ | |||
2920 | 1198 | this._boxPointer.setArrowOrigin(origin); | 1198 | this._boxPointer.setArrowOrigin(origin); |
2921 | 1199 | }, | 1199 | }, |
2922 | 1200 | 1200 | ||
2923 | 1201 | setSourceAlignment: function(alignment) { | ||
2924 | 1202 | this._boxPointer.setSourceAlignment(alignment); | ||
2925 | 1203 | }, | ||
2926 | 1204 | |||
2927 | 1201 | open: function(animate) { | 1205 | open: function(animate) { |
2928 | 1202 | if (this.isOpen) | 1206 | if (this.isOpen) |
2929 | 1203 | return; | 1207 | return; |
2930 | 1204 | 1208 | ||
2931 | 1205 | this.isOpen = true; | 1209 | this.isOpen = true; |
2932 | 1206 | 1210 | ||
2934 | 1207 | this._boxPointer.setPosition(this.sourceActor, this._alignment); | 1211 | this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment); |
2935 | 1208 | this._boxPointer.show(animate); | 1212 | this._boxPointer.show(animate); |
2936 | 1209 | 1213 | ||
2937 | 1210 | this.actor.raise_top(); | 1214 | this.actor.raise_top(); |
2938 | 1211 | 1215 | ||
2939 | === modified file 'js/ui/runDialog.js' | |||
2940 | --- js/ui/runDialog.js 2011-08-24 02:33:44 +0000 | |||
2941 | +++ js/ui/runDialog.js 2012-01-18 14:13:28 +0000 | |||
2942 | @@ -1,4 +1,4 @@ | |||
2944 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2945 | 2 | 2 | ||
2946 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2947 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
2948 | @@ -12,6 +12,7 @@ | |||
2949 | 12 | const FileUtils = imports.misc.fileUtils; | 12 | const FileUtils = imports.misc.fileUtils; |
2950 | 13 | const Main = imports.ui.main; | 13 | const Main = imports.ui.main; |
2951 | 14 | const ModalDialog = imports.ui.modalDialog; | 14 | const ModalDialog = imports.ui.modalDialog; |
2952 | 15 | const ShellEntry = imports.ui.shellEntry; | ||
2953 | 15 | const Tweener = imports.ui.tweener; | 16 | const Tweener = imports.ui.tweener; |
2954 | 16 | const Util = imports.misc.util; | 17 | const Util = imports.misc.util; |
2955 | 17 | const History = imports.misc.history; | 18 | const History = imports.misc.history; |
2956 | @@ -210,6 +211,7 @@ | |||
2957 | 210 | this.contentLayout.add(label, { y_align: St.Align.START }); | 211 | this.contentLayout.add(label, { y_align: St.Align.START }); |
2958 | 211 | 212 | ||
2959 | 212 | let entry = new St.Entry({ style_class: 'run-dialog-entry' }); | 213 | let entry = new St.Entry({ style_class: 'run-dialog-entry' }); |
2960 | 214 | ShellEntry.addContextMenu(entry); | ||
2961 | 213 | 215 | ||
2962 | 214 | this._entryText = entry.clutter_text; | 216 | this._entryText = entry.clutter_text; |
2963 | 215 | this.contentLayout.add(entry, { y_align: St.Align.START }); | 217 | this.contentLayout.add(entry, { y_align: St.Align.START }); |
2964 | 216 | 218 | ||
2965 | === modified file 'js/ui/scripting.js' | |||
2966 | --- js/ui/scripting.js 2011-08-24 02:33:44 +0000 | |||
2967 | +++ js/ui/scripting.js 2012-01-18 14:13:28 +0000 | |||
2968 | @@ -1,4 +1,4 @@ | |||
2970 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2971 | 2 | 2 | ||
2972 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
2973 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
2974 | 5 | 5 | ||
2975 | === modified file 'js/ui/search.js' | |||
2976 | --- js/ui/search.js 2011-09-21 16:26:15 +0000 | |||
2977 | +++ js/ui/search.js 2012-01-18 14:13:28 +0000 | |||
2978 | @@ -1,4 +1,4 @@ | |||
2980 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2981 | 2 | 2 | ||
2982 | 3 | const Gio = imports.gi.Gio; | 3 | const Gio = imports.gi.Gio; |
2983 | 4 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
2984 | 5 | 5 | ||
2985 | === modified file 'js/ui/searchDisplay.js' | |||
2986 | --- js/ui/searchDisplay.js 2011-09-21 16:26:15 +0000 | |||
2987 | +++ js/ui/searchDisplay.js 2012-01-18 14:13:28 +0000 | |||
2988 | @@ -1,4 +1,4 @@ | |||
2990 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
2991 | 2 | 2 | ||
2992 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
2993 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
2994 | 5 | 5 | ||
2995 | === modified file 'js/ui/shellDBus.js' | |||
2996 | --- js/ui/shellDBus.js 2011-09-21 16:26:15 +0000 | |||
2997 | +++ js/ui/shellDBus.js 2012-01-18 14:13:28 +0000 | |||
2998 | @@ -1,4 +1,4 @@ | |||
3000 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3001 | 2 | 2 | ||
3002 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
3003 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3004 | 5 | 5 | ||
3005 | === added file 'js/ui/shellEntry.js' | |||
3006 | --- js/ui/shellEntry.js 1970-01-01 00:00:00 +0000 | |||
3007 | +++ js/ui/shellEntry.js 2012-01-18 14:13:28 +0000 | |||
3008 | @@ -0,0 +1,173 @@ | |||
3009 | 1 | const Clutter = imports.gi.Clutter; | ||
3010 | 2 | const Gtk = imports.gi.Gtk; | ||
3011 | 3 | const Lang = imports.lang; | ||
3012 | 4 | const St = imports.gi.St; | ||
3013 | 5 | |||
3014 | 6 | const Main = imports.ui.main; | ||
3015 | 7 | const Params = imports.misc.params; | ||
3016 | 8 | const PopupMenu = imports.ui.popupMenu; | ||
3017 | 9 | |||
3018 | 10 | |||
3019 | 11 | function _EntryMenu(entry, params) { | ||
3020 | 12 | this._init(entry, params); | ||
3021 | 13 | }; | ||
3022 | 14 | |||
3023 | 15 | _EntryMenu.prototype = { | ||
3024 | 16 | __proto__: PopupMenu.PopupMenu.prototype, | ||
3025 | 17 | |||
3026 | 18 | _init: function(entry, params) { | ||
3027 | 19 | params = Params.parse (params, { isPassword: false }); | ||
3028 | 20 | |||
3029 | 21 | PopupMenu.PopupMenu.prototype._init.call(this, entry, 0, St.Side.TOP); | ||
3030 | 22 | |||
3031 | 23 | this.actor.add_style_class_name('entry-context-menu'); | ||
3032 | 24 | |||
3033 | 25 | this._entry = entry; | ||
3034 | 26 | this._clipboard = St.Clipboard.get_default(); | ||
3035 | 27 | |||
3036 | 28 | // Populate menu | ||
3037 | 29 | let item; | ||
3038 | 30 | item = new PopupMenu.PopupMenuItem(_("Copy")); | ||
3039 | 31 | item.connect('activate', Lang.bind(this, this._onCopyActivated)); | ||
3040 | 32 | this.addMenuItem(item); | ||
3041 | 33 | this._copyItem = item; | ||
3042 | 34 | |||
3043 | 35 | item = new PopupMenu.PopupMenuItem(_("Paste")); | ||
3044 | 36 | item.connect('activate', Lang.bind(this, this._onPasteActivated)); | ||
3045 | 37 | this.addMenuItem(item); | ||
3046 | 38 | this._pasteItem = item; | ||
3047 | 39 | |||
3048 | 40 | this._passwordItem = null; | ||
3049 | 41 | if (params.isPassword) { | ||
3050 | 42 | item = new PopupMenu.PopupMenuItem(''); | ||
3051 | 43 | item.connect('activate', Lang.bind(this, | ||
3052 | 44 | this._onPasswordActivated)); | ||
3053 | 45 | this.addMenuItem(item); | ||
3054 | 46 | this._passwordItem = item; | ||
3055 | 47 | } | ||
3056 | 48 | |||
3057 | 49 | Main.uiGroup.add_actor(this.actor); | ||
3058 | 50 | this.actor.hide(); | ||
3059 | 51 | }, | ||
3060 | 52 | |||
3061 | 53 | open: function() { | ||
3062 | 54 | this._updatePasteItem(); | ||
3063 | 55 | this._updateCopyItem(); | ||
3064 | 56 | if (this._passwordItem) | ||
3065 | 57 | this._updatePasswordItem(); | ||
3066 | 58 | |||
3067 | 59 | let direction = Gtk.DirectionType.TAB_FORWARD; | ||
3068 | 60 | if (!this.actor.navigate_focus(null, direction, false)) | ||
3069 | 61 | this.actor.grab_key_focus(); | ||
3070 | 62 | |||
3071 | 63 | PopupMenu.PopupMenu.prototype.open.call(this); | ||
3072 | 64 | }, | ||
3073 | 65 | |||
3074 | 66 | _updateCopyItem: function() { | ||
3075 | 67 | let selection = this._entry.clutter_text.get_selection(); | ||
3076 | 68 | this._copyItem.setSensitive(selection && selection != ''); | ||
3077 | 69 | }, | ||
3078 | 70 | |||
3079 | 71 | _updatePasteItem: function() { | ||
3080 | 72 | this._clipboard.get_text(Lang.bind(this, | ||
3081 | 73 | function(clipboard, text) { | ||
3082 | 74 | this._pasteItem.setSensitive(text && text != ''); | ||
3083 | 75 | })); | ||
3084 | 76 | }, | ||
3085 | 77 | |||
3086 | 78 | _updatePasswordItem: function() { | ||
3087 | 79 | let textHidden = (this._entry.clutter_text.password_char); | ||
3088 | 80 | if (textHidden) | ||
3089 | 81 | this._passwordItem.label.set_text(_("Show Text")); | ||
3090 | 82 | else | ||
3091 | 83 | this._passwordItem.label.set_text(_("Hide Text")); | ||
3092 | 84 | }, | ||
3093 | 85 | |||
3094 | 86 | _onCopyActivated: function() { | ||
3095 | 87 | let selection = this._entry.clutter_text.get_selection(); | ||
3096 | 88 | this._clipboard.set_text(selection); | ||
3097 | 89 | }, | ||
3098 | 90 | |||
3099 | 91 | _onPasteActivated: function() { | ||
3100 | 92 | this._clipboard.get_text(Lang.bind(this, | ||
3101 | 93 | function(clipboard, text) { | ||
3102 | 94 | if (!text) | ||
3103 | 95 | return; | ||
3104 | 96 | this._entry.clutter_text.delete_selection(); | ||
3105 | 97 | let pos = this._entry.clutter_text.get_cursor_position(); | ||
3106 | 98 | this._entry.clutter_text.insert_text(text, pos); | ||
3107 | 99 | })); | ||
3108 | 100 | }, | ||
3109 | 101 | |||
3110 | 102 | _onPasswordActivated: function() { | ||
3111 | 103 | let visible = !!(this._entry.clutter_text.password_char); | ||
3112 | 104 | this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf'); | ||
3113 | 105 | } | ||
3114 | 106 | }; | ||
3115 | 107 | |||
3116 | 108 | |||
3117 | 109 | function _setMenuAlignment(entry, stageX) { | ||
3118 | 110 | let [success, entryX, entryY] = entry.transform_stage_point(stageX, 0); | ||
3119 | 111 | if (success) | ||
3120 | 112 | entry._menu.setSourceAlignment(entryX / entry.width); | ||
3121 | 113 | }; | ||
3122 | 114 | |||
3123 | 115 | function _onClicked(action, actor) { | ||
3124 | 116 | let entry = actor._menu ? actor : actor.get_parent(); | ||
3125 | 117 | |||
3126 | 118 | if (entry._menu.isOpen) { | ||
3127 | 119 | entry._menu.close(); | ||
3128 | 120 | } else if (action.get_button() == 3) { | ||
3129 | 121 | let [stageX, stageY] = action.get_coords(); | ||
3130 | 122 | _setMenuAlignment(entry, stageX); | ||
3131 | 123 | entry._menu.open(); | ||
3132 | 124 | } | ||
3133 | 125 | }; | ||
3134 | 126 | |||
3135 | 127 | function _onLongPress(action, actor, state) { | ||
3136 | 128 | let entry = actor._menu ? actor : actor.get_parent(); | ||
3137 | 129 | |||
3138 | 130 | if (state == Clutter.LongPressState.QUERY) | ||
3139 | 131 | return action.get_button() == 1 && !entry._menu.isOpen; | ||
3140 | 132 | |||
3141 | 133 | if (state == Clutter.LongPressState.ACTIVATE) { | ||
3142 | 134 | let [stageX, stageY] = action.get_coords(); | ||
3143 | 135 | _setMenuAlignment(entry, stageX); | ||
3144 | 136 | entry._menu.open(); | ||
3145 | 137 | } | ||
3146 | 138 | return false; | ||
3147 | 139 | }; | ||
3148 | 140 | |||
3149 | 141 | function _onPopup(actor) { | ||
3150 | 142 | let entry = actor._menu ? actor : actor.get_parent(); | ||
3151 | 143 | let [success, textX, textY, lineHeight] = entry.clutter_text.position_to_coords(-1); | ||
3152 | 144 | if (success) | ||
3153 | 145 | entry._menu.setSourceAlignment(textX / entry.width); | ||
3154 | 146 | entry._menu.open(); | ||
3155 | 147 | }; | ||
3156 | 148 | |||
3157 | 149 | function addContextMenu(entry, params) { | ||
3158 | 150 | if (entry._menu) | ||
3159 | 151 | return; | ||
3160 | 152 | |||
3161 | 153 | entry._menu = new _EntryMenu(entry, params); | ||
3162 | 154 | entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }); | ||
3163 | 155 | entry._menuManager.addMenu(entry._menu); | ||
3164 | 156 | |||
3165 | 157 | let clickAction; | ||
3166 | 158 | |||
3167 | 159 | // Add a click action to both the entry and its clutter_text; the former | ||
3168 | 160 | // so padding is included in the clickable area, the latter because the | ||
3169 | 161 | // event processing of ClutterText prevents event-bubbling. | ||
3170 | 162 | clickAction = new Clutter.ClickAction(); | ||
3171 | 163 | clickAction.connect('clicked', _onClicked); | ||
3172 | 164 | clickAction.connect('long-press', _onLongPress); | ||
3173 | 165 | entry.clutter_text.add_action(clickAction); | ||
3174 | 166 | |||
3175 | 167 | clickAction = new Clutter.ClickAction(); | ||
3176 | 168 | clickAction.connect('clicked', _onClicked); | ||
3177 | 169 | clickAction.connect('long-press', _onLongPress); | ||
3178 | 170 | entry.add_action(clickAction); | ||
3179 | 171 | |||
3180 | 172 | entry.connect('popup-menu', _onPopup); | ||
3181 | 173 | } | ||
3182 | 0 | 174 | ||
3183 | === modified file 'js/ui/shellMountOperation.js' | |||
3184 | --- js/ui/shellMountOperation.js 2011-09-04 08:02:35 +0000 | |||
3185 | +++ js/ui/shellMountOperation.js 2012-01-18 14:13:28 +0000 | |||
3186 | @@ -1,4 +1,4 @@ | |||
3188 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3189 | 2 | 2 | ||
3190 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
3191 | 4 | const Signals = imports.signals; | 4 | const Signals = imports.signals; |
3192 | 5 | 5 | ||
3193 | === modified file 'js/ui/status/accessibility.js' | |||
3194 | --- js/ui/status/accessibility.js 2011-09-21 16:26:15 +0000 | |||
3195 | +++ js/ui/status/accessibility.js 2012-01-18 14:13:28 +0000 | |||
3196 | @@ -1,4 +1,4 @@ | |||
3198 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3199 | 2 | 2 | ||
3200 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
3201 | 4 | const GConf = imports.gi.GConf; | 4 | const GConf = imports.gi.GConf; |
3202 | 5 | 5 | ||
3203 | === modified file 'js/ui/status/bluetooth.js' | |||
3204 | --- js/ui/status/bluetooth.js 2011-09-04 08:02:35 +0000 | |||
3205 | +++ js/ui/status/bluetooth.js 2012-01-18 14:13:28 +0000 | |||
3206 | @@ -1,4 +1,4 @@ | |||
3208 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3209 | 2 | 2 | ||
3210 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3211 | 4 | const Gdk = imports.gi.Gdk; | 4 | const Gdk = imports.gi.Gdk; |
3212 | @@ -205,7 +205,8 @@ | |||
3213 | 205 | _buildDeviceSubMenu: function(item, device) { | 205 | _buildDeviceSubMenu: function(item, device) { |
3214 | 206 | if (device.can_connect) { | 206 | if (device.can_connect) { |
3215 | 207 | item._connected = device.connected; | 207 | item._connected = device.connected; |
3217 | 208 | item._connectedMenuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); | 208 | let menuitem = new PopupMenu.PopupSwitchMenuItem(_("Connection"), device.connected); |
3218 | 209 | item._connectedMenuitem = menuitem; | ||
3219 | 209 | item._connectedMenuitem.connect('toggled', Lang.bind(this, function() { | 210 | item._connectedMenuitem.connect('toggled', Lang.bind(this, function() { |
3220 | 210 | if (item._connected > ConnectionState.CONNECTED) { | 211 | if (item._connected > ConnectionState.CONNECTED) { |
3221 | 211 | // operation already in progress, revert | 212 | // operation already in progress, revert |
3222 | 212 | 213 | ||
3223 | === modified file 'js/ui/status/keyboard.js' | |||
3224 | --- js/ui/status/keyboard.js 2011-09-21 16:26:15 +0000 | |||
3225 | +++ js/ui/status/keyboard.js 2012-01-18 14:13:28 +0000 | |||
3226 | @@ -1,4 +1,4 @@ | |||
3228 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3229 | 2 | 2 | ||
3230 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3231 | 4 | const GdkPixbuf = imports.gi.GdkPixbuf; | 4 | const GdkPixbuf = imports.gi.GdkPixbuf; |
3232 | 5 | 5 | ||
3233 | === modified file 'js/ui/status/network.js' | |||
3234 | --- js/ui/status/network.js 2011-09-21 16:26:15 +0000 | |||
3235 | +++ js/ui/status/network.js 2012-01-18 14:13:28 +0000 | |||
3236 | @@ -1,4 +1,4 @@ | |||
3238 | 1 | // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3239 | 2 | const ByteArray = imports.byteArray; | 2 | const ByteArray = imports.byteArray; |
3240 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
3241 | 4 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
3242 | 5 | 5 | ||
3243 | === modified file 'js/ui/status/power.js' | |||
3244 | --- js/ui/status/power.js 2011-09-22 08:50:45 +0000 | |||
3245 | +++ js/ui/status/power.js 2012-01-18 14:13:28 +0000 | |||
3246 | @@ -1,4 +1,4 @@ | |||
3248 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3249 | 2 | 2 | ||
3250 | 3 | const Gio = imports.gi.Gio; | 3 | const Gio = imports.gi.Gio; |
3251 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
3252 | @@ -43,8 +43,8 @@ | |||
3253 | 43 | const PowerManagerInterface = { | 43 | const PowerManagerInterface = { |
3254 | 44 | name: 'org.gnome.SettingsDaemon.Power', | 44 | name: 'org.gnome.SettingsDaemon.Power', |
3255 | 45 | methods: [ | 45 | methods: [ |
3258 | 46 | { name: 'GetDevices', inSignature: '', outSignature: 'a(susbut)' }, | 46 | { name: 'GetDevices', inSignature: '', outSignature: 'a(susdut)' }, |
3259 | 47 | { name: 'GetPrimaryDevice', inSignature: '', outSignature: '(susbut)' }, | 47 | { name: 'GetPrimaryDevice', inSignature: '', outSignature: '(susdut)' }, |
3260 | 48 | ], | 48 | ], |
3261 | 49 | signals: [ | 49 | signals: [ |
3262 | 50 | { name: 'Changed', inSignature: '' }, | 50 | { name: 'Changed', inSignature: '' }, |
3263 | @@ -155,7 +155,7 @@ | |||
3264 | 155 | _devicesChanged: function() { | 155 | _devicesChanged: function() { |
3265 | 156 | this._proxy.GetRemote('Icon', Lang.bind(this, function(icon, error) { | 156 | this._proxy.GetRemote('Icon', Lang.bind(this, function(icon, error) { |
3266 | 157 | if (icon) { | 157 | if (icon) { |
3268 | 158 | let gicon = Shell.util_icon_from_string (icon); | 158 | let gicon = Gio.icon_new_for_string(icon); |
3269 | 159 | this.setGIcon(gicon); | 159 | this.setGIcon(gicon); |
3270 | 160 | this.actor.show(); | 160 | this.actor.show(); |
3271 | 161 | } else { | 161 | } else { |
3272 | @@ -183,7 +183,7 @@ | |||
3273 | 183 | this._box = new St.BoxLayout({ style_class: 'popup-device-menu-item' }); | 183 | this._box = new St.BoxLayout({ style_class: 'popup-device-menu-item' }); |
3274 | 184 | this._label = new St.Label({ text: this._deviceTypeToString(device_type) }); | 184 | this._label = new St.Label({ text: this._deviceTypeToString(device_type) }); |
3275 | 185 | 185 | ||
3277 | 186 | this._icon = new St.Icon({ gicon: Shell.util_icon_from_string(icon), | 186 | this._icon = new St.Icon({ gicon: Gio.icon_new_for_string(icon), |
3278 | 187 | icon_type: St.IconType.SYMBOLIC, | 187 | icon_type: St.IconType.SYMBOLIC, |
3279 | 188 | style_class: 'popup-menu-icon' }); | 188 | style_class: 'popup-menu-icon' }); |
3280 | 189 | 189 | ||
3281 | 190 | 190 | ||
3282 | === modified file 'js/ui/status/volume.js' | |||
3283 | --- js/ui/status/volume.js 2011-09-21 16:26:15 +0000 | |||
3284 | +++ js/ui/status/volume.js 2012-01-18 14:13:28 +0000 | |||
3285 | @@ -1,4 +1,4 @@ | |||
3287 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3288 | 2 | 2 | ||
3289 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3290 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
3291 | 5 | 5 | ||
3292 | === modified file 'js/ui/statusIconDispatcher.js' | |||
3293 | --- js/ui/statusIconDispatcher.js 2011-04-11 21:03:31 +0000 | |||
3294 | +++ js/ui/statusIconDispatcher.js 2012-01-18 14:13:28 +0000 | |||
3295 | @@ -1,4 +1,4 @@ | |||
3297 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3298 | 2 | 2 | ||
3299 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
3300 | 4 | const Shell = imports.gi.Shell; | 4 | const Shell = imports.gi.Shell; |
3301 | 5 | 5 | ||
3302 | === modified file 'js/ui/telepathyClient.js' | |||
3303 | --- js/ui/telepathyClient.js 2011-09-28 00:41:45 +0000 | |||
3304 | +++ js/ui/telepathyClient.js 2012-01-18 14:13:28 +0000 | |||
3305 | @@ -1,4 +1,4 @@ | |||
3307 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3308 | 2 | 2 | ||
3309 | 3 | const DBus = imports.dbus; | 3 | const DBus = imports.dbus; |
3310 | 4 | const Gio = imports.gi.Gio; | 4 | const Gio = imports.gi.Gio; |
3311 | @@ -257,7 +257,7 @@ | |||
3312 | 257 | // FIXME: We don't have a 'chat room' icon (bgo #653737) use | 257 | // FIXME: We don't have a 'chat room' icon (bgo #653737) use |
3313 | 258 | // system-users for now as Empathy does. | 258 | // system-users for now as Empathy does. |
3314 | 259 | let source = new ApproverSource(dispatchOp, _("Invitation"), | 259 | let source = new ApproverSource(dispatchOp, _("Invitation"), |
3316 | 260 | Shell.util_icon_from_string('system-users')); | 260 | Gio.icon_new_for_string('system-users')); |
3317 | 261 | Main.messageTray.add(source); | 261 | Main.messageTray.add(source); |
3318 | 262 | 262 | ||
3319 | 263 | let notif = new RoomInviteNotification(source, dispatchOp, channel, contacts[0]); | 263 | let notif = new RoomInviteNotification(source, dispatchOp, channel, contacts[0]); |
3320 | @@ -325,8 +325,8 @@ | |||
3321 | 325 | 325 | ||
3322 | 326 | // We got the TpContact | 326 | // We got the TpContact |
3323 | 327 | let source = new ApproverSource(dispatchOp, _("Call"), isVideo ? | 327 | let source = new ApproverSource(dispatchOp, _("Call"), isVideo ? |
3326 | 328 | Shell.util_icon_from_string('camera-web') : | 328 | Gio.icon_new_for_string('camera-web') : |
3327 | 329 | Shell.util_icon_from_string('audio-input-microphone')); | 329 | Gio.icon_new_for_string('audio-input-microphone')); |
3328 | 330 | Main.messageTray.add(source); | 330 | Main.messageTray.add(source); |
3329 | 331 | 331 | ||
3330 | 332 | let notif = new AudioVideoNotification(source, dispatchOp, channel, contacts[0], isVideo); | 332 | let notif = new AudioVideoNotification(source, dispatchOp, channel, contacts[0], isVideo); |
3331 | @@ -539,9 +539,13 @@ | |||
3332 | 539 | 539 | ||
3333 | 540 | _updateAlias: function() { | 540 | _updateAlias: function() { |
3334 | 541 | let oldAlias = this.title; | 541 | let oldAlias = this.title; |
3338 | 542 | this.setTitle(this._contact.get_alias()); | 542 | let newAlias = this._contact.get_alias(); |
3339 | 543 | this._notification.appendAliasChange(oldAlias, this.title); | 543 | |
3340 | 544 | this.pushNotification(this._notification); | 544 | if (oldAlias == newAlias) |
3341 | 545 | return; | ||
3342 | 546 | |||
3343 | 547 | this.setTitle(newAlias); | ||
3344 | 548 | this._notification.appendAliasChange(oldAlias, newAlias); | ||
3345 | 545 | }, | 549 | }, |
3346 | 546 | 550 | ||
3347 | 547 | createNotificationIcon: function() { | 551 | createNotificationIcon: function() { |
3348 | @@ -570,7 +574,7 @@ | |||
3349 | 570 | open: function(notification) { | 574 | open: function(notification) { |
3350 | 571 | if (this._client.is_handling_channel(this._channel)) { | 575 | if (this._client.is_handling_channel(this._channel)) { |
3351 | 572 | // We are handling the channel, try to pass it to Empathy | 576 | // We are handling the channel, try to pass it to Empathy |
3353 | 573 | this._client.delegate_channels_async([this._channel], global.get_current_time(), "", null); | 577 | this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null); |
3354 | 574 | } | 578 | } |
3355 | 575 | else { | 579 | else { |
3356 | 576 | // We are not the handler, just ask to present the channel | 580 | // We are not the handler, just ask to present the channel |
3357 | @@ -1198,6 +1202,7 @@ | |||
3358 | 1198 | this.setResident(true); | 1202 | this.setResident(true); |
3359 | 1199 | 1203 | ||
3360 | 1200 | this.addButton('reject', _("Reject")); | 1204 | this.addButton('reject', _("Reject")); |
3361 | 1205 | /* translators: this is a button label (verb), not a noun */ | ||
3362 | 1201 | this.addButton('answer', _("Answer")); | 1206 | this.addButton('answer', _("Answer")); |
3363 | 1202 | 1207 | ||
3364 | 1203 | this.connect('action-invoked', Lang.bind(this, function(self, action) { | 1208 | this.connect('action-invoked', Lang.bind(this, function(self, action) { |
3365 | 1204 | 1209 | ||
3366 | === modified file 'js/ui/tweener.js' | |||
3367 | --- js/ui/tweener.js 2011-02-25 12:23:23 +0000 | |||
3368 | +++ js/ui/tweener.js 2012-01-18 14:13:28 +0000 | |||
3369 | @@ -1,4 +1,4 @@ | |||
3371 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3372 | 2 | 2 | ||
3373 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3374 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3375 | 5 | 5 | ||
3376 | === modified file 'js/ui/userMenu.js' | |||
3377 | --- js/ui/userMenu.js 2011-09-21 16:26:15 +0000 | |||
3378 | +++ js/ui/userMenu.js 2012-01-18 14:13:28 +0000 | |||
3379 | @@ -1,4 +1,4 @@ | |||
3381 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3382 | 2 | 2 | ||
3383 | 3 | const AccountsService = imports.gi.AccountsService; | 3 | const AccountsService = imports.gi.AccountsService; |
3384 | 4 | const DBus = imports.dbus; | 4 | const DBus = imports.dbus; |
3385 | @@ -158,22 +158,29 @@ | |||
3386 | 158 | Lang.bind(this, this._changeIMStatus)); | 158 | Lang.bind(this, this._changeIMStatus)); |
3387 | 159 | 159 | ||
3388 | 160 | this._presence = new GnomeSession.Presence(); | 160 | this._presence = new GnomeSession.Presence(); |
3389 | 161 | this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged)); | ||
3390 | 162 | this._presence.connect('StatusChanged', | 161 | this._presence.connect('StatusChanged', |
3391 | 163 | Lang.bind(this, this._sessionStatusChanged)); | 162 | Lang.bind(this, this._sessionStatusChanged)); |
3392 | 164 | 163 | ||
3393 | 164 | this._sessionPresenceRestored = false; | ||
3394 | 165 | this._imPresenceRestored = false; | ||
3395 | 165 | this._currentPresence = undefined; | 166 | this._currentPresence = undefined; |
3396 | 166 | this._previousPresence = undefined; | ||
3397 | 167 | 167 | ||
3398 | 168 | this._accountMgr = Tp.AccountManager.dup() | 168 | this._accountMgr = Tp.AccountManager.dup() |
3399 | 169 | this._accountMgr.connect('most-available-presence-changed', | 169 | this._accountMgr.connect('most-available-presence-changed', |
3400 | 170 | Lang.bind(this, this._IMStatusChanged)); | 170 | Lang.bind(this, this._IMStatusChanged)); |
3401 | 171 | this._accountMgr.prepare_async(null, Lang.bind(this, | 171 | this._accountMgr.prepare_async(null, Lang.bind(this, |
3402 | 172 | function(mgr) { | 172 | function(mgr) { |
3404 | 173 | let [presence, s, msg] = mgr.get_most_available_presence(); | 173 | let [presence, status, msg] = mgr.get_most_available_presence(); |
3405 | 174 | 174 | ||
3408 | 175 | this._previousPresence = presence; | 175 | let savedPresence = global.settings.get_int('saved-im-presence'); |
3409 | 176 | this._IMStatusChanged(mgr, presence, s, msg); | 176 | if (savedPresence == presence) { |
3410 | 177 | this._IMStatusChanged(mgr, presence, status, msg); | ||
3411 | 178 | } else { | ||
3412 | 179 | this._setComboboxPresence(savedPresence); | ||
3413 | 180 | status = this._statusForPresence(savedPresence); | ||
3414 | 181 | msg = msg ? msg : ''; | ||
3415 | 182 | mgr.set_all_requested_presences(savedPresence, status, msg); | ||
3416 | 183 | } | ||
3417 | 177 | })); | 184 | })); |
3418 | 178 | 185 | ||
3419 | 179 | this._userManager = AccountsService.UserManager.get_default(); | 186 | this._userManager = AccountsService.UserManager.get_default(); |
3420 | @@ -261,19 +268,35 @@ | |||
3421 | 261 | }, | 268 | }, |
3422 | 262 | 269 | ||
3423 | 263 | _IMStatusChanged: function(accountMgr, presence, status, message) { | 270 | _IMStatusChanged: function(accountMgr, presence, status, message) { |
3424 | 271 | if (!this._imPresenceRestored) | ||
3425 | 272 | this._imPresenceRestored = true; | ||
3426 | 273 | |||
3427 | 264 | if (presence == this._currentPresence) | 274 | if (presence == this._currentPresence) |
3428 | 265 | return; | 275 | return; |
3429 | 266 | 276 | ||
3430 | 267 | this._currentPresence = presence; | 277 | this._currentPresence = presence; |
3431 | 278 | this._setComboboxPresence(presence); | ||
3432 | 279 | |||
3433 | 280 | if (!this._sessionPresenceRestored) { | ||
3434 | 281 | this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged)); | ||
3435 | 282 | return; | ||
3436 | 283 | } | ||
3437 | 268 | 284 | ||
3438 | 269 | if (presence == Tp.ConnectionPresenceType.AVAILABLE) | 285 | if (presence == Tp.ConnectionPresenceType.AVAILABLE) |
3439 | 270 | this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE); | 286 | this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE); |
3440 | 271 | 287 | ||
3443 | 272 | if (!this._expectedPresence || presence != this._expectedPresence) | 288 | // We ignore the actual value of _expectedPresence and never safe |
3444 | 273 | this._previousPresence = presence; | 289 | // the first presence change after an "automatic" change, assuming |
3445 | 290 | // that it is the response to our request; this is to account for | ||
3446 | 291 | // mission control falling back to "similar" presences if an account | ||
3447 | 292 | // type does not implement the requested presence. | ||
3448 | 293 | if (!this._expectedPresence) | ||
3449 | 294 | global.settings.set_int('saved-im-presence', presence); | ||
3450 | 274 | else | 295 | else |
3451 | 275 | this._expectedPresence = undefined; | 296 | this._expectedPresence = undefined; |
3452 | 297 | }, | ||
3453 | 276 | 298 | ||
3454 | 299 | _setComboboxPresence: function(presence) { | ||
3455 | 277 | let activatedItem; | 300 | let activatedItem; |
3456 | 278 | 301 | ||
3457 | 279 | if (presence == Tp.ConnectionPresenceType.AVAILABLE) | 302 | if (presence == Tp.ConnectionPresenceType.AVAILABLE) |
3458 | @@ -310,13 +333,16 @@ | |||
3459 | 310 | return; | 333 | return; |
3460 | 311 | 334 | ||
3461 | 312 | status = this._statusForPresence(newPresence); | 335 | status = this._statusForPresence(newPresence); |
3463 | 313 | msg = msg ? msg : ""; | 336 | msg = msg ? msg : ''; |
3464 | 314 | this._accountMgr.set_all_requested_presences(newPresence, status, msg); | 337 | this._accountMgr.set_all_requested_presences(newPresence, status, msg); |
3465 | 315 | }, | 338 | }, |
3466 | 316 | 339 | ||
3467 | 317 | getIMPresenceForSessionStatus: function(sessionStatus) { | 340 | getIMPresenceForSessionStatus: function(sessionStatus) { |
3468 | 341 | // Restore the last user-set presence when coming back from | ||
3469 | 342 | // BUSY/IDLE (otherwise the last user-set presence matches | ||
3470 | 343 | // the current one) | ||
3471 | 318 | if (sessionStatus == GnomeSession.PresenceStatus.AVAILABLE) | 344 | if (sessionStatus == GnomeSession.PresenceStatus.AVAILABLE) |
3473 | 319 | return this._previousPresence; | 345 | return global.settings.get_int('saved-im-presence'); |
3474 | 320 | 346 | ||
3475 | 321 | if (sessionStatus == GnomeSession.PresenceStatus.BUSY) { | 347 | if (sessionStatus == GnomeSession.PresenceStatus.BUSY) { |
3476 | 322 | // Only change presence if the current one is "more present" than | 348 | // Only change presence if the current one is "more present" than |
3477 | @@ -337,6 +363,20 @@ | |||
3478 | 337 | }, | 363 | }, |
3479 | 338 | 364 | ||
3480 | 339 | _sessionStatusChanged: function(sessionPresence, sessionStatus) { | 365 | _sessionStatusChanged: function(sessionPresence, sessionStatus) { |
3481 | 366 | if (!this._imPresenceRestored) | ||
3482 | 367 | return; | ||
3483 | 368 | |||
3484 | 369 | if (!this._sessionPresenceRestored) { | ||
3485 | 370 | let savedStatus = global.settings.get_int('saved-session-presence'); | ||
3486 | 371 | if (sessionStatus != savedStatus) { | ||
3487 | 372 | this._presence.setStatus(savedStatus); | ||
3488 | 373 | return; | ||
3489 | 374 | } | ||
3490 | 375 | this._sessionPresenceRestored = true; | ||
3491 | 376 | } | ||
3492 | 377 | |||
3493 | 378 | global.settings.set_int('saved-session-presence', sessionStatus); | ||
3494 | 379 | |||
3495 | 340 | let [presence, s, msg] = this._accountMgr.get_most_available_presence(); | 380 | let [presence, s, msg] = this._accountMgr.get_most_available_presence(); |
3496 | 341 | let newPresence, status; | 381 | let newPresence, status; |
3497 | 342 | 382 | ||
3498 | @@ -346,7 +386,7 @@ | |||
3499 | 346 | return; | 386 | return; |
3500 | 347 | 387 | ||
3501 | 348 | status = this._statusForPresence(newPresence); | 388 | status = this._statusForPresence(newPresence); |
3503 | 349 | msg = msg ? msg : ""; | 389 | msg = msg ? msg : ''; |
3504 | 350 | 390 | ||
3505 | 351 | this._expectedPresence = newPresence; | 391 | this._expectedPresence = newPresence; |
3506 | 352 | this._accountMgr.set_all_requested_presences(newPresence, status, msg); | 392 | this._accountMgr.set_all_requested_presences(newPresence, status, msg); |
3507 | 353 | 393 | ||
3508 | === modified file 'js/ui/viewSelector.js' | |||
3509 | --- js/ui/viewSelector.js 2011-09-21 16:26:15 +0000 | |||
3510 | +++ js/ui/viewSelector.js 2012-01-18 14:13:28 +0000 | |||
3511 | @@ -1,4 +1,4 @@ | |||
3513 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3514 | 2 | 2 | ||
3515 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3516 | 4 | const Gtk = imports.gi.Gtk; | 4 | const Gtk = imports.gi.Gtk; |
3517 | @@ -12,6 +12,7 @@ | |||
3518 | 12 | const Main = imports.ui.main; | 12 | const Main = imports.ui.main; |
3519 | 13 | const Search = imports.ui.search; | 13 | const Search = imports.ui.search; |
3520 | 14 | const SearchDisplay = imports.ui.searchDisplay; | 14 | const SearchDisplay = imports.ui.searchDisplay; |
3521 | 15 | const ShellEntry = imports.ui.shellEntry; | ||
3522 | 15 | const Tweener = imports.ui.tweener; | 16 | const Tweener = imports.ui.tweener; |
3523 | 16 | 17 | ||
3524 | 17 | function BaseTab(titleActor, pageActor, name, a11yIcon) { | 18 | function BaseTab(titleActor, pageActor, name, a11yIcon) { |
3525 | @@ -120,6 +121,7 @@ | |||
3526 | 120 | hint_text: _("Type to search..."), | 121 | hint_text: _("Type to search..."), |
3527 | 121 | track_hover: true, | 122 | track_hover: true, |
3528 | 122 | can_focus: true }); | 123 | can_focus: true }); |
3529 | 124 | ShellEntry.addContextMenu(this._entry); | ||
3530 | 123 | this._text = this._entry.clutter_text; | 125 | this._text = this._entry.clutter_text; |
3531 | 124 | this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress)); | 126 | this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress)); |
3532 | 125 | 127 | ||
3533 | @@ -289,9 +291,11 @@ | |||
3534 | 289 | _onCapturedEvent: function(actor, event) { | 291 | _onCapturedEvent: function(actor, event) { |
3535 | 290 | if (event.type() == Clutter.EventType.BUTTON_PRESS) { | 292 | if (event.type() == Clutter.EventType.BUTTON_PRESS) { |
3536 | 291 | let source = event.get_source(); | 293 | let source = event.get_source(); |
3538 | 292 | if (source != this._text && this._text.text == '') { | 294 | if (source != this._text && this._text.text == '' && |
3539 | 295 | !Main.layoutManager.keyboardBox.contains(source)) { | ||
3540 | 293 | // the user clicked outside after activating the entry, but | 296 | // the user clicked outside after activating the entry, but |
3542 | 294 | // with no search term entered - cancel the search | 297 | // with no search term entered and no keyboard button pressed |
3543 | 298 | // - cancel the search | ||
3544 | 295 | this._reset(); | 299 | this._reset(); |
3545 | 296 | } | 300 | } |
3546 | 297 | } | 301 | } |
3547 | 298 | 302 | ||
3548 | === modified file 'js/ui/windowAttentionHandler.js' | |||
3549 | --- js/ui/windowAttentionHandler.js 2011-09-04 08:02:35 +0000 | |||
3550 | +++ js/ui/windowAttentionHandler.js 2012-01-18 14:13:28 +0000 | |||
3551 | @@ -1,4 +1,4 @@ | |||
3553 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3554 | 2 | 2 | ||
3555 | 3 | const Lang = imports.lang; | 3 | const Lang = imports.lang; |
3556 | 4 | const Shell = imports.gi.Shell; | 4 | const Shell = imports.gi.Shell; |
3557 | @@ -12,35 +12,10 @@ | |||
3558 | 12 | 12 | ||
3559 | 13 | WindowAttentionHandler.prototype = { | 13 | WindowAttentionHandler.prototype = { |
3560 | 14 | _init : function() { | 14 | _init : function() { |
3561 | 15 | this._startupIds = {}; | ||
3562 | 16 | this._tracker = Shell.WindowTracker.get_default(); | 15 | this._tracker = Shell.WindowTracker.get_default(); |
3563 | 17 | this._tracker.connect('startup-sequence-changed', Lang.bind(this, this._onStartupSequenceChanged)); | ||
3564 | 18 | |||
3565 | 19 | global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention)); | 16 | global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention)); |
3566 | 20 | }, | 17 | }, |
3567 | 21 | 18 | ||
3568 | 22 | _onStartupSequenceChanged : function(tracker) { | ||
3569 | 23 | let sequences = tracker.get_startup_sequences(); | ||
3570 | 24 | this._startupIds = {}; | ||
3571 | 25 | for(let i = 0; i < sequences.length; i++) { | ||
3572 | 26 | this._startupIds[sequences[i].get_id()] = true; | ||
3573 | 27 | } | ||
3574 | 28 | }, | ||
3575 | 29 | |||
3576 | 30 | _getTitle : function(app, window) { | ||
3577 | 31 | if (this._startupIds[window.get_startup_id()]) | ||
3578 | 32 | return app.get_name(); | ||
3579 | 33 | else | ||
3580 | 34 | return window.title; | ||
3581 | 35 | }, | ||
3582 | 36 | |||
3583 | 37 | _getBanner : function(app, window) { | ||
3584 | 38 | if (this._startupIds[window.get_startup_id()]) | ||
3585 | 39 | return _("%s has finished starting").format(app.get_name()); | ||
3586 | 40 | else | ||
3587 | 41 | return _("'%s' is ready").format(window.title); | ||
3588 | 42 | }, | ||
3589 | 43 | |||
3590 | 44 | _onWindowDemandsAttention : function(display, window) { | 19 | _onWindowDemandsAttention : function(display, window) { |
3591 | 45 | // We don't want to show the notification when the window is already focused, | 20 | // We don't want to show the notification when the window is already focused, |
3592 | 46 | // because this is rather pointless. | 21 | // because this is rather pointless. |
3593 | @@ -57,12 +32,16 @@ | |||
3594 | 57 | let source = new Source(app, window); | 32 | let source = new Source(app, window); |
3595 | 58 | Main.messageTray.add(source); | 33 | Main.messageTray.add(source); |
3596 | 59 | 34 | ||
3598 | 60 | let notification = new MessageTray.Notification(source, this._getTitle(app, window), this._getBanner(app, window)); | 35 | let banner = _("'%s' is ready").format(window.title); |
3599 | 36 | let title = app.get_name(); | ||
3600 | 37 | |||
3601 | 38 | let notification = new MessageTray.Notification(source, title, banner); | ||
3602 | 61 | source.notify(notification); | 39 | source.notify(notification); |
3603 | 62 | 40 | ||
3607 | 63 | source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function(win) { | 41 | source.signalIDs.push(window.connect('notify::title', |
3608 | 64 | notification.update(this._getTitle(app, win), this._getBanner(app, win)); | 42 | Lang.bind(this, function() { |
3609 | 65 | }))); | 43 | notification.update(title, banner); |
3610 | 44 | }))); | ||
3611 | 66 | } | 45 | } |
3612 | 67 | }; | 46 | }; |
3613 | 68 | 47 | ||
3614 | 69 | 48 | ||
3615 | === modified file 'js/ui/windowManager.js' | |||
3616 | --- js/ui/windowManager.js 2011-09-21 16:26:15 +0000 | |||
3617 | +++ js/ui/windowManager.js 2012-01-18 14:13:28 +0000 | |||
3618 | @@ -1,4 +1,4 @@ | |||
3620 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3621 | 2 | 2 | ||
3622 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3623 | 4 | const GLib = imports.gi.GLib; | 4 | const GLib = imports.gi.GLib; |
3624 | @@ -37,28 +37,36 @@ | |||
3625 | 37 | 37 | ||
3626 | 38 | WindowDimmer.prototype = { | 38 | WindowDimmer.prototype = { |
3627 | 39 | _init: function(actor) { | 39 | _init: function(actor) { |
3630 | 40 | this.effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER }); | 40 | if (Clutter.feature_available(Clutter.FeatureFlags.SHADERS_GLSL)) { |
3631 | 41 | this.effect.set_shader_source(getDimShaderSource()); | 41 | this._effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER }); |
3632 | 42 | this._effect.set_shader_source(getDimShaderSource()); | ||
3633 | 43 | } else { | ||
3634 | 44 | this._effect = null; | ||
3635 | 45 | } | ||
3636 | 42 | 46 | ||
3637 | 43 | this.actor = actor; | 47 | this.actor = actor; |
3638 | 44 | }, | 48 | }, |
3639 | 45 | 49 | ||
3640 | 46 | set dimFraction(fraction) { | 50 | set dimFraction(fraction) { |
3641 | 47 | this._dimFraction = fraction; | 51 | this._dimFraction = fraction; |
3642 | 52 | |||
3643 | 53 | if (this._effect == null) | ||
3644 | 54 | return; | ||
3645 | 55 | |||
3646 | 48 | if (!Meta.prefs_get_attach_modal_dialogs()) { | 56 | if (!Meta.prefs_get_attach_modal_dialogs()) { |
3648 | 49 | this.effect.enabled = false; | 57 | this._effect.enabled = false; |
3649 | 50 | return; | 58 | return; |
3650 | 51 | } | 59 | } |
3651 | 52 | 60 | ||
3652 | 53 | if (fraction > 0.01) { | 61 | if (fraction > 0.01) { |
3655 | 54 | Shell.shader_effect_set_double_uniform(this.effect, 'height', this.actor.get_height()); | 62 | Shell.shader_effect_set_double_uniform(this._effect, 'height', this.actor.get_height()); |
3656 | 55 | Shell.shader_effect_set_double_uniform(this.effect, 'fraction', fraction); | 63 | Shell.shader_effect_set_double_uniform(this._effect, 'fraction', fraction); |
3657 | 56 | 64 | ||
3660 | 57 | if (!this.effect.actor) | 65 | if (!this._effect.actor) |
3661 | 58 | this.actor.add_effect(this.effect); | 66 | this.actor.add_effect(this._effect); |
3662 | 59 | } else { | 67 | } else { |
3665 | 60 | if (this.effect.actor) | 68 | if (this._effect.actor) |
3666 | 61 | this.actor.remove_effect(this.effect); | 69 | this.actor.remove_effect(this._effect); |
3667 | 62 | } | 70 | } |
3668 | 63 | }, | 71 | }, |
3669 | 64 | 72 | ||
3670 | 65 | 73 | ||
3671 | === modified file 'js/ui/workspace.js' | |||
3672 | --- js/ui/workspace.js 2011-09-21 16:26:15 +0000 | |||
3673 | +++ js/ui/workspace.js 2012-01-18 14:13:28 +0000 | |||
3674 | @@ -1,4 +1,4 @@ | |||
3676 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3677 | 2 | 2 | ||
3678 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3679 | 4 | const GConf = imports.gi.GConf; | 4 | const GConf = imports.gi.GConf; |
3680 | @@ -135,8 +135,11 @@ | |||
3681 | 135 | this._realWindowDestroyId = this.realWindow.connect('destroy', | 135 | this._realWindowDestroyId = this.realWindow.connect('destroy', |
3682 | 136 | Lang.bind(this, this._disconnectRealWindowSignals)); | 136 | Lang.bind(this, this._disconnectRealWindowSignals)); |
3683 | 137 | 137 | ||
3686 | 138 | this.actor.connect('button-release-event', | 138 | let clickAction = new Clutter.ClickAction(); |
3687 | 139 | Lang.bind(this, this._onButtonRelease)); | 139 | clickAction.connect('clicked', Lang.bind(this, this._onClicked)); |
3688 | 140 | clickAction.connect('long-press', Lang.bind(this, this._onLongPress)); | ||
3689 | 141 | |||
3690 | 142 | this.actor.add_action(clickAction); | ||
3691 | 140 | 143 | ||
3692 | 141 | this.actor.connect('scroll-event', | 144 | this.actor.connect('scroll-event', |
3693 | 142 | Lang.bind(this, this._onScroll)); | 145 | Lang.bind(this, this._onScroll)); |
3694 | @@ -147,6 +150,7 @@ | |||
3695 | 147 | 150 | ||
3696 | 148 | this._draggable = DND.makeDraggable(this.actor, | 151 | this._draggable = DND.makeDraggable(this.actor, |
3697 | 149 | { restoreOnSuccess: true, | 152 | { restoreOnSuccess: true, |
3698 | 153 | manualMode: true, | ||
3699 | 150 | dragActorMaxSize: WINDOW_DND_SIZE, | 154 | dragActorMaxSize: WINDOW_DND_SIZE, |
3700 | 151 | dragActorOpacity: DRAGGING_WINDOW_OPACITY }); | 155 | dragActorOpacity: DRAGGING_WINDOW_OPACITY }); |
3701 | 152 | this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin)); | 156 | this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin)); |
3702 | @@ -345,9 +349,27 @@ | |||
3703 | 345 | this._zoomStep = undefined; | 349 | this._zoomStep = undefined; |
3704 | 346 | }, | 350 | }, |
3705 | 347 | 351 | ||
3707 | 348 | _onButtonRelease : function (actor, event) { | 352 | _onClicked: function(action, actor) { |
3708 | 349 | this._selected = true; | 353 | this._selected = true; |
3710 | 350 | this.emit('selected', event.get_time()); | 354 | this.emit('selected', global.get_current_time()); |
3711 | 355 | }, | ||
3712 | 356 | |||
3713 | 357 | _onLongPress: function(action, actor, state) { | ||
3714 | 358 | // Take advantage of the Clutter policy to consider | ||
3715 | 359 | // a long-press canceled when the pointer movement | ||
3716 | 360 | // exceeds dnd-drag-threshold to manually start the drag | ||
3717 | 361 | if (state == Clutter.LongPressState.CANCEL) { | ||
3718 | 362 | // A click cancels a long-press before any click handler is | ||
3719 | 363 | // run - make sure to not start a drag in that case | ||
3720 | 364 | Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, | ||
3721 | 365 | function() { | ||
3722 | 366 | if (this._selected) | ||
3723 | 367 | return; | ||
3724 | 368 | let [x, y] = action.get_coords(); | ||
3725 | 369 | this._draggable.startDrag(x, y, global.get_current_time()); | ||
3726 | 370 | })); | ||
3727 | 371 | } | ||
3728 | 372 | return true; | ||
3729 | 351 | }, | 373 | }, |
3730 | 352 | 374 | ||
3731 | 353 | _onDragBegin : function (draggable, time) { | 375 | _onDragBegin : function (draggable, time) { |
3732 | 354 | 376 | ||
3733 | === modified file 'js/ui/workspaceSwitcherPopup.js' | |||
3734 | --- js/ui/workspaceSwitcherPopup.js 2011-08-24 02:33:44 +0000 | |||
3735 | +++ js/ui/workspaceSwitcherPopup.js 2012-01-18 14:13:28 +0000 | |||
3736 | @@ -1,4 +1,4 @@ | |||
3738 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3739 | 2 | 2 | ||
3740 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3741 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3742 | 5 | 5 | ||
3743 | === modified file 'js/ui/workspaceThumbnail.js' | |||
3744 | --- js/ui/workspaceThumbnail.js 2011-09-04 08:02:35 +0000 | |||
3745 | +++ js/ui/workspaceThumbnail.js 2012-01-18 14:13:28 +0000 | |||
3746 | @@ -1,4 +1,4 @@ | |||
3748 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3749 | 2 | 2 | ||
3750 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3751 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3752 | 5 | 5 | ||
3753 | === modified file 'js/ui/workspacesView.js' | |||
3754 | --- js/ui/workspacesView.js 2011-09-21 16:26:15 +0000 | |||
3755 | +++ js/ui/workspacesView.js 2012-01-18 14:13:28 +0000 | |||
3756 | @@ -1,4 +1,4 @@ | |||
3758 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3759 | 2 | 2 | ||
3760 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3761 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3762 | @@ -109,8 +109,6 @@ | |||
3763 | 109 | this._scrollAdjustment.connect('notify::value', | 109 | this._scrollAdjustment.connect('notify::value', |
3764 | 110 | Lang.bind(this, this._onScroll)); | 110 | Lang.bind(this, this._onScroll)); |
3765 | 111 | 111 | ||
3766 | 112 | this._timeoutId = 0; | ||
3767 | 113 | |||
3768 | 114 | this._switchWorkspaceNotifyId = | 112 | this._switchWorkspaceNotifyId = |
3769 | 115 | global.window_manager.connect('switch-workspace', | 113 | global.window_manager.connect('switch-workspace', |
3770 | 116 | Lang.bind(this, this._activeWorkspaceChanged)); | 114 | Lang.bind(this, this._activeWorkspaceChanged)); |
3771 | @@ -321,10 +319,6 @@ | |||
3772 | 321 | if (this._inDrag) | 319 | if (this._inDrag) |
3773 | 322 | this._dragEnd(); | 320 | this._dragEnd(); |
3774 | 323 | 321 | ||
3775 | 324 | if (this._timeoutId) { | ||
3776 | 325 | Mainloop.source_remove(this._timeoutId); | ||
3777 | 326 | this._timeoutId = 0; | ||
3778 | 327 | } | ||
3779 | 328 | if (this._itemDragBeginId > 0) { | 322 | if (this._itemDragBeginId > 0) { |
3780 | 329 | Main.overview.disconnect(this._itemDragBeginId); | 323 | Main.overview.disconnect(this._itemDragBeginId); |
3781 | 330 | this._itemDragBeginId = 0; | 324 | this._itemDragBeginId = 0; |
3782 | @@ -383,72 +377,10 @@ | |||
3783 | 383 | this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate); | 377 | this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate); |
3784 | 384 | } | 378 | } |
3785 | 385 | 379 | ||
3845 | 386 | let primary = Main.layoutManager.primaryMonitor; | 380 | return DND.DragMotionResult.CONTINUE; |
3787 | 387 | |||
3788 | 388 | let activeWorkspaceIndex = global.screen.get_active_workspace_index(); | ||
3789 | 389 | let topWorkspace, bottomWorkspace; | ||
3790 | 390 | topWorkspace = this._workspaces[activeWorkspaceIndex - 1]; | ||
3791 | 391 | bottomWorkspace = this._workspaces[activeWorkspaceIndex + 1]; | ||
3792 | 392 | let hoverWorkspace = null; | ||
3793 | 393 | |||
3794 | 394 | // reactive monitor edges | ||
3795 | 395 | let topEdge = primary.y; | ||
3796 | 396 | let switchTop = (dragEvent.y <= topEdge && topWorkspace); | ||
3797 | 397 | if (switchTop && this._dragOverLastY != topEdge) { | ||
3798 | 398 | topWorkspace.metaWorkspace.activate(global.get_current_time()); | ||
3799 | 399 | this._dragOverLastY = topEdge; | ||
3800 | 400 | |||
3801 | 401 | return DND.DragMotionResult.CONTINUE; | ||
3802 | 402 | } | ||
3803 | 403 | let bottomEdge = primary.y + primary.height - 1; | ||
3804 | 404 | let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace); | ||
3805 | 405 | if (switchBottom && this._dragOverLastY != bottomEdge) { | ||
3806 | 406 | bottomWorkspace.metaWorkspace.activate(global.get_current_time()); | ||
3807 | 407 | this._dragOverLastY = bottomEdge; | ||
3808 | 408 | |||
3809 | 409 | return DND.DragMotionResult.CONTINUE; | ||
3810 | 410 | } | ||
3811 | 411 | this._dragOverLastY = dragEvent.y; | ||
3812 | 412 | let result = DND.DragMotionResult.CONTINUE; | ||
3813 | 413 | |||
3814 | 414 | // check hover state of new workspace area / inactive workspaces | ||
3815 | 415 | if (topWorkspace) { | ||
3816 | 416 | if (topWorkspace.actor.contains(dragEvent.targetActor)) { | ||
3817 | 417 | hoverWorkspace = topWorkspace; | ||
3818 | 418 | result = topWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor); | ||
3819 | 419 | } | ||
3820 | 420 | } | ||
3821 | 421 | |||
3822 | 422 | if (bottomWorkspace) { | ||
3823 | 423 | if (bottomWorkspace.actor.contains(dragEvent.targetActor)) { | ||
3824 | 424 | hoverWorkspace = bottomWorkspace; | ||
3825 | 425 | result = bottomWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor); | ||
3826 | 426 | } | ||
3827 | 427 | } | ||
3828 | 428 | |||
3829 | 429 | // handle delayed workspace switches | ||
3830 | 430 | if (hoverWorkspace) { | ||
3831 | 431 | if (!this._timeoutId) | ||
3832 | 432 | this._timeoutId = Mainloop.timeout_add_seconds(1, | ||
3833 | 433 | Lang.bind(this, function() { | ||
3834 | 434 | hoverWorkspace.metaWorkspace.activate(global.get_current_time()); | ||
3835 | 435 | return false; | ||
3836 | 436 | })); | ||
3837 | 437 | } else { | ||
3838 | 438 | if (this._timeoutId) { | ||
3839 | 439 | Mainloop.source_remove(this._timeoutId); | ||
3840 | 440 | this._timeoutId = 0; | ||
3841 | 441 | } | ||
3842 | 442 | } | ||
3843 | 443 | |||
3844 | 444 | return result; | ||
3846 | 445 | }, | 381 | }, |
3847 | 446 | 382 | ||
3848 | 447 | _dragEnd: function() { | 383 | _dragEnd: function() { |
3849 | 448 | if (this._timeoutId) { | ||
3850 | 449 | Mainloop.source_remove(this._timeoutId); | ||
3851 | 450 | this._timeoutId = 0; | ||
3852 | 451 | } | ||
3853 | 452 | DND.removeDragMonitor(this._dragMonitor); | 384 | DND.removeDragMonitor(this._dragMonitor); |
3854 | 453 | this._inDrag = false; | 385 | this._inDrag = false; |
3855 | 454 | 386 | ||
3856 | 455 | 387 | ||
3857 | === modified file 'js/ui/xdndHandler.js' | |||
3858 | --- js/ui/xdndHandler.js 2011-03-16 21:47:27 +0000 | |||
3859 | +++ js/ui/xdndHandler.js 2012-01-18 14:13:28 +0000 | |||
3860 | @@ -1,4 +1,4 @@ | |||
3862 | 1 | /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ | 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- |
3863 | 2 | 2 | ||
3864 | 3 | const Clutter = imports.gi.Clutter; | 3 | const Clutter = imports.gi.Clutter; |
3865 | 4 | const Lang = imports.lang; | 4 | const Lang = imports.lang; |
3866 | 5 | 5 | ||
3867 | === modified file 'po/LINGUAS' | |||
3868 | --- po/LINGUAS 2011-09-28 00:41:45 +0000 | |||
3869 | +++ po/LINGUAS 2012-01-18 14:13:28 +0000 | |||
3870 | @@ -2,6 +2,7 @@ | |||
3871 | 2 | an | 2 | an |
3872 | 3 | ar | 3 | ar |
3873 | 4 | as | 4 | as |
3874 | 5 | ast | ||
3875 | 5 | be | 6 | be |
3876 | 6 | bg | 7 | bg |
3877 | 7 | bn | 8 | bn |
3878 | @@ -31,6 +32,7 @@ | |||
3879 | 31 | ja | 32 | ja |
3880 | 32 | ko | 33 | ko |
3881 | 33 | kn | 34 | kn |
3882 | 35 | ku | ||
3883 | 34 | lt | 36 | lt |
3884 | 35 | lv | 37 | lv |
3885 | 36 | mr | 38 | mr |
3886 | 37 | 39 | ||
3887 | === modified file 'po/POTFILES.in' | |||
3888 | --- po/POTFILES.in 2011-09-22 08:50:45 +0000 | |||
3889 | +++ po/POTFILES.in 2012-01-18 14:13:28 +0000 | |||
3890 | @@ -25,6 +25,7 @@ | |||
3891 | 25 | js/ui/popupMenu.js | 25 | js/ui/popupMenu.js |
3892 | 26 | js/ui/runDialog.js | 26 | js/ui/runDialog.js |
3893 | 27 | js/ui/searchDisplay.js | 27 | js/ui/searchDisplay.js |
3894 | 28 | js/ui/shellEntry.js | ||
3895 | 28 | js/ui/shellMountOperation.js | 29 | js/ui/shellMountOperation.js |
3896 | 29 | js/ui/status/accessibility.js | 30 | js/ui/status/accessibility.js |
3897 | 30 | js/ui/status/bluetooth.js | 31 | js/ui/status/bluetooth.js |
3898 | @@ -44,4 +45,3 @@ | |||
3899 | 44 | src/shell-mobile-providers.c | 45 | src/shell-mobile-providers.c |
3900 | 45 | src/shell-polkit-authentication-agent.c | 46 | src/shell-polkit-authentication-agent.c |
3901 | 46 | src/shell-util.c | 47 | src/shell-util.c |
3902 | 47 | |||
3903 | 48 | 48 | ||
3904 | === added file 'po/ast.po' | |||
3905 | --- po/ast.po 1970-01-01 00:00:00 +0000 | |||
3906 | +++ po/ast.po 2012-01-18 14:13:28 +0000 | |||
3907 | @@ -0,0 +1,1630 @@ | |||
3908 | 1 | # SOME DESCRIPTIVE TITLE. | ||
3909 | 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3910 | 3 | # This file is distributed under the same license as the PACKAGE package. | ||
3911 | 4 | # Xandru Armesto <xandru@softastur.org>, 2011. | ||
3912 | 5 | msgid "" | ||
3913 | 6 | msgstr "" | ||
3914 | 7 | "Project-Id-Version: gnome-shell\n" | ||
3915 | 8 | "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" | ||
3916 | 9 | "shell&keywords=I18N+L10N&component=general\n" | ||
3917 | 10 | "POT-Creation-Date: 2011-09-30 18:14+0000\n" | ||
3918 | 11 | "PO-Revision-Date: 2011-09-30 20:56+0200\n" | ||
3919 | 12 | "Last-Translator: Xandru Armesto <xandru@softastur.org>\n" | ||
3920 | 13 | "Language-Team: Softastur <alministradores@softastur.org>\n" | ||
3921 | 14 | "Language: ast\n" | ||
3922 | 15 | "MIME-Version: 1.0\n" | ||
3923 | 16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
3924 | 17 | "Content-Transfer-Encoding: 8bit\n" | ||
3925 | 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" | ||
3926 | 19 | "X-Generator: Virtaal 0.5.2\n" | ||
3927 | 20 | "X-Poedit-Language: asturian\n" | ||
3928 | 21 | |||
3929 | 22 | #: ../data/gnome-shell.desktop.in.in.h:1 | ||
3930 | 23 | msgid "GNOME Shell" | ||
3931 | 24 | msgstr "GNOME Shell" | ||
3932 | 25 | |||
3933 | 26 | #: ../data/gnome-shell.desktop.in.in.h:2 | ||
3934 | 27 | msgid "Window management and application launching" | ||
3935 | 28 | msgstr "Xestión de ventanes y aniciu d'aplicaciones" | ||
3936 | 29 | |||
3937 | 30 | #: ../data/org.gnome.shell.gschema.xml.in.h:1 | ||
3938 | 31 | msgid "" | ||
3939 | 32 | "Allows access to internal debugging and monitoring tools using the Alt-F2 " | ||
3940 | 33 | "dialog." | ||
3941 | 34 | msgstr "" | ||
3942 | 35 | "Permitir acceder a les ferramientes internes de depuración y monitorización " | ||
3943 | 36 | "usando'l diálogu Alt+F2" | ||
3944 | 37 | |||
3945 | 38 | #: ../data/org.gnome.shell.gschema.xml.in.h:2 | ||
3946 | 39 | msgid "Enable internal tools useful for developers and testers from Alt-F2" | ||
3947 | 40 | msgstr "" | ||
3948 | 41 | "Activar les ferramientes internes, útiles pa desendolcadores y probadores, " | ||
3949 | 42 | "dende Alt+F2" | ||
3950 | 43 | |||
3951 | 44 | #: ../data/org.gnome.shell.gschema.xml.in.h:3 | ||
3952 | 45 | msgid "File extension used for storing the screencast" | ||
3953 | 46 | msgstr "Estensión de ficheru qu'usar p'almacenar los «screencast»" | ||
3954 | 47 | |||
3955 | 48 | #: ../data/org.gnome.shell.gschema.xml.in.h:4 | ||
3956 | 49 | msgid "Framerate used for recording screencasts." | ||
3957 | 50 | msgstr "Tasa de fotogrames usada pa grabar «screencast»." | ||
3958 | 51 | |||
3959 | 52 | #: ../data/org.gnome.shell.gschema.xml.in.h:5 | ||
3960 | 53 | msgid "" | ||
3961 | 54 | "GNOME Shell extensions have a uuid property; this key lists extensions which " | ||
3962 | 55 | "should be loaded. disabled-extensions overrides this setting for extensions " | ||
3963 | 56 | "that appear in both lists." | ||
3964 | 57 | msgstr "" | ||
3965 | 58 | "Les estensiones de GNOME Shell tienen una propiedá uuid; esta contraseña " | ||
3966 | 59 | "llista les estensiones que nun se deben cargar. «disabled-extensions» " | ||
3967 | 60 | "sobrescribe esti axuste pa les estensiones qu'aparecen en dambes llistes." | ||
3968 | 61 | |||
3969 | 62 | #: ../data/org.gnome.shell.gschema.xml.in.h:6 | ||
3970 | 63 | msgid "History for command (Alt-F2) dialog" | ||
3971 | 64 | msgstr "Históricu del diálogu de comandos (Alt+F2)" | ||
3972 | 65 | |||
3973 | 66 | #: ../data/org.gnome.shell.gschema.xml.in.h:7 | ||
3974 | 67 | msgid "History for the looking glass dialog" | ||
3975 | 68 | msgstr "Históricu del diálogu de «looking glass»" | ||
3976 | 69 | |||
3977 | 70 | #: ../data/org.gnome.shell.gschema.xml.in.h:8 | ||
3978 | 71 | msgid "If true, display date in the clock, in addition to time." | ||
3979 | 72 | msgstr "Si ye cierta, amuesa la data nel reló, arriendes de la hora." | ||
3980 | 73 | |||
3981 | 74 | #: ../data/org.gnome.shell.gschema.xml.in.h:9 | ||
3982 | 75 | msgid "If true, display seconds in time." | ||
3983 | 76 | msgstr "Si ye cierta, amuesa los segundos na hora." | ||
3984 | 77 | |||
3985 | 78 | #: ../data/org.gnome.shell.gschema.xml.in.h:10 | ||
3986 | 79 | msgid "If true, display the ISO week date in the calendar." | ||
3987 | 80 | msgstr "Si ye cierta, amuesa la data de selmana ISO nel calendariu." | ||
3988 | 81 | |||
3989 | 82 | #: ../data/org.gnome.shell.gschema.xml.in.h:11 | ||
3990 | 83 | msgid "List of desktop file IDs for favorite applications" | ||
3991 | 84 | msgstr "Llista de ID de ficheros d'escritoriu pa les aplicaciones favorites" | ||
3992 | 85 | |||
3993 | 86 | #: ../data/org.gnome.shell.gschema.xml.in.h:13 | ||
3994 | 87 | #, no-c-format | ||
3995 | 88 | msgid "" | ||
3996 | 89 | "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " | ||
3997 | 90 | "used for gst-launch. The pipeline should have an unconnected sink pad where " | ||
3998 | 91 | "the recorded video is recorded. It will normally have a unconnected source " | ||
3999 | 92 | "pad; output from that pad will be written into the output file. However the " | ||
4000 | 93 | "pipeline can also take care of its own output - this might be used to send " | ||
4001 | 94 | "the output to an icecast server via shout2send or similar. When unset or set " | ||
4002 | 95 | "to an empty value, the default pipeline will be used. This is currently " | ||
4003 | 96 | "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " | ||
4004 | 97 | "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " | ||
4005 | 98 | "at the optimal thread count on the system." | ||
4006 | 99 | msgstr "" | ||
4007 | 100 | "Afita la tubería GStreamer usada pa codificar grabaciones. Sigue la sintaxis " | ||
4008 | 101 | "usada pa gst-launch. La tubería tendría tener un sumideru («sink») " | ||
4009 | 102 | "d'ensamblaxe/desensamblaxe au'l videu que se ta grabando, se graba. " | ||
4010 | 103 | "Xeneralmente tendrá un orixe d'ensambláu/desensambláu; la salida d'esi puntu " | ||
4011 | 104 | "escribiráse nel ficheru de salida. Sicasí, la tubería tamién pue tomar " | ||
4012 | 105 | "parte na so propia salida; esto pue usase pa unviar la salida a un sirvidor " | ||
4013 | 106 | "«icecast» a traviés de shout2send o similar. Cuando nun ta afitáu o lo ta a " | ||
4014 | 107 | "un valor baleru, va usase la tubería predeterminada. Anguaño te «videorate ! " | ||
4015 | 108 | "vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux» y graba en WEBM " | ||
4016 | 109 | "usando'l códec VP8. Úsase %T como suposición pal númberu de filos óptimos " | ||
4017 | 110 | "nel sistema." | ||
4018 | 111 | |||
4019 | 112 | #: ../data/org.gnome.shell.gschema.xml.in.h:14 | ||
4020 | 113 | msgid "Show date in clock" | ||
4021 | 114 | msgstr "Amosar la data nel reló" | ||
4022 | 115 | |||
4023 | 116 | #: ../data/org.gnome.shell.gschema.xml.in.h:15 | ||
4024 | 117 | msgid "Show the week date in the calendar" | ||
4025 | 118 | msgstr "Amosar la data de la selmana nel calendariu" | ||
4026 | 119 | |||
4027 | 120 | #: ../data/org.gnome.shell.gschema.xml.in.h:16 | ||
4028 | 121 | msgid "Show time with seconds" | ||
4029 | 122 | msgstr "Amosar la hora con segundos" | ||
4030 | 123 | |||
4031 | 124 | #: ../data/org.gnome.shell.gschema.xml.in.h:17 | ||
4032 | 125 | msgid "" | ||
4033 | 126 | "The applications corresponding to these identifiers will be displayed in the " | ||
4034 | 127 | "favorites area." | ||
4035 | 128 | msgstr "" | ||
4036 | 129 | "Les aplicaciones correspondientes con esos identificadores van amosase nel " | ||
4037 | 130 | "área de favoritos." | ||
4038 | 131 | |||
4039 | 132 | #: ../data/org.gnome.shell.gschema.xml.in.h:18 | ||
4040 | 133 | msgid "" | ||
4041 | 134 | "The filename for recorded screencasts will be a unique filename based on the " | ||
4042 | 135 | "current date, and use this extension. It should be changed when recording to " | ||
4043 | 136 | "a different container format." | ||
4044 | 137 | msgstr "" | ||
4045 | 138 | "El nome de ficheru pa los «screencast» sedrá un nome de ficheru únicu basáu " | ||
4046 | 139 | "na data actual y usará esta estensión. Tendría de camudase al grabar n'otru " | ||
4047 | 140 | "formatu contenedor distintu." | ||
4048 | 141 | |||
4049 | 142 | #: ../data/org.gnome.shell.gschema.xml.in.h:19 | ||
4050 | 143 | msgid "" | ||
4051 | 144 | "The framerate of the resulting screencast recordered by GNOME Shell's " | ||
4052 | 145 | "screencast recorder in frames-per-second." | ||
4053 | 146 | msgstr "" | ||
4054 | 147 | "La tasa de fotogrames de la grabación resultante grabada pol grabador de " | ||
4055 | 148 | "«screencast» de GNOME Shell, en fotogrames per segundu." | ||
4056 | 149 | |||
4057 | 150 | #: ../data/org.gnome.shell.gschema.xml.in.h:20 | ||
4058 | 151 | msgid "The gstreamer pipeline used to encode the screencast" | ||
4059 | 152 | msgstr "La tubería de gstreamer usada pa codificar el «screencast»" | ||
4060 | 153 | |||
4061 | 154 | #: ../data/org.gnome.shell.gschema.xml.in.h:21 | ||
4062 | 155 | msgid "" | ||
4063 | 156 | "The shell normally monitors active applications in order to present the most " | ||
4064 | 157 | "used ones (e.g. in launchers). While this data will be kept private, you may " | ||
4065 | 158 | "want to disable this for privacy reasons. Please note that doing so won't " | ||
4066 | 159 | "remove already saved data." | ||
4067 | 160 | msgstr "" | ||
4068 | 161 | "La «shell» normalmente monitoriza toles aplicaciones actives pa presentar " | ||
4069 | 162 | "les más usaes (ex. nos lanzadores). Magar qu'estos datos se caltienen de " | ||
4070 | 163 | "forma privada, pues querer desactivalo por razones de privacidá. Nota que " | ||
4071 | 164 | "faciéndolo nun desanicies los datos yá guardaos." | ||
4072 | 165 | |||
4073 | 166 | #: ../data/org.gnome.shell.gschema.xml.in.h:22 | ||
4074 | 167 | msgid "The type of keyboard to use." | ||
4075 | 168 | msgstr "La triba de tecláu qu'usar." | ||
4076 | 169 | |||
4077 | 170 | #: ../data/org.gnome.shell.gschema.xml.in.h:23 | ||
4078 | 171 | msgid "Uuids of extensions to enable" | ||
4079 | 172 | msgstr "Uuid de les estensiones qu'activar" | ||
4080 | 173 | |||
4081 | 174 | #: ../data/org.gnome.shell.gschema.xml.in.h:24 | ||
4082 | 175 | msgid "Whether to collect stats about applications usage" | ||
4083 | 176 | msgstr "" | ||
4084 | 177 | "Indica si hai de recolectar estadístiques tocante al usu de les aplicaciones" | ||
4085 | 178 | |||
4086 | 179 | #: ../data/org.gnome.shell.gschema.xml.in.h:25 | ||
4087 | 180 | msgid "Which keyboard to use" | ||
4088 | 181 | msgstr "Qué tecláu usar" | ||
4089 | 182 | |||
4090 | 183 | #: ../data/org.gnome.shell.gschema.xml.in.h:26 | ||
4091 | 184 | msgid "disabled OpenSearch providers" | ||
4092 | 185 | msgstr "fornidores OpenSearch desactivaos" | ||
4093 | 186 | |||
4094 | 187 | #: ../js/gdm/loginDialog.js:617 | ||
4095 | 188 | msgid "Session..." | ||
4096 | 189 | msgstr "Sesión…" | ||
4097 | 190 | |||
4098 | 191 | #: ../js/gdm/loginDialog.js:785 | ||
4099 | 192 | msgctxt "title" | ||
4100 | 193 | msgid "Sign In" | ||
4101 | 194 | msgstr "Entamar sesión" | ||
4102 | 195 | |||
4103 | 196 | #. translators: this message is shown below the password entry field | ||
4104 | 197 | #. to indicate the user can swipe their finger instead | ||
4105 | 198 | #: ../js/gdm/loginDialog.js:830 | ||
4106 | 199 | msgid "(or swipe finger)" | ||
4107 | 200 | msgstr "(o pasa'l deu)" | ||
4108 | 201 | |||
4109 | 202 | #: ../js/gdm/loginDialog.js:848 | ||
4110 | 203 | msgid "Not listed?" | ||
4111 | 204 | msgstr "¿Nun ta llistáu?" | ||
4112 | 205 | |||
4113 | 206 | #: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426 | ||
4114 | 207 | #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165 | ||
4115 | 208 | #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480 | ||
4116 | 209 | msgid "Cancel" | ||
4117 | 210 | msgstr "Encaboxar" | ||
4118 | 211 | |||
4119 | 212 | #: ../js/gdm/loginDialog.js:1009 | ||
4120 | 213 | msgctxt "button" | ||
4121 | 214 | msgid "Sign In" | ||
4122 | 215 | msgstr "Entamar sesión" | ||
4123 | 216 | |||
4124 | 217 | #: ../js/gdm/loginDialog.js:1358 | ||
4125 | 218 | msgid "Login Window" | ||
4126 | 219 | msgstr "Ventana d'aniciu de sesión" | ||
4127 | 220 | |||
4128 | 221 | #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:514 | ||
4129 | 222 | #: ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:585 | ||
4130 | 223 | msgid "Suspend" | ||
4131 | 224 | msgstr "Suspender" | ||
4132 | 225 | |||
4133 | 226 | #: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89 | ||
4134 | 227 | #: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106 | ||
4135 | 228 | msgid "Restart" | ||
4136 | 229 | msgstr "Reaniciar" | ||
4137 | 230 | |||
4138 | 231 | #: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80 | ||
4139 | 232 | #: ../js/ui/endSessionDialog.js:91 | ||
4140 | 233 | msgid "Power Off" | ||
4141 | 234 | msgstr "Apagar" | ||
4142 | 235 | |||
4143 | 236 | #: ../js/misc/util.js:92 | ||
4144 | 237 | msgid "Command not found" | ||
4145 | 238 | msgstr "Comandu non alcontráu" | ||
4146 | 239 | |||
4147 | 240 | #. Replace "Error invoking GLib.shell_parse_argv: " with | ||
4148 | 241 | #. something nicer | ||
4149 | 242 | #: ../js/misc/util.js:119 | ||
4150 | 243 | msgid "Could not parse command:" | ||
4151 | 244 | msgstr "Nun pudo analizase'l comandu:" | ||
4152 | 245 | |||
4153 | 246 | #: ../js/misc/util.js:127 | ||
4154 | 247 | #, c-format | ||
4155 | 248 | msgid "Execution of '%s' failed:" | ||
4156 | 249 | msgstr "Falló la execución de «%s»:" | ||
4157 | 250 | |||
4158 | 251 | #. Translators: Filter to display all applications | ||
4159 | 252 | #: ../js/ui/appDisplay.js:255 | ||
4160 | 253 | msgid "All" | ||
4161 | 254 | msgstr "Toes" | ||
4162 | 255 | |||
4163 | 256 | #: ../js/ui/appDisplay.js:319 | ||
4164 | 257 | msgid "APPLICATIONS" | ||
4165 | 258 | msgstr "APLICACIONES" | ||
4166 | 259 | |||
4167 | 260 | #: ../js/ui/appDisplay.js:377 | ||
4168 | 261 | msgid "SETTINGS" | ||
4169 | 262 | msgstr "CONFIGURACIÓN" | ||
4170 | 263 | |||
4171 | 264 | #: ../js/ui/appDisplay.js:684 | ||
4172 | 265 | msgid "New Window" | ||
4173 | 266 | msgstr "Ventana nueva" | ||
4174 | 267 | |||
4175 | 268 | #: ../js/ui/appDisplay.js:687 | ||
4176 | 269 | msgid "Remove from Favorites" | ||
4177 | 270 | msgstr "Quitar de los favoritos" | ||
4178 | 271 | |||
4179 | 272 | #: ../js/ui/appDisplay.js:688 | ||
4180 | 273 | msgid "Add to Favorites" | ||
4181 | 274 | msgstr "Amestar a los favoritos" | ||
4182 | 275 | |||
4183 | 276 | #: ../js/ui/appFavorites.js:89 | ||
4184 | 277 | #, c-format | ||
4185 | 278 | msgid "%s has been added to your favorites." | ||
4186 | 279 | msgstr "Amestóse %s a los favoritos." | ||
4187 | 280 | |||
4188 | 281 | #: ../js/ui/appFavorites.js:120 | ||
4189 | 282 | #, c-format | ||
4190 | 283 | msgid "%s has been removed from your favorites." | ||
4191 | 284 | msgstr "Desanicióse %s de los favoritos." | ||
4192 | 285 | |||
4193 | 286 | #: ../js/ui/autorunManager.js:280 | ||
4194 | 287 | msgid "Removable Devices" | ||
4195 | 288 | msgstr "Preseos extraíbles" | ||
4196 | 289 | |||
4197 | 290 | #: ../js/ui/autorunManager.js:590 | ||
4198 | 291 | #, c-format | ||
4199 | 292 | msgid "Open with %s" | ||
4200 | 293 | msgstr "Abrir con %s" | ||
4201 | 294 | |||
4202 | 295 | #: ../js/ui/autorunManager.js:616 | ||
4203 | 296 | msgid "Eject" | ||
4204 | 297 | msgstr "Espulsar" | ||
4205 | 298 | |||
4206 | 299 | #. Translators: Shown in calendar event list for all day events | ||
4207 | 300 | #. * Keep it short, best if you can use less then 10 characters | ||
4208 | 301 | #. | ||
4209 | 302 | #: ../js/ui/calendar.js:63 | ||
4210 | 303 | msgctxt "event list time" | ||
4211 | 304 | msgid "All Day" | ||
4212 | 305 | msgstr "Tol día" | ||
4213 | 306 | |||
4214 | 307 | #. Translators: Shown in calendar event list, if 24h format | ||
4215 | 308 | #: ../js/ui/calendar.js:68 | ||
4216 | 309 | msgctxt "event list time" | ||
4217 | 310 | msgid "%H:%M" | ||
4218 | 311 | msgstr "%H:%M" | ||
4219 | 312 | |||
4220 | 313 | #. Transators: Shown in calendar event list, if 12h format | ||
4221 | 314 | #: ../js/ui/calendar.js:75 | ||
4222 | 315 | msgctxt "event list time" | ||
4223 | 316 | msgid "%l:%M %p" | ||
4224 | 317 | msgstr "%l:%M %p" | ||
4225 | 318 | |||
4226 | 319 | #. Translators: Calendar grid abbreviation for Sunday. | ||
4227 | 320 | #. * | ||
4228 | 321 | #. * NOTE: These grid abbreviations are always shown together | ||
4229 | 322 | #. * and in order, e.g. "S M T W T F S". | ||
4230 | 323 | #. | ||
4231 | 324 | #: ../js/ui/calendar.js:115 | ||
4232 | 325 | msgctxt "grid sunday" | ||
4233 | 326 | msgid "S" | ||
4234 | 327 | msgstr "D" | ||
4235 | 328 | |||
4236 | 329 | #. Translators: Calendar grid abbreviation for Monday | ||
4237 | 330 | #: ../js/ui/calendar.js:117 | ||
4238 | 331 | msgctxt "grid monday" | ||
4239 | 332 | msgid "M" | ||
4240 | 333 | msgstr "L" | ||
4241 | 334 | |||
4242 | 335 | #. Translators: Calendar grid abbreviation for Tuesday | ||
4243 | 336 | #: ../js/ui/calendar.js:119 | ||
4244 | 337 | msgctxt "grid tuesday" | ||
4245 | 338 | msgid "T" | ||
4246 | 339 | msgstr "M" | ||
4247 | 340 | |||
4248 | 341 | #. Translators: Calendar grid abbreviation for Wednesday | ||
4249 | 342 | #: ../js/ui/calendar.js:121 | ||
4250 | 343 | msgctxt "grid wednesday" | ||
4251 | 344 | msgid "W" | ||
4252 | 345 | msgstr "m" | ||
4253 | 346 | |||
4254 | 347 | #. Translators: Calendar grid abbreviation for Thursday | ||
4255 | 348 | #: ../js/ui/calendar.js:123 | ||
4256 | 349 | msgctxt "grid thursday" | ||
4257 | 350 | msgid "T" | ||
4258 | 351 | msgstr "X" | ||
4259 | 352 | |||
4260 | 353 | #. Translators: Calendar grid abbreviation for Friday | ||
4261 | 354 | #: ../js/ui/calendar.js:125 | ||
4262 | 355 | msgctxt "grid friday" | ||
4263 | 356 | msgid "F" | ||
4264 | 357 | msgstr "V" | ||
4265 | 358 | |||
4266 | 359 | #. Translators: Calendar grid abbreviation for Saturday | ||
4267 | 360 | #: ../js/ui/calendar.js:127 | ||
4268 | 361 | msgctxt "grid saturday" | ||
4269 | 362 | msgid "S" | ||
4270 | 363 | msgstr "S" | ||
4271 | 364 | |||
4272 | 365 | #. Translators: Event list abbreviation for Sunday. | ||
4273 | 366 | #. * | ||
4274 | 367 | #. * NOTE: These list abbreviations are normally not shown together | ||
4275 | 368 | #. * so they need to be unique (e.g. Tuesday and Thursday cannot | ||
4276 | 369 | #. * both be 'T'). | ||
4277 | 370 | #. | ||
4278 | 371 | #: ../js/ui/calendar.js:140 | ||
4279 | 372 | msgctxt "list sunday" | ||
4280 | 373 | msgid "Su" | ||
4281 | 374 | msgstr "Dom" | ||
4282 | 375 | |||
4283 | 376 | #. Translators: Event list abbreviation for Monday | ||
4284 | 377 | #: ../js/ui/calendar.js:142 | ||
4285 | 378 | msgctxt "list monday" | ||
4286 | 379 | msgid "M" | ||
4287 | 380 | msgstr "Llu" | ||
4288 | 381 | |||
4289 | 382 | #. Translators: Event list abbreviation for Tuesday | ||
4290 | 383 | #: ../js/ui/calendar.js:144 | ||
4291 | 384 | msgctxt "list tuesday" | ||
4292 | 385 | msgid "T" | ||
4293 | 386 | msgstr "Mar" | ||
4294 | 387 | |||
4295 | 388 | #. Translators: Event list abbreviation for Wednesday | ||
4296 | 389 | #: ../js/ui/calendar.js:146 | ||
4297 | 390 | msgctxt "list wednesday" | ||
4298 | 391 | msgid "W" | ||
4299 | 392 | msgstr "Mié" | ||
4300 | 393 | |||
4301 | 394 | #. Translators: Event list abbreviation for Thursday | ||
4302 | 395 | #: ../js/ui/calendar.js:148 | ||
4303 | 396 | msgctxt "list thursday" | ||
4304 | 397 | msgid "Th" | ||
4305 | 398 | msgstr "Xue" | ||
4306 | 399 | |||
4307 | 400 | #. Translators: Event list abbreviation for Friday | ||
4308 | 401 | #: ../js/ui/calendar.js:150 | ||
4309 | 402 | msgctxt "list friday" | ||
4310 | 403 | msgid "F" | ||
4311 | 404 | msgstr "Vie" | ||
4312 | 405 | |||
4313 | 406 | #. Translators: Event list abbreviation for Saturday | ||
4314 | 407 | #: ../js/ui/calendar.js:152 | ||
4315 | 408 | msgctxt "list saturday" | ||
4316 | 409 | msgid "S" | ||
4317 | 410 | msgstr "Sáb" | ||
4318 | 411 | |||
4319 | 412 | #. Translators: Text to show if there are no events | ||
4320 | 413 | #: ../js/ui/calendar.js:687 | ||
4321 | 414 | msgid "Nothing Scheduled" | ||
4322 | 415 | msgstr "Res programáu" | ||
4323 | 416 | |||
4324 | 417 | #. Translators: Shown on calendar heading when selected day occurs on current year | ||
4325 | 418 | #: ../js/ui/calendar.js:703 | ||
4326 | 419 | msgctxt "calendar heading" | ||
4327 | 420 | msgid "%A, %B %d" | ||
4328 | 421 | msgstr "%A, %d de %B" | ||
4329 | 422 | |||
4330 | 423 | #. Translators: Shown on calendar heading when selected day occurs on different year | ||
4331 | 424 | #: ../js/ui/calendar.js:706 | ||
4332 | 425 | msgctxt "calendar heading" | ||
4333 | 426 | msgid "%A, %B %d, %Y" | ||
4334 | 427 | msgstr "%A, %d de %B de %Y" | ||
4335 | 428 | |||
4336 | 429 | #: ../js/ui/calendar.js:716 | ||
4337 | 430 | msgid "Today" | ||
4338 | 431 | msgstr "Güei" | ||
4339 | 432 | |||
4340 | 433 | #: ../js/ui/calendar.js:720 | ||
4341 | 434 | msgid "Tomorrow" | ||
4342 | 435 | msgstr "Mañana" | ||
4343 | 436 | |||
4344 | 437 | #: ../js/ui/calendar.js:729 | ||
4345 | 438 | msgid "This week" | ||
4346 | 439 | msgstr "Esta selmana" | ||
4347 | 440 | |||
4348 | 441 | #: ../js/ui/calendar.js:737 | ||
4349 | 442 | msgid "Next week" | ||
4350 | 443 | msgstr "La selmana que vien" | ||
4351 | 444 | |||
4352 | 445 | #: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444 | ||
4353 | 446 | #: ../js/ui/status/power.js:223 ../src/shell-app.c:355 | ||
4354 | 447 | msgid "Unknown" | ||
4355 | 448 | msgstr "Desconocíu" | ||
4356 | 449 | |||
4357 | 450 | #: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:139 | ||
4358 | 451 | msgid "Available" | ||
4359 | 452 | msgstr "Disponible" | ||
4360 | 453 | |||
4361 | 454 | #: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:148 | ||
4362 | 455 | msgid "Away" | ||
4363 | 456 | msgstr "Ausente" | ||
4364 | 457 | |||
4365 | 458 | #: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:142 | ||
4366 | 459 | msgid "Busy" | ||
4367 | 460 | msgstr "Ocupáu" | ||
4368 | 461 | |||
4369 | 462 | #: ../js/ui/contactDisplay.js:93 | ||
4370 | 463 | msgid "Offline" | ||
4371 | 464 | msgstr "Desconeutáu" | ||
4372 | 465 | |||
4373 | 466 | #: ../js/ui/contactDisplay.js:140 | ||
4374 | 467 | msgid "CONTACTS" | ||
4375 | 468 | msgstr "CONTAUTOS" | ||
4376 | 469 | |||
4377 | 470 | #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204 | ||
4378 | 471 | msgid "Remove" | ||
4379 | 472 | msgstr "Desaniciar" | ||
4380 | 473 | |||
4381 | 474 | #: ../js/ui/dateMenu.js:99 | ||
4382 | 475 | msgid "Date and Time Settings" | ||
4383 | 476 | msgstr "Axustes d'hora y data" | ||
4384 | 477 | |||
4385 | 478 | #: ../js/ui/dateMenu.js:125 | ||
4386 | 479 | msgid "Open Calendar" | ||
4387 | 480 | msgstr "Abrir calendariu" | ||
4388 | 481 | |||
4389 | 482 | #. Translators: This is the time format with date used | ||
4390 | 483 | #. in 24-hour mode. | ||
4391 | 484 | #: ../js/ui/dateMenu.js:183 | ||
4392 | 485 | msgid "%a %b %e, %R:%S" | ||
4393 | 486 | msgstr "%a %e de %b, %R:%S" | ||
4394 | 487 | |||
4395 | 488 | #: ../js/ui/dateMenu.js:184 | ||
4396 | 489 | msgid "%a %b %e, %R" | ||
4397 | 490 | msgstr "%a %e de %b, %R" | ||
4398 | 491 | |||
4399 | 492 | #. Translators: This is the time format without date used | ||
4400 | 493 | #. in 24-hour mode. | ||
4401 | 494 | #: ../js/ui/dateMenu.js:188 | ||
4402 | 495 | msgid "%a %R:%S" | ||
4403 | 496 | msgstr "%a %R:%S" | ||
4404 | 497 | |||
4405 | 498 | #: ../js/ui/dateMenu.js:189 | ||
4406 | 499 | msgid "%a %R" | ||
4407 | 500 | msgstr "%a %R" | ||
4408 | 501 | |||
4409 | 502 | #. Translators: This is a time format with date used | ||
4410 | 503 | #. for AM/PM. | ||
4411 | 504 | #: ../js/ui/dateMenu.js:196 | ||
4412 | 505 | msgid "%a %b %e, %l:%M:%S %p" | ||
4413 | 506 | msgstr "%a %e de %b, %l:%M:%S %p" | ||
4414 | 507 | |||
4415 | 508 | #: ../js/ui/dateMenu.js:197 | ||
4416 | 509 | msgid "%a %b %e, %l:%M %p" | ||
4417 | 510 | msgstr "%a %e de %b, %l:%M %p" | ||
4418 | 511 | |||
4419 | 512 | #. Translators: This is a time format without date used | ||
4420 | 513 | #. for AM/PM. | ||
4421 | 514 | #: ../js/ui/dateMenu.js:201 | ||
4422 | 515 | msgid "%a %l:%M:%S %p" | ||
4423 | 516 | msgstr "%a %l:%M:%S %p" | ||
4424 | 517 | |||
4425 | 518 | #: ../js/ui/dateMenu.js:202 | ||
4426 | 519 | msgid "%a %l:%M %p" | ||
4427 | 520 | msgstr "%a %l:%M %p" | ||
4428 | 521 | |||
4429 | 522 | #. Translators: This is the date format to use when the calendar popup is | ||
4430 | 523 | #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). | ||
4431 | 524 | #. | ||
4432 | 525 | #: ../js/ui/dateMenu.js:213 | ||
4433 | 526 | msgid "%A %B %e, %Y" | ||
4434 | 527 | msgstr "%A, %e de %B de %Y" | ||
4435 | 528 | |||
4436 | 529 | #: ../js/ui/docDisplay.js:16 | ||
4437 | 530 | msgid "RECENT ITEMS" | ||
4438 | 531 | msgstr "ELEMENTOS RECIENTES" | ||
4439 | 532 | |||
4440 | 533 | #: ../js/ui/endSessionDialog.js:60 | ||
4441 | 534 | #, c-format | ||
4442 | 535 | msgid "Log Out %s" | ||
4443 | 536 | msgstr "Zarrar la sesión %s" | ||
4444 | 537 | |||
4445 | 538 | #: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75 | ||
4446 | 539 | msgid "Log Out" | ||
4447 | 540 | msgstr "Zarrar la sesión" | ||
4448 | 541 | |||
4449 | 542 | #: ../js/ui/endSessionDialog.js:62 | ||
4450 | 543 | msgid "Click Log Out to quit these applications and log out of the system." | ||
4451 | 544 | msgstr "" | ||
4452 | 545 | "Calca «Zarrar la sesión» pa colar d'eses aplicaciones y zarrar la sesión del " | ||
4453 | 546 | "sistema." | ||
4454 | 547 | |||
4455 | 548 | #: ../js/ui/endSessionDialog.js:64 | ||
4456 | 549 | #, c-format | ||
4457 | 550 | msgid "%s will be logged out automatically in %d second." | ||
4458 | 551 | msgid_plural "%s will be logged out automatically in %d seconds." | ||
4459 | 552 | msgstr[0] "va zarrase automáticamente la sesión de %s en %d segundu." | ||
4460 | 553 | msgstr[1] "va zarrase automáticamente la sesión de %s en %d segundos." | ||
4461 | 554 | |||
4462 | 555 | #: ../js/ui/endSessionDialog.js:69 | ||
4463 | 556 | #, c-format | ||
4464 | 557 | msgid "You will be logged out automatically in %d second." | ||
4465 | 558 | msgid_plural "You will be logged out automatically in %d seconds." | ||
4466 | 559 | msgstr[0] "La sesión va zarrase automáticamente en %d segundu." | ||
4467 | 560 | msgstr[1] "La sesión va zarrase automáticamente en %d segundos." | ||
4468 | 561 | |||
4469 | 562 | #: ../js/ui/endSessionDialog.js:73 | ||
4470 | 563 | msgid "Logging out of the system." | ||
4471 | 564 | msgstr "Zarrando la sesión." | ||
4472 | 565 | |||
4473 | 566 | #: ../js/ui/endSessionDialog.js:81 | ||
4474 | 567 | msgid "Click Power Off to quit these applications and power off the system." | ||
4475 | 568 | msgstr "Calca «Apagar» pa colar d'eses aplicaciones y apagar el sistema." | ||
4476 | 569 | |||
4477 | 570 | #: ../js/ui/endSessionDialog.js:83 | ||
4478 | 571 | #, c-format | ||
4479 | 572 | msgid "The system will power off automatically in %d second." | ||
4480 | 573 | msgid_plural "The system will power off automatically in %d seconds." | ||
4481 | 574 | msgstr[0] "El sistema va apagase automáticamente en %d segundu." | ||
4482 | 575 | msgstr[1] "El sistema va apagase automáticamente en %d segundos." | ||
4483 | 576 | |||
4484 | 577 | #: ../js/ui/endSessionDialog.js:87 | ||
4485 | 578 | msgid "Powering off the system." | ||
4486 | 579 | msgstr "Apagando'l sistema." | ||
4487 | 580 | |||
4488 | 581 | #: ../js/ui/endSessionDialog.js:98 | ||
4489 | 582 | msgid "Click Restart to quit these applications and restart the system." | ||
4490 | 583 | msgstr "Calca «Reaniciar» pa colar d'eses aplicaciones y reaniciar el sistema." | ||
4491 | 584 | |||
4492 | 585 | #: ../js/ui/endSessionDialog.js:100 | ||
4493 | 586 | #, c-format | ||
4494 | 587 | msgid "The system will restart automatically in %d second." | ||
4495 | 588 | msgid_plural "The system will restart automatically in %d seconds." | ||
4496 | 589 | msgstr[0] "El sistema va reaniciase automáticamente en %d segundu." | ||
4497 | 590 | msgstr[1] "El sistema va reaniciase automáticamente en %d segundos." | ||
4498 | 591 | |||
4499 | 592 | #: ../js/ui/endSessionDialog.js:104 | ||
4500 | 593 | msgid "Restarting the system." | ||
4501 | 594 | msgstr "Reaniciando'l sistema." | ||
4502 | 595 | |||
4503 | 596 | #: ../js/ui/extensionSystem.js:481 | ||
4504 | 597 | msgid "Install" | ||
4505 | 598 | msgstr "Instalar" | ||
4506 | 599 | |||
4507 | 600 | #: ../js/ui/extensionSystem.js:485 | ||
4508 | 601 | #, c-format | ||
4509 | 602 | msgid "Download and install '%s' from extensions.gnome.org?" | ||
4510 | 603 | msgstr "¿Baxar ya instalar «%s» dende extensions.gnome.org?" | ||
4511 | 604 | |||
4512 | 605 | #: ../js/ui/keyboard.js:529 ../js/ui/status/power.js:211 | ||
4513 | 606 | msgid "Keyboard" | ||
4514 | 607 | msgstr "Tecláu" | ||
4515 | 608 | |||
4516 | 609 | #: ../js/ui/lookingGlass.js:645 | ||
4517 | 610 | msgid "No extensions installed" | ||
4518 | 611 | msgstr "Nun hai estensiones instalaes" | ||
4519 | 612 | |||
4520 | 613 | #. Translators: argument is an extension UUID. | ||
4521 | 614 | #: ../js/ui/lookingGlass.js:700 | ||
4522 | 615 | #, c-format | ||
4523 | 616 | msgid "%s has not emitted any errors." | ||
4524 | 617 | msgstr "%s nun emitió error nengún." | ||
4525 | 618 | |||
4526 | 619 | #: ../js/ui/lookingGlass.js:706 | ||
4527 | 620 | msgid "Hide Errors" | ||
4528 | 621 | msgstr "Anubrir Errores" | ||
4529 | 622 | |||
4530 | 623 | #: ../js/ui/lookingGlass.js:710 ../js/ui/lookingGlass.js:760 | ||
4531 | 624 | msgid "Show Errors" | ||
4532 | 625 | msgstr "Amosar Errores" | ||
4533 | 626 | |||
4534 | 627 | #: ../js/ui/lookingGlass.js:719 | ||
4535 | 628 | msgid "Enabled" | ||
4536 | 629 | msgstr "Activáu" | ||
4537 | 630 | |||
4538 | 631 | #. translators: | ||
4539 | 632 | #. * The device has been disabled | ||
4540 | 633 | #: ../js/ui/lookingGlass.js:721 ../src/gvc/gvc-mixer-control.c:1093 | ||
4541 | 634 | msgid "Disabled" | ||
4542 | 635 | msgstr "Desactiváu" | ||
4543 | 636 | |||
4544 | 637 | #: ../js/ui/lookingGlass.js:723 | ||
4545 | 638 | msgid "Error" | ||
4546 | 639 | msgstr "Fallu" | ||
4547 | 640 | |||
4548 | 641 | #: ../js/ui/lookingGlass.js:725 | ||
4549 | 642 | msgid "Out of date" | ||
4550 | 643 | msgstr "Caducáu" | ||
4551 | 644 | |||
4552 | 645 | #: ../js/ui/lookingGlass.js:727 | ||
4553 | 646 | msgid "Downloading" | ||
4554 | 647 | msgstr "Descargando" | ||
4555 | 648 | |||
4556 | 649 | #: ../js/ui/lookingGlass.js:748 | ||
4557 | 650 | msgid "View Source" | ||
4558 | 651 | msgstr "Ver fonte" | ||
4559 | 652 | |||
4560 | 653 | #: ../js/ui/lookingGlass.js:754 | ||
4561 | 654 | msgid "Web Page" | ||
4562 | 655 | msgstr "Páxina web" | ||
4563 | 656 | |||
4564 | 657 | #: ../js/ui/messageTray.js:1197 | ||
4565 | 658 | msgid "Open" | ||
4566 | 659 | msgstr "Abrir" | ||
4567 | 660 | |||
4568 | 661 | #: ../js/ui/messageTray.js:2406 | ||
4569 | 662 | msgid "System Information" | ||
4570 | 663 | msgstr "Información del sistema" | ||
4571 | 664 | |||
4572 | 665 | #: ../js/ui/networkAgent.js:145 | ||
4573 | 666 | msgid "Show password" | ||
4574 | 667 | msgstr "Amosar contraseña" | ||
4575 | 668 | |||
4576 | 669 | #: ../js/ui/networkAgent.js:160 | ||
4577 | 670 | msgid "Connect" | ||
4578 | 671 | msgstr "Coneutar" | ||
4579 | 672 | |||
4580 | 673 | #. Cisco LEAP | ||
4581 | 674 | #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267 | ||
4582 | 675 | #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314 | ||
4583 | 676 | #: ../js/ui/networkAgent.js:324 | ||
4584 | 677 | msgid "Password: " | ||
4585 | 678 | msgstr "Contraseña: " | ||
4586 | 679 | |||
4587 | 680 | #. static WEP | ||
4588 | 681 | #: ../js/ui/networkAgent.js:260 | ||
4589 | 682 | msgid "Key: " | ||
4590 | 683 | msgstr "Contraseña:" | ||
4591 | 684 | |||
4592 | 685 | #. TTLS and PEAP are actually much more complicated, but this complication | ||
4593 | 686 | #. is not visible here since we only care about phase2 authentication | ||
4594 | 687 | #. (and don't even care of which one) | ||
4595 | 688 | #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310 | ||
4596 | 689 | msgid "Username: " | ||
4597 | 690 | msgstr "Nome d'usuariu:" | ||
4598 | 691 | |||
4599 | 692 | #: ../js/ui/networkAgent.js:298 | ||
4600 | 693 | msgid "Identity: " | ||
4601 | 694 | msgstr "Identidá:" | ||
4602 | 695 | |||
4603 | 696 | #: ../js/ui/networkAgent.js:300 | ||
4604 | 697 | msgid "Private key password: " | ||
4605 | 698 | msgstr "Clave de la contraseña privada:" | ||
4606 | 699 | |||
4607 | 700 | #: ../js/ui/networkAgent.js:312 | ||
4608 | 701 | msgid "Service: " | ||
4609 | 702 | msgstr "Serviciu:" | ||
4610 | 703 | |||
4611 | 704 | #: ../js/ui/networkAgent.js:341 | ||
4612 | 705 | msgid "Authentication required by wireless network" | ||
4613 | 706 | msgstr "La rede inalámbrica requier autenticación" | ||
4614 | 707 | |||
4615 | 708 | #: ../js/ui/networkAgent.js:342 | ||
4616 | 709 | #, c-format | ||
4617 | 710 | msgid "" | ||
4618 | 711 | "Passwords or encryption keys are required to access the wireless network '%" | ||
4619 | 712 | "s'." | ||
4620 | 713 | msgstr "" | ||
4621 | 714 | "Necesítense contraseñes o claves de cifráu p'acceder a la rede inalámbrica «" | ||
4622 | 715 | "%s»." | ||
4623 | 716 | |||
4624 | 717 | #: ../js/ui/networkAgent.js:346 | ||
4625 | 718 | msgid "Wired 802.1X authentication" | ||
4626 | 719 | msgstr "Autenticación 802.1X cableada" | ||
4627 | 720 | |||
4628 | 721 | #: ../js/ui/networkAgent.js:348 | ||
4629 | 722 | msgid "Network name: " | ||
4630 | 723 | msgstr "Nome de la rede" | ||
4631 | 724 | |||
4632 | 725 | #: ../js/ui/networkAgent.js:353 | ||
4633 | 726 | msgid "DSL authentication" | ||
4634 | 727 | msgstr "Autenticación DSL" | ||
4635 | 728 | |||
4636 | 729 | #: ../js/ui/networkAgent.js:360 | ||
4637 | 730 | msgid "PIN code required" | ||
4638 | 731 | msgstr "Códigu PIN requeríu" | ||
4639 | 732 | |||
4640 | 733 | #: ../js/ui/networkAgent.js:361 | ||
4641 | 734 | msgid "PIN code is needed for the mobile broadband device" | ||
4642 | 735 | msgstr "Necesítase un códigu PIN pal preséu de banda ancha móvil" | ||
4643 | 736 | |||
4644 | 737 | #: ../js/ui/networkAgent.js:362 | ||
4645 | 738 | msgid "PIN: " | ||
4646 | 739 | msgstr "PIN: " | ||
4647 | 740 | |||
4648 | 741 | #: ../js/ui/networkAgent.js:368 | ||
4649 | 742 | msgid "Mobile broadband network password" | ||
4650 | 743 | msgstr "Contraseña de la rede de banda ancha móvil" | ||
4651 | 744 | |||
4652 | 745 | #: ../js/ui/networkAgent.js:369 | ||
4653 | 746 | #, c-format | ||
4654 | 747 | msgid "A password is required to connect to '%s'." | ||
4655 | 748 | msgstr "Requierse una contraseña pa coneutar a «%s»." | ||
4656 | 749 | |||
4657 | 750 | #: ../js/ui/overview.js:91 | ||
4658 | 751 | msgid "Undo" | ||
4659 | 752 | msgstr "Desfacer" | ||
4660 | 753 | |||
4661 | 754 | #: ../js/ui/overview.js:205 | ||
4662 | 755 | msgid "Windows" | ||
4663 | 756 | msgstr "Ventanes" | ||
4664 | 757 | |||
4665 | 758 | #: ../js/ui/overview.js:208 | ||
4666 | 759 | msgid "Applications" | ||
4667 | 760 | msgstr "Aplicaciones" | ||
4668 | 761 | |||
4669 | 762 | #. Translators: this is the name of the dock/favorites area on | ||
4670 | 763 | #. the left of the overview | ||
4671 | 764 | #: ../js/ui/overview.js:230 | ||
4672 | 765 | msgid "Dash" | ||
4673 | 766 | msgstr "Tableru" | ||
4674 | 767 | |||
4675 | 768 | #. TODO - _quit() doesn't really work on apps in state STARTING yet | ||
4676 | 769 | #: ../js/ui/panel.js:539 | ||
4677 | 770 | #, c-format | ||
4678 | 771 | msgid "Quit %s" | ||
4679 | 772 | msgstr "Colar de %s" | ||
4680 | 773 | |||
4681 | 774 | #. Translators: If there is no suitable word for "Activities" | ||
4682 | 775 | #. in your language, you can use the word for "Overview". | ||
4683 | 776 | #: ../js/ui/panel.js:575 | ||
4684 | 777 | msgid "Activities" | ||
4685 | 778 | msgstr "Actividaes" | ||
4686 | 779 | |||
4687 | 780 | #: ../js/ui/panel.js:967 | ||
4688 | 781 | msgid "Top Bar" | ||
4689 | 782 | msgstr "Barra superior" | ||
4690 | 783 | |||
4691 | 784 | #: ../js/ui/placeDisplay.js:120 | ||
4692 | 785 | #, c-format | ||
4693 | 786 | msgid "Failed to unmount '%s'" | ||
4694 | 787 | msgstr "Falló al desmontar «%s»" | ||
4695 | 788 | |||
4696 | 789 | #: ../js/ui/placeDisplay.js:123 | ||
4697 | 790 | msgid "Retry" | ||
4698 | 791 | msgstr "Reintentar" | ||
4699 | 792 | |||
4700 | 793 | #: ../js/ui/placeDisplay.js:163 | ||
4701 | 794 | msgid "Connect to..." | ||
4702 | 795 | msgstr "Coneutar a…" | ||
4703 | 796 | |||
4704 | 797 | #: ../js/ui/placeDisplay.js:375 | ||
4705 | 798 | msgid "PLACES & DEVICES" | ||
4706 | 799 | msgstr "LLUGARES Y PRESEOS" | ||
4707 | 800 | |||
4708 | 801 | #: ../js/ui/polkitAuthenticationAgent.js:72 | ||
4709 | 802 | msgid "Authentication Required" | ||
4710 | 803 | msgstr "Necesítase autenticación" | ||
4711 | 804 | |||
4712 | 805 | #: ../js/ui/polkitAuthenticationAgent.js:106 | ||
4713 | 806 | msgid "Administrator" | ||
4714 | 807 | msgstr "Alministrador" | ||
4715 | 808 | |||
4716 | 809 | #: ../js/ui/polkitAuthenticationAgent.js:175 | ||
4717 | 810 | msgid "Authenticate" | ||
4718 | 811 | msgstr "Autenticar" | ||
4719 | 812 | |||
4720 | 813 | #. Translators: "that didn't work" refers to the fact that the | ||
4721 | 814 | #. * requested authentication was not gained; this can happen | ||
4722 | 815 | #. * because of an authentication error (like invalid password), | ||
4723 | 816 | #. * for instance. | ||
4724 | 817 | #: ../js/ui/polkitAuthenticationAgent.js:256 | ||
4725 | 818 | msgid "Sorry, that didn't work. Please try again." | ||
4726 | 819 | msgstr "Inténtalo de nueves," | ||
4727 | 820 | |||
4728 | 821 | #: ../js/ui/polkitAuthenticationAgent.js:268 | ||
4729 | 822 | msgid "Password:" | ||
4730 | 823 | msgstr "Contraseña:" | ||
4731 | 824 | |||
4732 | 825 | #. Translators: this MUST be either "toggle-switch-us" | ||
4733 | 826 | #. (for toggle switches containing the English words | ||
4734 | 827 | #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||
4735 | 828 | #. switches containing "◯" and "|"). Other values will | ||
4736 | 829 | #. simply result in invisible toggle switches. | ||
4737 | 830 | #: ../js/ui/popupMenu.js:731 | ||
4738 | 831 | msgid "toggle-switch-us" | ||
4739 | 832 | msgstr "toggle-switch-intl" | ||
4740 | 833 | |||
4741 | 834 | #: ../js/ui/runDialog.js:208 | ||
4742 | 835 | msgid "Please enter a command:" | ||
4743 | 836 | msgstr "Introduz un comandu:" | ||
4744 | 837 | |||
4745 | 838 | #: ../js/ui/searchDisplay.js:340 | ||
4746 | 839 | msgid "Searching..." | ||
4747 | 840 | msgstr "Guetando…" | ||
4748 | 841 | |||
4749 | 842 | #: ../js/ui/searchDisplay.js:363 | ||
4750 | 843 | msgid "No matching results." | ||
4751 | 844 | msgstr "Nun s'atopó dengún resultáu coincidente." | ||
4752 | 845 | |||
4753 | 846 | #: ../js/ui/shellMountOperation.js:285 | ||
4754 | 847 | msgid "Wrong password, please try again" | ||
4755 | 848 | msgstr "Contraseña incorreuta; inténtalo de nueves" | ||
4756 | 849 | |||
4757 | 850 | #: ../js/ui/status/accessibility.js:60 | ||
4758 | 851 | msgid "Zoom" | ||
4759 | 852 | msgstr "Ampliación" | ||
4760 | 853 | |||
4761 | 854 | #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, | ||
4762 | 855 | #. 'screen-reader-enabled'); | ||
4763 | 856 | #. this.menu.addMenuItem(screenReader); | ||
4764 | 857 | #: ../js/ui/status/accessibility.js:71 | ||
4765 | 858 | msgid "Screen Keyboard" | ||
4766 | 859 | msgstr "Tecláu en pantalla" | ||
4767 | 860 | |||
4768 | 861 | #: ../js/ui/status/accessibility.js:75 | ||
4769 | 862 | msgid "Visual Alerts" | ||
4770 | 863 | msgstr "Alertes visuales" | ||
4771 | 864 | |||
4772 | 865 | #: ../js/ui/status/accessibility.js:78 | ||
4773 | 866 | msgid "Sticky Keys" | ||
4774 | 867 | msgstr "Tecles persistentes" | ||
4775 | 868 | |||
4776 | 869 | #: ../js/ui/status/accessibility.js:81 | ||
4777 | 870 | msgid "Slow Keys" | ||
4778 | 871 | msgstr "Tecles lentes" | ||
4779 | 872 | |||
4780 | 873 | #: ../js/ui/status/accessibility.js:84 | ||
4781 | 874 | msgid "Bounce Keys" | ||
4782 | 875 | msgstr "Refugu de tecles" | ||
4783 | 876 | |||
4784 | 877 | #: ../js/ui/status/accessibility.js:87 | ||
4785 | 878 | msgid "Mouse Keys" | ||
4786 | 879 | msgstr "Tecles del mur" | ||
4787 | 880 | |||
4788 | 881 | #: ../js/ui/status/accessibility.js:91 | ||
4789 | 882 | msgid "Universal Access Settings" | ||
4790 | 883 | msgstr "Configuración del accesu universal" | ||
4791 | 884 | |||
4792 | 885 | #: ../js/ui/status/accessibility.js:141 | ||
4793 | 886 | msgid "High Contrast" | ||
4794 | 887 | msgstr "Contraste altu" | ||
4795 | 888 | |||
4796 | 889 | #: ../js/ui/status/accessibility.js:178 | ||
4797 | 890 | msgid "Large Text" | ||
4798 | 891 | msgstr "Testu grande" | ||
4799 | 892 | |||
4800 | 893 | #: ../js/ui/status/bluetooth.js:39 ../js/ui/status/bluetooth.js:261 | ||
4801 | 894 | #: ../js/ui/status/bluetooth.js:347 ../js/ui/status/bluetooth.js:381 | ||
4802 | 895 | #: ../js/ui/status/bluetooth.js:421 ../js/ui/status/bluetooth.js:454 | ||
4803 | 896 | msgid "Bluetooth" | ||
4804 | 897 | msgstr "Bluetooth" | ||
4805 | 898 | |||
4806 | 899 | #: ../js/ui/status/bluetooth.js:52 | ||
4807 | 900 | msgid "Visibility" | ||
4808 | 901 | msgstr "Visibilidá" | ||
4809 | 902 | |||
4810 | 903 | #: ../js/ui/status/bluetooth.js:66 | ||
4811 | 904 | msgid "Send Files to Device..." | ||
4812 | 905 | msgstr "Unviar ficheros al preséu…" | ||
4813 | 906 | |||
4814 | 907 | #: ../js/ui/status/bluetooth.js:67 | ||
4815 | 908 | msgid "Set up a New Device..." | ||
4816 | 909 | msgstr "Configurar un preséu nuevu…" | ||
4817 | 910 | |||
4818 | 911 | #: ../js/ui/status/bluetooth.js:91 | ||
4819 | 912 | msgid "Bluetooth Settings" | ||
4820 | 913 | msgstr "Configuración de Bluetooth" | ||
4821 | 914 | |||
4822 | 915 | #. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill | ||
4823 | 916 | #: ../js/ui/status/bluetooth.js:111 | ||
4824 | 917 | msgid "hardware disabled" | ||
4825 | 918 | msgstr "hardware desactiváu" | ||
4826 | 919 | |||
4827 | 920 | #: ../js/ui/status/bluetooth.js:208 | ||
4828 | 921 | msgid "Connection" | ||
4829 | 922 | msgstr "Conexón" | ||
4830 | 923 | |||
4831 | 924 | #: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486 | ||
4832 | 925 | msgid "disconnecting..." | ||
4833 | 926 | msgstr "desconeutando…" | ||
4834 | 927 | |||
4835 | 928 | #: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492 | ||
4836 | 929 | msgid "connecting..." | ||
4837 | 930 | msgstr "coneutando…" | ||
4838 | 931 | |||
4839 | 932 | #: ../js/ui/status/bluetooth.js:248 | ||
4840 | 933 | msgid "Send Files..." | ||
4841 | 934 | msgstr "Unviar ficheros…" | ||
4842 | 935 | |||
4843 | 936 | #: ../js/ui/status/bluetooth.js:253 | ||
4844 | 937 | msgid "Browse Files..." | ||
4845 | 938 | msgstr "Desaminar ficheros…" | ||
4846 | 939 | |||
4847 | 940 | #: ../js/ui/status/bluetooth.js:262 | ||
4848 | 941 | msgid "Error browsing device" | ||
4849 | 942 | msgstr "Fallu al desaminar el preséu" | ||
4850 | 943 | |||
4851 | 944 | #: ../js/ui/status/bluetooth.js:263 | ||
4852 | 945 | #, c-format | ||
4853 | 946 | msgid "The requested device cannot be browsed, error is '%s'" | ||
4854 | 947 | msgstr "Nun se pue desaminar el preséu solicitáu, el fallu ye «%s»" | ||
4855 | 948 | |||
4856 | 949 | #: ../js/ui/status/bluetooth.js:271 | ||
4857 | 950 | msgid "Keyboard Settings" | ||
4858 | 951 | msgstr "Configuración del tecláu" | ||
4859 | 952 | |||
4860 | 953 | #: ../js/ui/status/bluetooth.js:274 | ||
4861 | 954 | msgid "Mouse Settings" | ||
4862 | 955 | msgstr "Axustes del mur…" | ||
4863 | 956 | |||
4864 | 957 | #: ../js/ui/status/bluetooth.js:279 ../js/ui/status/volume.js:62 | ||
4865 | 958 | msgid "Sound Settings" | ||
4866 | 959 | msgstr "Configuración del soníu" | ||
4867 | 960 | |||
4868 | 961 | #: ../js/ui/status/bluetooth.js:382 | ||
4869 | 962 | #, c-format | ||
4870 | 963 | msgid "Authorization request from %s" | ||
4871 | 964 | msgstr "Solicitú d'autorización de %s" | ||
4872 | 965 | |||
4873 | 966 | #: ../js/ui/status/bluetooth.js:388 | ||
4874 | 967 | #, c-format | ||
4875 | 968 | msgid "Device %s wants access to the service '%s'" | ||
4876 | 969 | msgstr "El preséu %s quier acceder al serviciu «%s»" | ||
4877 | 970 | |||
4878 | 971 | #: ../js/ui/status/bluetooth.js:390 | ||
4879 | 972 | msgid "Always grant access" | ||
4880 | 973 | msgstr "Conceder accesu siempre" | ||
4881 | 974 | |||
4882 | 975 | #: ../js/ui/status/bluetooth.js:391 | ||
4883 | 976 | msgid "Grant this time only" | ||
4884 | 977 | msgstr "Conceder namái esta vegada" | ||
4885 | 978 | |||
4886 | 979 | #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1200 | ||
4887 | 980 | msgid "Reject" | ||
4888 | 981 | msgstr "Refugar" | ||
4889 | 982 | |||
4890 | 983 | #: ../js/ui/status/bluetooth.js:422 | ||
4891 | 984 | #, c-format | ||
4892 | 985 | msgid "Pairing confirmation for %s" | ||
4893 | 986 | msgstr "Confirmación d'emparexamientu pa «%s»" | ||
4894 | 987 | |||
4895 | 988 | #: ../js/ui/status/bluetooth.js:428 ../js/ui/status/bluetooth.js:462 | ||
4896 | 989 | #, c-format | ||
4897 | 990 | msgid "Device %s wants to pair with this computer" | ||
4898 | 991 | msgstr "El preséu «%s» quier emparexase con esti equipu" | ||
4899 | 992 | |||
4900 | 993 | #: ../js/ui/status/bluetooth.js:429 | ||
4901 | 994 | #, c-format | ||
4902 | 995 | msgid "Please confirm whether the PIN '%s' matches the one on the device." | ||
4903 | 996 | msgstr "Confirma que'l PIN amosáu en «%s» concasa col del preséu." | ||
4904 | 997 | |||
4905 | 998 | #: ../js/ui/status/bluetooth.js:431 | ||
4906 | 999 | msgid "Matches" | ||
4907 | 1000 | msgstr "Concasa" | ||
4908 | 1001 | |||
4909 | 1002 | #: ../js/ui/status/bluetooth.js:432 | ||
4910 | 1003 | msgid "Does not match" | ||
4911 | 1004 | msgstr "Nun concasa" | ||
4912 | 1005 | |||
4913 | 1006 | #: ../js/ui/status/bluetooth.js:455 | ||
4914 | 1007 | #, c-format | ||
4915 | 1008 | msgid "Pairing request for %s" | ||
4916 | 1009 | msgstr "Solicitú d'emparexamientu pa «%s»" | ||
4917 | 1010 | |||
4918 | 1011 | #: ../js/ui/status/bluetooth.js:463 | ||
4919 | 1012 | msgid "Please enter the PIN mentioned on the device." | ||
4920 | 1013 | msgstr "Introduz el PIN mencionáu nel preséu." | ||
4921 | 1014 | |||
4922 | 1015 | #: ../js/ui/status/bluetooth.js:479 | ||
4923 | 1016 | msgid "OK" | ||
4924 | 1017 | msgstr "Aceutar" | ||
4925 | 1018 | |||
4926 | 1019 | #: ../js/ui/status/keyboard.js:73 | ||
4927 | 1020 | msgid "Show Keyboard Layout" | ||
4928 | 1021 | msgstr "Amosar la distribución del tecláu" | ||
4929 | 1022 | |||
4930 | 1023 | #: ../js/ui/status/keyboard.js:78 | ||
4931 | 1024 | msgid "Region and Language Settings" | ||
4932 | 1025 | msgstr "Configuración de rexón y llingua" | ||
4933 | 1026 | |||
4934 | 1027 | #: ../js/ui/status/network.js:97 | ||
4935 | 1028 | msgid "<unknown>" | ||
4936 | 1029 | msgstr "<desconocíu>" | ||
4937 | 1030 | |||
4938 | 1031 | #. Translators: this indicates that wireless or wwan is disabled by hardware killswitch | ||
4939 | 1032 | #: ../js/ui/status/network.js:285 | ||
4940 | 1033 | msgid "disabled" | ||
4941 | 1034 | msgstr "desactivada" | ||
4942 | 1035 | |||
4943 | 1036 | #. Translators: this is for network devices that are physically present but are not | ||
4944 | 1037 | #. under NetworkManager's control (and thus cannot be used in the menu) | ||
4945 | 1038 | #: ../js/ui/status/network.js:484 | ||
4946 | 1039 | msgid "unmanaged" | ||
4947 | 1040 | msgstr "non xestionada" | ||
4948 | 1041 | |||
4949 | 1042 | #. Translators: this is for network connections that require some kind of key or password | ||
4950 | 1043 | #: ../js/ui/status/network.js:495 | ||
4951 | 1044 | msgid "authentication required" | ||
4952 | 1045 | msgstr "necesítase autenticación" | ||
4953 | 1046 | |||
4954 | 1047 | #. Translators: this is for devices that require some kind of firmware or kernel | ||
4955 | 1048 | #. module, which is missing | ||
4956 | 1049 | #: ../js/ui/status/network.js:505 | ||
4957 | 1050 | msgid "firmware missing" | ||
4958 | 1051 | msgstr "falta'l «firmware»" | ||
4959 | 1052 | |||
4960 | 1053 | #. Translators: this is for wired network devices that are physically disconnected | ||
4961 | 1054 | #: ../js/ui/status/network.js:512 | ||
4962 | 1055 | msgid "cable unplugged" | ||
4963 | 1056 | msgstr "cable desconeutáu" | ||
4964 | 1057 | |||
4965 | 1058 | #. Translators: this is for a network device that cannot be activated (for example it | ||
4966 | 1059 | #. is disabled by rfkill, or it has no coverage | ||
4967 | 1060 | #: ../js/ui/status/network.js:517 | ||
4968 | 1061 | msgid "unavailable" | ||
4969 | 1062 | msgstr "non disponible" | ||
4970 | 1063 | |||
4971 | 1064 | #: ../js/ui/status/network.js:519 | ||
4972 | 1065 | msgid "connection failed" | ||
4973 | 1066 | msgstr "falló la conexón" | ||
4974 | 1067 | |||
4975 | 1068 | #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523 | ||
4976 | 1069 | msgid "More..." | ||
4977 | 1070 | msgstr "Más…" | ||
4978 | 1071 | |||
4979 | 1072 | #. TRANSLATORS: this is the indication that a connection for another logged in user is active, | ||
4980 | 1073 | #. and we cannot access its settings (including the name) | ||
4981 | 1074 | #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458 | ||
4982 | 1075 | msgid "Connected (private)" | ||
4983 | 1076 | msgstr "Coneutada (privada)" | ||
4984 | 1077 | |||
4985 | 1078 | #: ../js/ui/status/network.js:689 | ||
4986 | 1079 | msgid "Auto Ethernet" | ||
4987 | 1080 | msgstr "Ethernet automática" | ||
4988 | 1081 | |||
4989 | 1082 | #: ../js/ui/status/network.js:753 | ||
4990 | 1083 | msgid "Auto broadband" | ||
4991 | 1084 | msgstr "Banda ancha automática" | ||
4992 | 1085 | |||
4993 | 1086 | #: ../js/ui/status/network.js:756 | ||
4994 | 1087 | msgid "Auto dial-up" | ||
4995 | 1088 | msgstr "Marcáu automáticu" | ||
4996 | 1089 | |||
4997 | 1090 | #. TRANSLATORS: this the automatic wireless connection name (including the network name) | ||
4998 | 1091 | #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470 | ||
4999 | 1092 | #, c-format | ||
5000 | 1093 | msgid "Auto %s" |
Hi, bugs need to be fixed in the current development release (precise) before being proposed against a stable release. Could you propose a merge with https:/ /code.launchpad .net/~ubuntu- desktop/ gnome-shell/ ubuntu instead?