Compare commits

...

240 Commits

Author SHA1 Message Date
672ca8850a windowManager: add animations for fullscreen and unfullscreen
We use the newly introduced feature from Mutter to hook up our own
fullscreen and unfullscreen animations.
To give the illusion of a transition as smooth as possible, we create a
snapshot of the current contents of the actor before its state is
changed, and crossfade between the two states while the size changes.

https://bugzilla.gnome.org/show_bug.cgi?id=707248
2015-10-12 15:40:30 -04:00
674ae262c8 Change incorrect parameter names
These were renamed a while ago.
2015-10-12 15:38:44 -04:00
db297e7fdb Don't crash on accesses to stale window-backed apps
The JS code could still be holding on to a reference to a window-backed app
after all windows have vanished. (For example, the dash queues an idle to
refetch apps and display them.) Avoid dying with an error message if we
attempt to activate or otherwise manipulate such a window.

https://bugzilla.gnome.org/show_bug.cgi?id=674799
2015-10-11 15:31:39 -04:00
d57c146514 Updated Danish translation by scootergrisen 2015-10-11 18:34:51 +02:00
ec5a4328e3 Updated Danish translation 2015-10-11 16:30:56 +00:00
e4ee72c481 Update Arabic translation 2015-10-10 15:27:42 +04:00
31f1e9ff0a autorunManager: Do not mark the notification CRITICAL
There is nothing particularly critical about this notification, it
was only marked as such to get certain behavior like auto-expanding
and sticking-around to be acknowledged by the user (as it offers
more actions than the summary notification, so it is frustrating
when it goes away because it was missed).
As all notifications will now stay visible until we are sure the
users has seen them, the latter reasoning no longer applies.
Auto-expansion doesn't appear too important and may even be considered
annoying by users, so remove the CRITICAL hint now.

https://bugzilla.gnome.org/show_bug.cgi?id=657923
2015-10-09 15:55:40 +02:00
d6c049a8c9 altTab: Don't error out if we don't have windows for an app
We are currently erroring out when the tab chain doesn't contain at
least one window for an app which might happen for windows that don't
take focus like xeyes. This leaves us in a state where we can't show
the switcher at all. Let's just ignore these apps instead of looking
broken.
2015-10-08 18:27:07 +02:00
44047ac881 shell-glsl-quad: Set the pipeline blend string explicitly
The default pipeline color is opaque white and blending is turned
off. If we only draw with that color (e.g. because animations are
disabled and we're always drawn with opacity == 255), blending is kept
disabled since cogl_pipeline_set_color() returns early if the color
doesn't change from what was there before.

In our case we always want blending to be enabled which we can achieve
by setting the blending string ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=755827
2015-10-08 18:27:07 +02:00
464d5d8a13 st-button: Don't rely on hover to accept clicks
Since commit 4f1f226828 we only consider buttons clicked when the
release event had a corresponding press event. However as we use
the hover state to check whether a release event actually occurred
on the button, we dismiss any clicks in cases where we missed the
enter event - most likely due to some other actor holding a grab.
Instead, check whether the button contains the event's source, which
should be less error-prone.

https://bugzilla.gnome.org/show_bug.cgi?id=748919
2015-10-07 15:05:36 +02:00
29811a85dc Updated Portuguese translation 2015-10-07 06:07:27 +00:00
36ee4e6c3b panel: Hide app menu when disabled by settings
While the GtkSettings::gtk-shell-shows-app-menu property is meant to
reflect a desktop capability (i.e. in the GNOME case: the app menu is
shown in the top bar), it is possible for users to overwrite it.
Respect the setting and actually hide the menu in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=745919
2015-10-05 14:08:20 +02:00
2036e4c85c st: Remove wrong indentation
GObject-Introspection started warning for wrong annotations, and
StGenericAccessible::set-current-value has a return value annotation
even if it returns nothing. This generates the warning:

src/st/st-generic-accessible.c:146: Warning: St:
StGenericAccessible::set-current-value: invalid return annotation

Which, coupled with fatal warnings, breaks the Shell build.
2015-10-05 12:04:55 +01:00
f24034de84 Updated Czech translation 2015-10-05 11:56:30 +02:00
522ff86081 Updated Spanish translation 2015-10-05 07:46:19 +00:00
669e3c8ed9 Updated Spanish translation 2015-10-05 07:41:45 +00:00
ce850f464c Updated Kazakh translation 2015-10-04 12:00:33 +00:00
03eaa61cef Updated Portuguese translation 2015-10-04 07:34:03 +00:00
e10e953d24 Updated Finnish translation 2015-10-04 07:22:29 +00:00
2b47bb3d82 Updated Serbian Latin translation 2015-10-01 23:39:29 +00:00
73d819116c Updated Serbian translation 2015-10-01 23:38:05 +00:00
c8dd984663 Updated German translation 2015-10-01 20:43:16 +00:00
6087eb6d0e Updated Irish translation 2015-09-30 22:30:18 -06:00
97b43d1d36 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2015-10-01 07:22:35 +07:00
57ebadbaf8 Updated Lithuanian translation 2015-09-30 22:17:38 +03:00
cad7bb1151 Updated Greek translation 2015-09-30 10:38:28 +03:00
9a376d47c5 Updated Brazilian Portuguese translation 2015-09-29 19:09:31 +00:00
b79adc05f4 Updated Russian translation 2015-09-29 19:07:25 +00:00
f765c5e319 Updated Korean translation 2015-09-29 19:14:47 +09:00
edc445c0c9 Updated Italian translation 2015-09-29 07:03:06 +00:00
ab6b0f3f7f Updated Slovak translation 2015-09-29 05:32:58 +00:00
5e7902e733 Updated Polish translation 2015-09-29 00:53:38 +02:00
f9f821aa55 Updated Swedish translation 2015-09-28 22:40:28 +00:00
9ed4b2a5ae Updated Galician translation 2015-09-28 22:34:41 +00:00
0130ced790 Updated French translation 2015-09-28 21:39:48 +00:00
8dab07af82 Update Czech translation
Fixes #737598.
2015-09-28 17:10:10 -04:00
f6cd3fa5ed panel: improve string for system menu, bug 755755
Refer to the system menu in the top bar as "System" rather than "Settings" as
it contains more than just settings and "Settings" is already used for the
settings panel. "System" is also used elsewhere, so include context for
translators.
2015-09-28 16:29:12 -04:00
faae1a028e browser-plugin: try to avoid a crash
Quite tempted to delete this unmaintained and unreliable plugin, but I
can stand it not working so long as it at least stops crashing, so let's
try this first.

Hopefully mitigates bug #737932.
2015-09-27 13:14:08 -05:00
f5e32184fe theme: Update sass submodule to pick up menu size changes
https://bugzilla.gnome.org/show_bug.cgi?id=708472
2015-09-25 20:24:32 +02:00
18c7138237 Check error of g_dbus_proxy_new_sync call
Otherwise errors pile up and we crash later on.
2015-09-24 13:33:47 -04:00
3f0fbae7e2 shell_dbus_acquire_name: Don't leak the result
The GVariant returned by g_dbus_proxy_call_sync must be
freed with g_variant_unref, to prevent a leak.
2015-09-24 13:33:47 -04:00
7f1a258ff9 shell_dbus_acquire_name: Don't leak error
If fatal is not set, we return from this function in the error
case. Don't leak the GError if that happens.
2015-09-24 13:33:45 -04:00
35b38d5cb2 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2015-09-24 15:16:45 +07:00
09e8a437d4 Update Arabic translation 2015-09-23 23:53:04 +02:00
d2bedcc182 build: Replace deprecated GNOME_COMPILE_WARNINGS macro 2015-09-23 21:32:50 +02:00
84eda6e459 st: Don't avoid parameter list
Meh, C ...
2015-09-23 21:32:50 +02:00
f5e7530fc7 st: Add default case to switch statements 2015-09-23 21:32:50 +02:00
f983b34784 st: Handle all possible enum values in switch statements 2015-09-23 21:32:50 +02:00
36bbe64898 st: Fix constness in assignment 2015-09-23 21:32:50 +02:00
627a393ed6 st: Don't mix declarations and code 2015-09-23 21:32:50 +02:00
a025b151ef st: Don't shadow existing variables 2015-09-23 21:32:50 +02:00
18b6f13395 st: Fix signed-unsigned comparisons 2015-09-23 21:32:50 +02:00
051413550f st: Don't duplicate declarations from G_DEFINE_TYPE 2015-09-23 21:32:50 +02:00
3e10574736 shell: Add default case to switch statements
... to shut up a compiler warning.
2015-09-23 21:32:50 +02:00
9a3041004b shell: Don't shadow existing variables 2015-09-23 21:32:50 +02:00
87f71b8ce1 shell: Don't mix declarations and code 2015-09-23 21:32:50 +02:00
825146f1e3 shell: Fix signed-unsigned comparisons 2015-09-23 21:32:50 +02:00
52995416fd shell: Don't avoid parameter list
Meh, C ...
2015-09-23 21:32:50 +02:00
6c43d0247a main: Fix constness mismatches 2015-09-23 21:32:49 +02:00
9aa98d9f0c menutracker: Don't shadow existing variables 2015-09-23 21:32:49 +02:00
c3a29d6df1 theme-node: Rewrite switch statement
Some compilers warn about unhandled enum values in switch statements,
so don't use one where only two out of 21 possible values make sense.
2015-09-23 21:32:49 +02:00
82f84416a9 recorder: Rewrite switch statement
Avoid compiler warnings about unhandled enum values by using a
regular if-else statement.
2015-09-23 21:32:49 +02:00
9dd3162dbe recorder-src: Rewrite switch statement
Avoid compiler warnings about unhandled enum values by using a
regular if-else statement.
2015-09-23 21:32:49 +02:00
7ef519756a Update gvc submodule 2015-09-23 21:32:49 +02:00
3bbe74d1c1 popupMenu: Set ImageMenuItem's label-actor
While we don't use image menu items ourselves, extensions might,
so make sure they are accessible out of the box.
Spotted by Jay Strict.
2015-09-23 14:20:38 +02:00
409f6718b8 calendar: Disconnect all Notification signals on NotificationMessage destruction
The destroy signal handler is kept connected despite the NotificationMessage
being destroyed, which leaves dangling NotificationMessage objects that will
be mass destroyed when the Notification object these depend upon is finally
destroyed.

Depending on the amount of accumulated NotificationMessages, this may lead
to temporary freezes or other more funky issues when recursion limits are
hit.

https://bugzilla.gnome.org/show_bug.cgi?id=755425
2015-09-22 18:16:16 +02:00
9c0e179080 Updated Serbian Latin translation 2015-09-22 11:49:36 +00:00
b3b278d41f Updated Serbian translation 2015-09-22 11:48:55 +00:00
0f466dbafb Bump version to 3.18.0
Update NEWS.
2015-09-21 22:22:18 +02:00
fbb4a9a3a6 Updated Latvian translation 2015-09-20 22:01:15 +03:00
8ddae5cd71 Updated Swedish translation 2015-09-20 17:28:59 +00:00
b0915c7b60 Updated Brazilian Portuguese translation 2015-09-20 14:01:58 +00:00
831bb4e334 Updated Indonesian translation 2015-09-19 12:35:20 +00:00
4e025506fa Updated Irish translation 2015-09-18 10:43:04 -06:00
abccf451bf Updated Danish translation 2015-09-18 17:05:37 +02:00
14954117c0 Updated Indonesian translation 2015-09-17 01:19:59 +00:00
629f408fe5 Bump version to 3.17.92
Update NEWS.
2015-09-16 17:20:30 +02:00
86c6ab3c01 Updated Italian translation 2015-09-15 11:34:41 +00:00
4a6ff94701 Updated Czech translation 2015-09-14 16:04:24 +02:00
e480b08d58 Updated Japanese translation 2015-09-14 00:20:39 +09:00
caf53861d1 Updated Kazakh translation 2015-09-12 16:08:38 +00:00
d0480648ba Updated Persian translation 2015-09-11 23:55:57 +04:30
eb8cfe799f Finnish translation update 2015-09-10 18:46:33 +03:00
b9f2541880 Updated Norwegian bokmål translation. 2015-09-07 19:31:59 +02:00
bde9b08bfe Updated Norwegian bokmål translation. 2015-09-07 19:29:28 +02:00
8a4c862633 background: fix a race condition when loading several animations
When loading several animations at the same time, the last call
overrides the result for all of them.

This commit caches all animations separately based on the source's
schemas.

https://bugzilla.gnome.org/show_bug.cgi?id=741453
2015-09-07 06:51:42 +02:00
785c90f4b8 background: fix indentation 2015-09-07 06:49:55 +02:00
dd6a11e4c7 Updated German translation 2015-09-05 19:42:18 +00:00
64e9503adb Updated Korean translation 2015-09-06 02:06:45 +09:00
36c885bf34 style: Update from sass 2015-09-04 19:15:42 +02:00
ad7cde805d style: Update high-contrast theme
This was missed in fa0e54edbb ...
2015-09-04 18:56:11 +02:00
2c2c67f4dc Fix accidental gnome-shell-sass downgrade
... from commit 030a22d795.
2015-09-04 18:46:11 +02:00
cc4f8dfab0 Updated Kazakh translation 2015-09-04 15:51:16 +00:00
0fb13608c5 Bump version to 3.17.91
Update NEWS.
2015-09-03 15:54:26 +02:00
09dbe17da0 loginDialog: Limit user list to the available height
We currently will always allocate the user list's preferred size, so it
will grow indefinitely and never scroll; limit the height instead to
get the desired scrolling behavior when necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=754525
2015-09-03 15:45:39 +02:00
fdd347c9aa po: Update French translation (remove "à large bande") 2015-09-01 11:11:38 +02:00
572095515b Updated French translation 2015-09-01 08:17:16 +00:00
f2d4aa0822 authPrompt: hide/stop spinner after verfiication completes
When the user successfully types their password, we should hide
the spinner from the button well right away, so it doesn't
consume resources until reset (which may happen significantly later
if the user is vt switched away)

https://bugzilla.gnome.org/show_bug.cgi?id=753891
2015-08-31 15:24:27 -04:00
030a22d795 authPrompt: stop spinner after its hidden
The code previously tried to stop spinner after it was hidden, but
due to an incorrect check was only stoppig it after it was shown.

Also, it was only stopping after hiding due to an animation, and
failing to stop it in the non-animated case.

This left the spinner hidden and running while VT switched away
from the login screen, only stopping when the auth prompt was
reset when switching back.

https://bugzilla.gnome.org/show_bug.cgi?id=753891
2015-08-31 15:19:26 -04:00
c70afcdb44 Updated Hungarian translation 2015-08-31 17:42:42 +00:00
526d6c03b8 Updated Hebrew translation 2015-08-30 21:17:10 +03:00
261b55300d Punjabi Translation updated 2015-08-30 09:28:47 -05:00
e13bfd9a17 Updated Greek translation 2015-08-30 12:04:22 +03:00
e096d18bac Updated Hebrew translation 2015-08-27 23:49:12 +03:00
9460f0e4f3 Updated Dutch translation Master 3.18 2015-08-26 16:45:43 +02:00
e6591f52ac Updated Galician translations 2015-08-26 00:34:43 +02:00
07e3d1fd5c Updated Galician translations 2015-08-26 00:10:39 +02:00
1fbc6b24c8 Updated Turkish translation 2015-08-25 20:05:27 +00:00
982777be94 Updated Chinese (Taiwan) translation 2015-08-25 13:00:33 +00:00
6610a34ad0 Updated Spanish translation 2015-08-25 11:30:58 +02:00
bfa8a0441a Updated Spanish translation 2015-08-25 11:05:27 +02:00
7723622ec7 Updated Portuguese translation 2015-08-25 05:18:36 +00:00
6bcc8c70ef Updated Polish translation 2015-08-24 15:32:49 +02:00
d114d5f95a Fixes to Catalan translation 2015-08-21 18:25:30 +02:00
b5c734da42 Updated Slovak translation 2015-08-21 08:43:23 +00:00
2077bb94c1 Updated Russian translation 2015-08-20 19:58:12 +00:00
65a4ee7fb4 Updated Lithuanian translation 2015-08-20 22:37:07 +03:00
debf293298 Update Catalan translation 2015-08-20 19:25:14 +02:00
a0df3e7d1e network: Unify capitalization in newly changed strings
After fa0e54edbb some strings were inconsistent.
2015-08-20 17:07:46 +02:00
0d67c2d164 Updated Slovak translation 2015-08-20 12:29:10 +00:00
682bd7b622 Bump version to 3.17.90
Update NEWS.
2015-08-20 13:53:36 +02:00
fa0e54edbb status: Refine system status menu
* switch to a one-column layout (and adjust strings/widths
   accordingly
 * remove separator before system menu
 * add link to account settings to user submenu for consistency

https://bugzilla.gnome.org/show_bug.cgi?id=751377
2015-08-20 13:53:36 +02:00
5a0b209663 build: Bump EDS requirement to 3.17.2
In conjunction with 444fa2e0ab
2015-08-11 16:58:22 +02:00
7e8859fd0e Updated Brazilian Portuguese translation 2015-08-10 23:32:43 +00:00
444fa2e0ab calendar-server: Adjust to EDS service version bump 2015-08-10 17:30:38 +02:00
a31455b921 Updated Turkish translation 2015-08-09 17:03:20 +00:00
ac0213a516 viewSelector: Make the compose key focus the search entry
This way composed characters can be used to start searches.

https://bugzilla.gnome.org/show_bug.cgi?id=753320
2015-08-07 15:34:34 +02:00
45a6e2c305 viewSelector: Make backspace focus the search entry
Commit fb0cf64536 regressed this because
there's no unicode character for backspace.

https://bugzilla.gnome.org/show_bug.cgi?id=753319
2015-08-07 15:34:34 +02:00
11cbd396c0 calendar: Tweak message list style
* make icons smaller
 * use small font size in body
 * add some spacing between secondary item and title

https://bugzilla.gnome.org/show_bug.cgi?id=749958
2015-08-05 17:34:11 +02:00
a343445cd2 calendar: Vertically center message icon rather than top-align it
... as requested by the designers.

https://bugzilla.gnome.org/show_bug.cgi?id=749958
2015-08-05 17:33:19 +02:00
be3d62487c calendar: Minor cleanup
Add a constant for the icon size used in message list entries rather
than hardcoding it twice.

https://bugzilla.gnome.org/show_bug.cgi?id=749958
2015-08-05 17:33:19 +02:00
58905bd01a telepathyClient: Use protocol-specific policy
Since commit 79c04c93e4, we launch Polari instead of Empathy when
activating a chat notification for an IRC channel. It therefore makes
sense to follow Polari's notification policy for those notifications
rather than Empathy's.

https://bugzilla.gnome.org/show_bug.cgi?id=752881
2015-08-05 17:22:10 +02:00
08506eac2d gdm: clear user verifier when finished with it
We only need the user verifier for the purpose of user verification.
Once it's complete we should clear it so it doesn't get in the way
later.

This fixes a bug introduced in commit 3c8c5a5570 that leads to the
user session crashing when the login screen is reactivated.

https://bugzilla.gnome.org/show_bug.cgi?id=753181
2015-08-05 09:40:17 -04:00
02c6b0374d gdm: make user list fade-in on vt switch more reliable
We fade out the authentication prompt when a user successfully
logs into a user session. We reset it and fade it back in when
the user switches back to the login screen VT.

The problem is, we only fade it back in if the auth prompt status is
VERIFICATION_SUCCEEDED.  It's possible for it to be NOT_VERIFYING
if the authprompt gets reset for some other reason in the interim.

This commit changes the check to be more precise. We now only skip
the fade-in, if we're already faded in, and we only skip the reset if
we're already reset.

https://bugzilla.gnome.org/show_bug.cgi?id=753181
2015-08-05 09:40:15 -04:00
0722c06275 modalDialog: Match gtk+ buttons style
Follow the design we have in gtk+ for buttons dialogs,
which are at the bottom and they expand full width, having
the same amount of space for each one.

Also, since this removes any space for non-button widgets
in the button area, move the spinner present in the auth prompt
dialog next to the password entry.

https://bugzilla.gnome.org/show_bug.cgi?id=746108
2015-08-05 14:44:47 +02:00
17a4044d97 data: Revert accidental submodule change 2015-08-05 14:24:42 +02:00
27a7194634 spinner: use a 60fps spinner
- sync with gtk+ and provide a fluid spinner

https://bugzilla.gnome.org/show_bug.cgi?id=753064
2015-08-05 13:44:32 +02:00
d73f560bcc Update Catalan translation 2015-08-02 22:43:05 +02:00
e92f43b83e shell: Fix C99'ism 2015-07-31 20:26:47 +02:00
fed79ce4e6 appDisplay: Handle non-UTF8 filename encodings more gracefully
It may be 2015, but users still stumble upon the occasional .desktop
file that uses a filename encoding other than UTF-8. We currently
fail quite spectacularly in that case by not displaying any apps at
all - handle this case more gracefully, by only filtering out the
offending apps.

https://bugzilla.gnome.org/show_bug.cgi?id=651503
2015-07-31 16:52:42 +02:00
fc45cf03bf windowMenu: Use CHECK ornament rather than DOT
The dot suggests a radio action, while the items are actually toggles;
in the app menu we use checkmarks in that case, so do the same here.
2015-07-30 18:11:43 +02:00
efde11a0f3 theme: Make menu ornament slightly wider
The existing width works well enough for a narrow character like the dot,
but doesn't leave any whitespace for a wider one like the checkmark.

https://bugzilla.gnome.org/show_bug.cgi?id=741366
2015-07-30 17:31:33 +02:00
fb951ff9b5 Updated Norwegian bokmål translation. 2015-07-30 11:36:32 +02:00
f5865e895e magnifier: Avoid caret/focus viewport changes while the pointer moves
If there's a caret or focus move we should delay it until the pointer
is stationary for a little while so as to avoid jittery and spurious
viewport movements.

https://bugzilla.gnome.org/show_bug.cgi?id=752138
2015-07-27 18:04:44 +02:00
b8c2d4c6c7 Updated Czech translation 2015-07-24 22:04:34 +02:00
778ad49ab4 authPrompt: allow cancellation before verification starts
The user should be allowed to cancel if verification hasn't
started yet and they're typing in their username. This
commit changes the authPrompt cancel function to not
ignore such requests.

https://bugzilla.gnome.org/show_bug.cgi?id=752739
2015-07-24 09:44:24 -04:00
fe7dd1305f authPrompt: don't allow next if entry is empty
Normally the user isn't allowed to proceed passed
the username question until they've filled it in.
To ensure this, the authprompt code desensitizes
the next button when the number of characters change to
zero.

Unfortunately it fails to desensitize the next button
up front when the entry starts out empty.

This commit addresses that bug.

https://bugzilla.gnome.org/show_bug.cgi?id=752739
2015-07-24 09:44:23 -04:00
378a3df5ea authPrompt: set next button to next when asking for username
If the next button ever gets set to Sign In, it won't
get reset to next until the next question asked by pam.

This commit ensures it gets reset to Next when asking
for the username.

https://bugzilla.gnome.org/show_bug.cgi?id=752739
2015-07-24 09:44:21 -04:00
e63b81d69c keyboard: Don't watch D-Bus services we won't use
ff1b76f4c7 made gnome-shell stop looking
at the org.gnome.SettingsDaemon.Cursor service's property values, but we
still monitored the service itself.

https://bugzilla.gnome.org/show_bug.cgi?id=752779
2015-07-23 15:07:10 +02:00
c2fa2cdd8a Bump version to 3.17.4
Update NEWS.
2015-07-23 12:48:58 +02:00
6f215427f8 overview: Move comment 2015-07-23 12:43:28 +02:00
67ed4e0570 overview: Remove unused variable 2015-07-23 12:42:45 +02:00
8a15178557 Update Aragonese translation 2015-07-23 12:16:58 +02:00
f3ecfab378 windowManager: Add TouchpadWorkspaceSwitchAction
This object (not really a Clutter.GestureAction) sets up a captured-event
handler, which exclusively looks for 4 finger touchpad swipes, emitting
an ::activated signal under the same terms than WorkspaceSwitchAction.

https://bugzilla.gnome.org/show_bug.cgi?id=752250
2015-07-22 21:19:51 +02:00
804563d5b2 windowManager: refactor WorkspaceSwitchAction callback into separate function
This will be used by the touchpad-specific "action" too, so put it in a
shared place.

https://bugzilla.gnome.org/show_bug.cgi?id=752250
2015-07-22 21:19:33 +02:00
c3e5d983b9 st: Replace deprecated key symbols 2015-07-22 16:00:56 +02:00
d21edcfed5 st: Replace deprecated macros 2015-07-22 16:00:55 +02:00
9b69a45eee Update gvc submodule to the latest commit from master
This avoids unnecessary calls to match_card_port_with_existing_device()
when connecting to a bluetooth device from the shell's top panel.

https://bugzilla.gnome.org/show_bug.cgi?id=752675
2015-07-21 16:11:01 +01:00
7424ee755a shell-app: Stay consistent about application states
When the last interesting window of an app-backed window is removed,
we'll transition it back to STOPPED, but we transition the state and
send out the signal before we clear the running state.

This means that any listeners to the state-changed signal might
encounter a window-backed app that has a running state, but no
windows. If they call, e.g. shell_app_get_name, while in this state,
they'll encounter an assertion fail.
2015-07-16 17:09:39 -07:00
ff664fd1d8 shell-app: Track the starting state correctly
Apps that are starting might have uninteresting windows like splash
screens pop up and then go away (like LibreOffice), even when
startup-notification hasn't completed yet. In those cases, we don't
want to transition the app back to stopped -- it should remain in
the running state.
2015-07-16 15:21:57 -07:00
fd3f03580d gdm: unconditionally cancel auth user verifier on reset
We currently only cancel the user verifier on reset if
verifying, but that means we don't properly cancel it when
asking for a username at the Not Listed screen.

The object already handles getting called when there is
nothing to cancel, so just cancel it unconditionally.

https://bugzilla.gnome.org/show_bug.cgi?id=752438
2015-07-16 09:41:39 -04:00
a09150846a Updated Hebrew translation 2015-07-16 13:29:05 +03:00
f2a9c55637 Fix translator comment
https://bugzilla.gnome.org/show_bug.cgi?id=659969
2015-07-15 22:43:23 +02:00
eaa3f83e46 Add translator comment
https://bugzilla.gnome.org/show_bug.cgi?id=659969
2015-07-15 12:37:37 +02:00
e786cc1454 Updated Spanish translation 2015-07-13 10:35:40 +02:00
cd0c632fcb theme: make app icons less fuzzy
- force 16x16px
- re-render SASS brings in some changes from
  gnome-shell-sass

https://bugzilla.gnome.org/show_bug.cgi?id=747932
2015-07-08 18:09:46 +02:00
d5f248cb82 Updated Slovenian translation 2015-07-08 15:47:02 +02:00
6a800abe06 Updated Friulian translation 2015-07-06 13:13:04 +00:00
fe265554a7 windowManager: Connect to size-changed signal
Whoops, forgot this one.
2015-07-05 23:10:51 -07:00
7305466765 Adapt to new size-change API
We don't implement any maximize transitions (yet??), but we still have
the skeleton there. Let's keep it up to date.
2015-07-05 23:09:24 -07:00
9ac55a98f1 Updated Portuguese translation 2015-07-04 05:40:46 +00:00
a1149fb6ad build: Bump GIO requirement
... for g_settings_schema_list_keys().

https://bugzilla.gnome.org/show_bug.cgi?id=751921
2015-07-03 22:42:37 +02:00
dfc4cc4aaf windowManager: Handle missing overrides settings
shell_global_get_overrides_settings() may return %NULL in case of
custom shell modes (i.e. not the default and classic ones); while
this is not officially encouraged, we should still handle it rather
than throw an error.

https://bugzilla.gnome.org/show_bug.cgi?id=751921
2015-07-03 22:25:29 +02:00
ef7541291b Updated German translation 2015-07-03 17:25:53 +00:00
248a3e6b7e Bump version to 3.17.3
Update NEWS.
2015-07-02 14:07:14 +02:00
6b1e381750 windowAttentionHandler: Fix whitespace 2015-07-01 19:14:13 +02:00
feaf6108f9 windowAttentionHandler: Allow extensions to disconnect the signal
That way extensions can easily disable / remove the "is ready"
notification.

https://bugzilla.gnome.org/show_bug.cgi?id=748846
2015-07-01 19:04:21 +02:00
9ad104585d Updated Portuguese translation 2015-06-29 22:26:47 +00:00
7c44af3616 osdMonitorLabeler: avoid tweening the labels
The control center will call this method when the configuration dialog
for a display opens/closes, which will cause the same labels to quickly
fade out and in again, looking like it's flickering.

This commit fixes the issue by removing the tweens altogether.

https://bugzilla.gnome.org/show_bug.cgi?id=751599
2015-06-29 14:57:03 -07:00
0599bf41b0 Updated Slovak translation 2015-06-29 10:41:59 +00:00
eac303f84c app-system: Improve StartupWMClass heuristics
Our StartUpWMClass heuristics use a StartupWMClass -> .desktop ID
mapping built from the list of all installed applications. In case
of multiple .desktop files setting the same StartupWMClass, we
currently simply pick the last one returned by g_app_info_get_all (),
which can be a bit surprising:
A window with WM_CLASS 'emacs', launched through a .desktop file
named 'emacs.desktop' with a StartupWMClass of 'emacs' maps to ...
'emacsclient.desktop'!
Make this case a bit less random by preferring the app info whose
ID matches the StartupWMClass.

https://bugzilla.gnome.org/show_bug.cgi?id=751541
2015-06-26 19:21:46 +02:00
7bdd1c625c AllView: prevent accessing a NULL effect
In some cases we might be allocated a size such that
this._grid.topPadding and this._grid.bottomPadding are both 0 which
means that the ScrollView fade effect gets removed. In that case don't
try to access the effect since it will be NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=750714
2015-06-26 18:09:17 +02:00
0003760fd9 gdm: fix banner allocation computation
The code to figure how how much room that banner had was wrong.
This commit fixes it.

https://bugzilla.gnome.org/show_bug.cgi?id=751517
2015-06-25 16:04:14 -04:00
eafb8c8e38 Updated Tajik translation 2015-06-25 05:43:44 +00:00
60c8105559 Updated Russian translation 2015-06-23 21:29:03 +00:00
54626c6f7e Updated Hungarian translation 2015-06-23 11:13:06 +00:00
cca528a630 windowMenu: Reinstate left/right window movement
The menu items to move a window to the left/right workspaces were
removed when the window menu was implemented in GNOME Shell.  This
is OK for the default vertical layout but not for alternatives.

https://bugzilla.gnome.org/show_bug.cgi?id=751344
2015-06-22 17:57:01 -07:00
530193a3a2 windowManager: Replace deprecated g_settings_list_keys() 2015-06-19 14:05:32 +02:00
52e3149040 main: Replace deprecated g_settings_list_keys() 2015-06-19 14:05:32 +02:00
ad297ea9dc main: Fix a memory leak
We are pointlessly calling g_settings_list_keys() twice, without
freeing the result from the first call.
2015-06-19 14:05:32 +02:00
2015fc97dc shell-recorder-src: rework queue handling
Use our own locking and queue instead of async_queue.
Implement unlock and unlock_stop to make the create function return
FLUSHING. This is important to be able to pause the pipeline after some
error occured in the pipeline.
Implement start/stop to clear the queue and its state.
2015-06-16 09:03:30 +02:00
35889a0f7d Update configure.ac to check for libsystemd
https://bugzilla.gnome.org/show_bug.cgi?id=751016
2015-06-15 22:02:54 +02:00
dcd84a4b53 Updated German translation 2015-06-13 18:07:18 +00:00
01374989b1 messageTray: Remove _fixMarkup() function
Commit 053e54f944 copied it to calendar, and since commit 15e42c4d5,
the original is no longer used.
2015-06-11 14:41:34 +02:00
f300462003 tests: Remove format test
The format() function was moved to gjs a long time ago.
2015-06-11 14:33:21 +02:00
1e4da1b99c Updated Russian translation 2015-06-09 23:10:55 +00:00
e1de6cb98d Updated Turkish translation 2015-06-09 17:11:52 +00:00
59a18c4ead ShellKeyringPrompt: Strip out mnemonics indicators from labels
Currently GNOME Shell doesn't support mnemonics and prompters may
send labels with it.

Remove the mnemonics indicator for now.

Signed-off-by: Stef Walter <stefw@redhat.com>
 * Fixed style issue

https://bugzilla.gnome.org/show_bug.cgi?id=750465
2015-06-09 11:45:47 +02:00
b881e4b62a Updated Greek translation 2015-06-08 10:36:16 +03:00
7060ae077b Updated Swedish translation 2015-06-05 09:33:07 +00:00
a7b0910566 Revert "Revert "keyboard: Handle touch events""
And make these only handled on wayland. There's a plethora of issues
around touch passive grab and touch/pointer doubly handling to use
these right away on X11, so we stick to single-touch/pointer there.

This reverts commit 032a688a72.

https://bugzilla.gnome.org/show_bug.cgi?id=750287
2015-06-02 17:57:55 +02:00
60706f72d4 Bump version to 3.17.2
Update NEWS.
2015-05-27 10:29:07 +02:00
2e77f6b34b system: Use iio-sensor-proxy to detect accelerometer
Instead of using gnome-settings-daemon's D-Bus interface's presence.
iio-sensor-proxy now offers a D-Bus interface, which will exported
"HasAccelerometer = true" when an accelerometer is present.

https://bugzilla.gnome.org/show_bug.cgi?id=749671
2015-05-27 10:13:38 +02:00
50d5030949 Updated Spanish translation 2015-05-26 19:30:20 +02:00
03dbb0f931 windowManager: Redo WorkspaceSwitchAction to be a Clutter.SwipeAction
Just reuse this gesture rather than implementing edge detection ourselves.
As a plus, we might get touchpad swipe support when Clutter handles it.

https://bugzilla.gnome.org/show_bug.cgi?id=749742
2015-05-26 19:06:45 +02:00
249619fabd build: Fix the path of perl for data-to-c.pl
https://bugzilla.gnome.org/show_bug.cgi?id=749490
2015-05-22 19:03:44 +08:00
60d1f7797c windowMenu: Close when corresponding window goes away
The menu is clearly associated with a particular window, so keeping
it around when the window is gone doesn't make sense - in case of
the window menu, it is actually harmful as every action will act on
the invalidated window and result in a crash. So just dismiss the
menu when the menu is unmanaged.

https://bugzilla.gnome.org/show_bug.cgi?id=749529
2015-05-21 18:20:39 +02:00
dc4b8c876e layout: Set initial visibility of fullscreen-tracking chrome
When chrome is added with the trackFullscreen parameter, the actor's
visibility will be updated automatically whenever its monitor's
fullscreen state changes. However as we currently ignore the fullscreen
state at the time the chrome is added, the initial visibility may well
be incorrect - fix this by updating the initial visibility as necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=749383
2015-05-21 13:58:49 +02:00
1724723e63 Updated Slovenian translation 2015-05-17 20:44:06 +02:00
02455b1e28 Updated Portuguese translation 2015-05-17 16:02:06 +00:00
47a9b97f8b Updated Norwegian bokmål translation. 2015-05-14 15:39:43 +02:00
0aa29daa72 messageTray: Emit signal when notifications are enabled/disabled
Since the introduction of per-source notification policy in commit
098bd4509b, the NotificationPolicy::enable-changed signal has been
used to track the 'enable' setting. However as we never actually
emitted that signal, this never worked without a restart - oops.

https://bugzilla.gnome.org/show_bug.cgi?id=749279
2015-05-14 15:14:52 +02:00
182b1c1941 ScreenShield: only inhibit suspend if we're the active session
If we aren't the active session clutter can't animate and thus we
can't expect the shield to be shown before releasing the suspend
inhibitor so we should release it immediately when becoming inactive.

https://bugzilla.gnome.org/show_bug.cgi?id=749228
2015-05-14 15:11:19 +02:00
bbc8010de3 ScreenShield: tie the suspend inhibitor to our isActive property
The whole point of holding a suspend inhibitor is to be able to lock
before suspending.

Currently, when resuming we immediately take the inhibitor without
checking that we're locked which means that we won't be able to
release this inhibitor if we don't unlock at least once.

To prevent that and to better match the inhibitor's intention in the
first place, we can tie the inhibitor with not being locked. In
practice, we also want to let the locking animation finish before
suspending, so we'll tie the inhibitor with not being active
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=749228
2015-05-14 15:11:18 +02:00
15baa56584 ScreenShield: ensure we don't leak logind inhibitors
This could happen if we are VT switched away and an animated
activation is requested because we're preparing to enter sleep. Since
we don't animate in this case we'd never reach
_completeLockScreenShown() before coming out of sleep, at which point
we _inhibitSuspend() again and would leak the previous inhibitor.

https://bugzilla.gnome.org/show_bug.cgi?id=749228
2015-05-14 15:11:16 +02:00
a72683707f Updated Slovak translation 2015-05-13 08:52:58 +00:00
f4baa4ddf8 make expanders more visible for alt-tab
https://bugzilla.gnome.org/show_bug.cgi?id=745058
2015-05-11 15:11:05 +02:00
f9eb36434f Updated Occitan translation 2015-05-11 07:43:02 +00:00
bc5e16bcea Updated Hungarian translation 2015-05-09 12:34:39 +00:00
86e04048ff st: Remove StTable
Alas, the last use of StTable is not gone, so we can finally remove
our copy of the widget.

https://bugzilla.gnome.org/show_bug.cgi?id=703833
2015-05-05 16:37:41 +02:00
d7c0ff5e89 Updated Tajik translation 2015-05-05 04:52:05 +00:00
51e1efa277 Updated Brazilian Portuguese translation 2015-05-04 16:35:56 +00:00
sun
67f636cc68 update zh_CN translation 2015-05-03 10:10:11 +08:00
fcdfebd0e7 Updated Hebrew translation 2015-05-01 11:37:15 +03:00
069ec3b910 Bump version to 3.17.1
Update NEWS.
2015-04-30 18:27:31 +02:00
1092f55b54 panel: Set up 'open-state-changed' handler on menu changes
Commit 08690d658f generalized the banner-blocking behavior of the
dateMenu to all menus that would obscure the banner. However setting
up the 'open-state-changed' handler only when an indicator is added
does not work for indicators that change their entire menu (like the
app menu) - we currently end up with menus with no connected signal
handler, and throw an error when trying to disconnect an invalid
signal ID.
To address this, add a new PanelButton::menu-set signal and use that
to set up the 'open-state-changed' handler.

https://bugzilla.gnome.org/show_bug.cgi?id=745910
2015-04-30 18:12:52 +02:00
8a8abf12f9 layout: Track which barriers have been hit
For barriers like the hot corner which are made up of multiple axis
barriers, make sure that all the barriers have been left before
resetting the barrier.
2015-04-28 17:49:52 -07:00
f044e29526 Added Occitan translation 2015-04-28 13:20:04 +00:00
4f703019ca shell-global: Mark the sync pointer motion event as synthetic
This allows mutter to ignore these events for the purpose of keeping
idle time.

https://bugzilla.gnome.org/show_bug.cgi?id=748541
2015-04-27 19:47:39 +02:00
0e6baec350 Updated Czech translation 2015-04-25 12:01:46 +02:00
08690d658f panel: Block banners when opening menus that would overlap
We currently block banners while the time+date menu is open, as it
would obscure the notification. However it is not necessarily the
only menu for which this is the case, so generalize the behavior
to all menus that would overlap banners when open.

https://bugzilla.gnome.org/show_bug.cgi?id=745910
2015-04-25 09:56:05 +02:00
674325e96c panel: Move notification banners below time+date dropdown
As notifications appear in the time+date dropdown's message list, there's
a strong relationship between notification banners and the menu. However
while the time+date menu is centered by default, which matches the banner
position, its actual position depends on the session mode - in particular
it is moved to the right in classic mode.
Reinforce the relationship in these cases by moving notification banners
underneath the time+date menu.

https://bugzilla.gnome.org/show_bug.cgi?id=745910
2015-04-25 09:56:05 +02:00
f8aa486ad1 Updated Icelandic translation 2015-04-24 13:40:37 +00:00
be78f0f36a misc: Add missing check on reply from systemd's CanSuspend D-Bus method
According to systemd logind's documentation, the CanSuspend() method
"returns 'na' in case "the operation is not available because hardware,
kernel or drivers do not support it", while "'no' is returned if the
operation is available but the user is not allowed to execute it".

See http://www.freedesktop.org/wiki/Software/systemd/logind

Thus, we need to return true here when the reply for the CanSuspend
method is neither 'no' nor 'na', or we would providing false positives
in cases where suspension is simply unsupported.

https://bugzilla.gnome.org/show_bug.cgi?id=748338
2015-04-22 23:17:45 +01:00
9917f05be8 messageTray: Make notification banners unfocusable
Unlike entries in the calendar's message list, banners are not subject
to the normal keynav chain, and making the banner actor itself unfocusable
allows for the focus to be moved to the action area when expanded.

https://bugzilla.gnome.org/show_bug.cgi?id=747205
2015-04-16 18:31:18 +02:00
d23228522c HighContrast: provide more contrasty switches
https://bugzilla.gnome.org/show_bug.cgi?id=747912
2015-04-15 19:35:51 +02:00
8c9896561e calendar: make day with events more prominent
https://bugzilla.gnome.org/show_bug.cgi?id=747715
2015-04-15 13:05:01 +02:00
23cdb2125e theme: dark $selected_bg_color for toggle switches
https://bugzilla.gnome.org/show_bug.cgi?id=746294
2015-04-15 13:04:20 +02:00
43fc598bd5 windowMenu: Add option to move different monitor
The window menu has all those workspace related options, but with multiple
monitors, it is much more interesting to quickly move a window 'over' to the
other monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=633994
2015-04-14 23:19:05 +02:00
2105d2f952 Add Display Settings to Background Menu.
https://bugzilla.gnome.org/show_bug.cgi?id=697346
2015-04-14 23:18:49 +02:00
146 changed files with 22675 additions and 16129 deletions

123
NEWS
View File

@ -1,3 +1,126 @@
3.18.0
======
Translations:
Sendy Aditya Suryana [id], Kris Thomsen [da], Seán de Búrca [ga],
Andika Triwidada [id], Enrico Nicoletto [pt_BR], Anders Jonsson [sv],
Rūdolfs Mazurs [lv]
3.17.92
=======
* Fix race when loading multiple background animations [Josselin; #741453]
Contributors:
Michael Biebl, Josselin Mouette, Florian Müllner
Translations:
Baurzhan Muftakhidinov [kk], Changwoo Ryu [ko], Christian Kirbach [de],
Kjartan Maraas [nb], Jiri Grönroos [fi], Arash Mousavi [fa],
Jiro Matsuzawa [ja], Marek Černocký [cs], Milo Casagrande [it]
3.17.91
=======
* Fix login screen spinner causing wakeups while VT-switched away
[Ray, Rui; #753891]
* Fix scrolling of user list on login screen [Florian; #754525]
Contributors:
Piotr Drąg, Rui Matos, Florian Müllner, Ray Strode
Translations:
Dušan Kazik [sk], Jordi Mas [ca], Aurimas Černius [lt], Stas Solovey [ru],
Piotr Drąg [pl], Pedro Albuquerque [pt], Daniel Mustieles [es],
Chao-Hsiung Liao [zh_TW], Muhammet Kara [tr], Fran Dieguez [gl],
Hannie Dumoleyn [nl], Yosef Or Boczko [he], Tom Tryfonidis [el],
A S Alam [pa], Balázs Úr [hu], Alexandre Franke [fr], Frédéric Péters [fr]
3.17.90
=======
* Avoid caret/focus viewport changes during pointer movement [Rui; #752138]
* Match GTK+'s modal dialogs for system modal dialogs [Carlos; #746108]
* Refine message list style [Florian; #749958]
* Fix type-ahead behavior for backspace and compose key [Rui; #753319, #753320]
* Refine the system status menu [Florian; #751377]
* Misc. bug fixes and cleanups [Bastien, Ray, Florian, Jakub; #752779, #752739,
#741366, #651503, #753064, #753181, #752881]
Contributors:
Rui Matos, Florian Müllner, Bastien Nocera, Carlos Soriano, Jakub Steiner,
Ray Strode, Rico Tzschichholz
Translations:
Marek Černocký [cs], Kjartan Maraas [nb], Jordi Mas [ca], Muhammet Kara [tr],
Enrico Nicoletto [pt_BR]
3.17.4
======
* Fix fuzziness of app menu icon [Jakub; #747932]
* Implement 4 finger swipe gesture for touchpads [Carlos; #752250]
* Misc. bug fixes [Florian, Alexandre, Piotr, Ray, Mario; #751921, #659969,
#752438, #752675]
Contributors:
Piotr Drąg, Alexandre Franke, Carlos Garnacho, Florian Müllner,
Mario Sanchez Prada, Jakub Steiner, Jasper St. Pierre, Ray Strode
Translations:
Benjamin Steinwender [de], Pedro Albuquerque [pt], Fabio Tomat [fur],
Matej Urbančič [sl], Daniel Mustieles [es], Yosef Or Boczko [he],
Daniel Martinez [an]
3.17.3
======
* Handle touch events in OSK on wayland [Rui; #750287]
* Reinstate left/right movement to window menu [Ron; #751344]
* Allow extensions to disable "Window is ready" notification [Adel; #748846]
* Misc. bug fixes [Watson, Michael, Ray, Rui, Florian, Cosimo; #750465,
#751016, #751517, #750714, #751541, #751599]
Contributors:
Michael Biebl, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
Ray Strode, Wim Taymans, Ron Yorston, Watson Yuuma Sato
Translations:
Sebastian Rasmussen [sv], Dimitris Spingos [el], Muhammet Kara [tr],
Stas Solovey [ru], Benjamin Steinwender [de], Balázs Úr [hu],
Victor Ibragimov [tg], Dušan Kazik [sk], Pedro Albuquerque [pt]
3.17.2
======
* Remove StTable widget [Florian; #703833]
* Increase visibility of expanders in alt-tab popup [Jakub; #745058]
* Ensure suspend inhibitors are released when VT switched away [Rui; #749228]
* Use iio-sensor-proxy directly for orientation lock [Bastien; #749671]
* Misc. bug fixes [Florian, Lan, Carlos; #749279, #749383, #749529, #749490,
#749742]
Contributors:
Carlos Garnacho, Ting-Wei Lan, Rui Matos, Florian Müllner, Bastien Nocera,
Jakub Steiner
Translations:
Yosef Or Boczko [he], sun [zh_CN], Felipe Braga [pt_BR],
Victor Ibragimov [tg], Gábor Kelemen [hu], Cédric Valmary [oc],
Dušan Kazik [sk], Kjartan Maraas [nb], Bruno Ramalhete [pt],
Matej Urbančič [sl], Daniel Mustieles [es]
3.17.1
======
* Add Display Settings entry to background menu [Meet; #697346]
* Add window menu option to move to different monitor [Isaac; #633994]
* Improve switch style in default/highContrast themes [Jakub; #746294, #747912]
* Make event highlight in calendar more prominent [Jakub; #747715]
* Fix keyboard focus when focusing a notification banner [Florian; #747205]
* Move notification banners below the dateMenu [Meet, Florian; #745910]
* Misc. bug fixes [Mario, Rui; #748338, #748541]
Contributors:
Isaac Ge, Rui Matos, Florian Müllner, Meet Parikh, Mario Sanchez Prada,
Jakub Steiner, Jasper St. Pierre
Translations:
Sveinn í Felli [is], Marek Černocký [cs], laurent Soleil [oc]
3.16.1 3.16.1
====== ======
* gdm: Move long session chooser menus to the side [Florian; #734352] * gdm: Move long session chooser menus to the side [Florian; #734352]

View File

@ -282,6 +282,14 @@ on_shell_signal (GDBusProxy *proxy,
{ {
PluginObject *obj = user_data; PluginObject *obj = user_data;
/* FIXME: We have half a dozen bug reports in which this function crashes in
* WebKit due to a null NPObject. This should never happen, but since it is
* happening, let's turn the crash into a critical.
*
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
*/
g_return_if_fail (obj->instance);
if (strcmp (signal_name, "ExtensionStatusChanged") == 0) if (strcmp (signal_name, "ExtensionStatusChanged") == 0)
{ {
gchar *uuid; gchar *uuid;
@ -312,6 +320,12 @@ on_shell_appeared (GDBusConnection *connection,
{ {
PluginObject *obj = (PluginObject*) user_data; PluginObject *obj = (PluginObject*) user_data;
/* FIXME: Not sure if this is ever hit or not, but let's play it safe.
*
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
*/
g_return_if_fail (obj->instance);
if (obj->restart_listener) if (obj->restart_listener)
{ {
NPVariant result = { NPVariantType_Void }; NPVariant result = { NPVariantType_Void };

View File

@ -1,5 +1,6 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.16.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.18.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AX_IS_RELEASE([git-directory])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@ -63,8 +64,8 @@ AC_ARG_ENABLE([systemd],
[enable_systemd=$enableval], [enable_systemd=$enableval],
[enable_systemd=auto]) [enable_systemd=auto])
AS_IF([test x$enable_systemd != xno], [ AS_IF([test x$enable_systemd != xno], [
AC_MSG_CHECKING([for libsystemd-journal]) AC_MSG_CHECKING([for libsystemd])
PKG_CHECK_EXISTS([libsystemd-journal], PKG_CHECK_EXISTS([libsystemd],
[have_systemd=yes [have_systemd=yes
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])], AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
[have_systemd=no]) [have_systemd=no])
@ -74,13 +75,13 @@ AS_IF([test x$enable_systemd != xno], [
AC_MSG_RESULT($enable_systemd) AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.21.5 CLUTTER_MIN_VERSION=1.21.5
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
GJS_MIN_VERSION=1.39.0 GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.16.1 MUTTER_MIN_VERSION=3.18.0
GTK_MIN_VERSION=3.15.0 GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.37.0 GIO_MIN_VERSION=2.45.3
LIBECAL_MIN_VERSION=3.5.3 LIBECAL_MIN_VERSION=3.5.3
LIBEDATASERVER_MIN_VERSION=3.13.90 LIBEDATASERVER_MIN_VERSION=3.17.2
TELEPATHY_GLIB_MIN_VERSION=0.17.5 TELEPATHY_GLIB_MIN_VERSION=0.17.5
POLKIT_MIN_VERSION=0.100 POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11 STARTUP_NOTIFICATION_MIN_VERSION=0.11
@ -106,7 +107,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION polkit-agent-1 >= $POLKIT_MIN_VERSION
gcr-base-3 >= $GCR_MIN_VERSION" gcr-base-3 >= $GCR_MIN_VERSION"
if test x$have_systemd = xyes; then if test x$have_systemd = xyes; then
SHARED_PCS="${SHARED_PCS} libsystemd-journal" SHARED_PCS="${SHARED_PCS} libsystemd"
fi fi
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
@ -220,7 +221,7 @@ if test "$enable_man" != no; then
fi fi
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
GNOME_COMPILE_WARNINGS([error]) AX_COMPILER_FLAGS()
case "$WARN_CFLAGS" in case "$WARN_CFLAGS" in
*-Werror*) *-Werror*)
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations" WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
@ -269,7 +270,7 @@ Build configuration:
Prefix: ${prefix} Prefix: ${prefix}
Source code location: ${srcdir} Source code location: ${srcdir}
Compiler: ${CC} Compiler: ${CC}
Compiler Warnings: $enable_compile_warnings Compiler Warnings: $ax_enable_compile_warnings
Support for NetworkManager: $have_networkmanager Support for NetworkManager: $have_networkmanager
Support for GStreamer recording: $build_recorder Support for GStreamer recording: $build_recorder

View File

@ -32,8 +32,10 @@
<file>summary-counter.svg</file> <file>summary-counter.svg</file>
<file>toggle-off-us.svg</file> <file>toggle-off-us.svg</file>
<file>toggle-off-intl.svg</file> <file>toggle-off-intl.svg</file>
<file>toggle-off-hc.svg</file>
<file>toggle-on-us.svg</file> <file>toggle-on-us.svg</file>
<file>toggle-on-intl.svg</file> <file>toggle-on-intl.svg</file>
<file>toggle-on-hc.svg</file>
<file>ws-switch-arrow-up.png</file> <file>ws-switch-arrow-up.png</file>
<file>ws-switch-arrow-down.png</file> <file>ws-switch-arrow-down.png</file>
</gresource> </gresource>

View File

@ -51,6 +51,7 @@
</key> </key>
<key name="looking-glass-history" type="as"> <key name="looking-glass-history" type="as">
<default>[]</default> <default>[]</default>
<!-- Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass -->
<_summary>History for the looking glass dialog</_summary> <_summary>History for the looking glass dialog</_summary>
</key> </key>
<key name="always-show-log-out" type="b"> <key name="always-show-log-out" type="b">

View File

@ -10,11 +10,11 @@
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="29" width="24"
height="29" height="24"
id="svg10621" id="svg10621"
version="1.1" version="1.1"
inkscape:version="0.48.2 r9819" inkscape:version="0.91 r13725"
sodipodi:docname="calendar-today.svg"> sodipodi:docname="calendar-today.svg">
<defs <defs
id="defs10623"> id="defs10623">
@ -118,17 +118,6 @@
fx="51" fx="51"
fy="30" fy="30"
r="42" /> r="42" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient34508-1-3"
id="radialGradient3113"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)"
cx="51"
cy="30"
fx="51"
fy="30"
r="42" />
</defs> </defs>
<sodipodi:namedview <sodipodi:namedview
id="base" id="base"
@ -137,22 +126,23 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="15.839192" inkscape:zoom="8"
inkscape:cx="20.652108" inkscape:cx="-23.537329"
inkscape:cy="11.839084" inkscape:cy="-31.442864"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="true" showgrid="false"
fit-margin-top="0" fit-margin-top="0"
fit-margin-left="0" fit-margin-left="0"
fit-margin-right="0" fit-margin-right="0"
fit-margin-bottom="0" fit-margin-bottom="0"
inkscape:window-width="1280" inkscape:window-width="2133"
inkscape:window-height="741" inkscape:window-height="1241"
inkscape:window-x="0" inkscape:window-x="238"
inkscape:window-y="27" inkscape:window-y="88"
inkscape:window-maximized="1" inkscape:window-maximized="0"
borderlayer="true"> borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid <inkscape:grid
type="xygrid" type="xygrid"
id="grid3109" id="grid3109"
@ -169,7 +159,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title /> <dc:title></dc:title>
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -177,28 +167,12 @@
inkscape:label="Layer 1" inkscape:label="Layer 1"
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer1" id="layer1"
transform="translate(-469.08263,-532.99307)"> transform="translate(-469.08263,-537.99307)">
<path <circle
sodipodi:type="arc" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.23756906;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
style="opacity:0.4625;color:#000000;fill:url(#radialGradient3113);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="path7305"
id="path34506-3" cx="481.57138"
sodipodi:cx="51" cy="559.4649"
sodipodi:cy="30" r="1.5" />
sodipodi:rx="42"
sodipodi:ry="16"
d="M 9,29.999999 A 42,16 0 0 1 93,30 l -42,0 z"
sodipodi:start="3.1415927"
sodipodi:end="6.2831853"
transform="matrix(0.43692393,0,0,1.3783114,461.29951,517.6437)"
inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="fill:#ffffff;fill-opacity:0.50196078;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2996"
width="31"
height="3"
x="468.08264"
y="558.99304" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -37,10 +37,9 @@ stage {
icon-shadow: 0 1px black; } icon-shadow: 0 1px black; }
.button:focus { .button:focus {
color: #eeeeec; color: #eeeeec;
border-color: #215d9c;
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black; text-shadow: 0 1px black;
icon-shadow: 0 1px black; } icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.button:insensitive { .button:insensitive {
color: #7f7f7f; color: #7f7f7f;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
@ -52,9 +51,46 @@ stage {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: inset 0 0 black;
text-shadow: none;
icon-shadow: none; }
.modal-dialog-linked-button {
border-right-width: 1px;
color: #eeeeec;
background-color: #2e3436;
border-color: rgba(0, 0, 0, 0.7);
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
padding: 12px; }
.modal-dialog-linked-button:insensitive {
color: #7f7f7f;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(62, 67, 68, 0.7);
box-shadow: none; box-shadow: none;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.modal-dialog-linked-button:active {
color: white;
border-color: rgba(0, 0, 0, 0.7);
background-color: #222728;
box-shadow: inset 0 0 black;
text-shadow: none;
icon-shadow: none; }
.modal-dialog-linked-button:focus {
color: #eeeeec;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.modal-dialog-linked-button:first-child {
border-radius: 0px 0px 0px 6px; }
.modal-dialog-linked-button:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 0px; }
.modal-dialog-linked-button:first-child:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 6px; }
/* Entries */ /* Entries */
StEntry { StEntry {
@ -95,10 +131,10 @@ StScrollBar {
background-color: transparent; } background-color: transparent; }
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle { StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
border-radius: 8px; border-radius: 8px;
background-color: #000; background-color: #999999;
margin: 3px; } margin: 3px; }
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover { StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
background-color: #1a1a1a; } background-color: #cccccc; }
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active { StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
background-color: #215d9c; } background-color: #215d9c; }
@ -160,11 +196,12 @@ StScrollBar {
background-color: white; } background-color: white; }
.modal-dialog { .modal-dialog {
border-radius: 5px; border-radius: 9px;
color: #eeeeec; color: #eeeeec;
background-color: rgba(23, 25, 26, 0.95); background-color: rgba(23, 25, 26, 0.95);
border: 3px solid rgba(238, 238, 236, 0.5); border: 3px solid rgba(238, 238, 236, 0.5); }
padding: 24px; } .modal-dialog .modal-dialog-content-box {
padding: 24px; }
.modal-dialog .run-dialog-entry { .modal-dialog .run-dialog-entry {
width: 20em; width: 20em;
margin-bottom: 6px; } margin-bottom: 6px; }
@ -179,10 +216,6 @@ StScrollBar {
color: #d6d6d1; color: #d6d6d1;
padding-bottom: .4em; } padding-bottom: .4em; }
.button-dialog-button-box {
spacing: 18px;
padding-top: 48px; }
.show-processes-dialog-subject, .show-processes-dialog-subject,
.mount-question-dialog-subject, .mount-question-dialog-subject,
.end-session-dialog-subject { .end-session-dialog-subject {
@ -411,7 +444,7 @@ StScrollBar {
.popup-menu-ornament { .popup-menu-ornament {
text-align: right; text-align: right;
width: 1em; } width: 1.2em; }
.popup-menu-boxpointer, .popup-menu-boxpointer,
.candidate-popup-boxpointer { .candidate-popup-boxpointer {
@ -488,10 +521,9 @@ StScrollBar {
.switcher-arrow { .switcher-arrow {
border-color: transparent; border-color: transparent;
color: black; } color: rgba(255, 255, 255, 0.8); }
.switcher-arrow:highlighted {
.switcher-arrow:highlighted { color: #fff; }
color: #fff; }
.input-source-switcher-symbol { .input-source-switcher-symbol {
font-size: 34pt; font-size: 34pt;
@ -710,8 +742,9 @@ StScrollBar {
border: 1px solid rgba(0, 0, 0, 0.5); } border: 1px solid rgba(0, 0, 0, 0.5); }
.calendar-day-with-events { .calendar-day-with-events {
color: #f2f2f2; color: white;
font-weight: bold; } font-weight: bold;
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
.calendar-other-month-day { .calendar-other-month-day {
color: rgba(255, 255, 255, 0.15); color: rgba(255, 255, 255, 0.15);
@ -754,7 +787,12 @@ StScrollBar {
padding: 8px 8px 8px 0px; } padding: 8px 8px 8px 0px; }
.message-icon-bin > StIcon { .message-icon-bin > StIcon {
icon-size: 48px; } icon-size: 32px; }
.message-secondary-bin:ltr {
padding-left: 8px; }
.message-secondary-bin:rtl {
padding-right: 8px; }
.message-secondary-bin { .message-secondary-bin {
color: #999999; } color: #999999; }
@ -763,14 +801,20 @@ StScrollBar {
icon-size: 16px; } icon-size: 16px; }
.message-title { .message-title {
font-weight: bold; } font-weight: bold;
font-size: 1.1em; }
.message-content { .message-content {
padding: 8px; } padding: 8px;
font-size: .9em; }
.system-switch-user-submenu-icon { .system-switch-user-submenu-icon.user-icon {
icon-size: 24px; icon-size: 20px;
border: 1px solid rgba(255, 255, 255, 0.4); } padding: 0 2px; }
.system-switch-user-submenu-icon.default-icon {
icon-size: 16px;
padding: 0 4px; }
#appMenu { #appMenu {
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg"); spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
@ -779,7 +823,8 @@ StScrollBar {
color: transparent; } color: transparent; }
.aggregate-menu { .aggregate-menu {
width: 360px; } min-width: 280px;
max-width: 400px; }
.aggregate-menu .popup-menu-icon { .aggregate-menu .popup-menu-icon {
padding: 0 4px; } padding: 0 4px; }
@ -834,7 +879,8 @@ StScrollBar {
min-width: 470px; } min-width: 470px; }
.nm-dialog-content { .nm-dialog-content {
spacing: 20px; } spacing: 20px;
padding: 24px; }
.nm-dialog-header-hbox { .nm-dialog-header-hbox {
spacing: 10px; } spacing: 10px; }
@ -1016,7 +1062,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.app-view-control:first-child { .app-view-control:first-child {
@ -1335,10 +1381,9 @@ StScrollBar {
color: white; } color: white; }
.keyboard-key:focus { .keyboard-key:focus {
color: #eeeeec; color: #eeeeec;
border-color: #215d9c;
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black; text-shadow: 0 1px black;
icon-shadow: 0 1px black; } icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.keyboard-key:hover, .keyboard-key:checked { .keyboard-key:hover, .keyboard-key:checked {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
@ -1350,7 +1395,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.keyboard-key:grayed { .keyboard-key:grayed {
@ -1443,7 +1488,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #1c5187; background-color: #1c5187;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.login-dialog .modal-dialog-button:default:insensitive { .login-dialog .modal-dialog-button:default:insensitive {
@ -1696,3 +1741,11 @@ StScrollBar {
stage { stage {
-st-icon-style: symbolic; } -st-icon-style: symbolic; }
.toggle-switch {
width: 48px; }
.toggle-switch-us, .toggle-switch-intl {
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg"); }
.toggle-switch-us:checked, .toggle-switch-intl:checked {
background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }

View File

@ -6,3 +6,9 @@
stage { stage {
-st-icon-style: symbolic; -st-icon-style: symbolic;
} }
.toggle-switch { width: 48px; }
.toggle-switch-us, .toggle-switch-intl {
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
}

View File

@ -37,10 +37,9 @@ stage {
icon-shadow: 0 1px black; } icon-shadow: 0 1px black; }
.button:focus { .button:focus {
color: #eeeeec; color: #eeeeec;
border-color: #215d9c;
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black; text-shadow: 0 1px black;
icon-shadow: 0 1px black; } icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.button:insensitive { .button:insensitive {
color: #939695; color: #939695;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
@ -52,9 +51,46 @@ stage {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: inset 0 0 black;
text-shadow: none;
icon-shadow: none; }
.modal-dialog-linked-button {
border-right-width: 1px;
color: #eeeeec;
background-color: #2e3436;
border-color: rgba(0, 0, 0, 0.7);
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
padding: 12px; }
.modal-dialog-linked-button:insensitive {
color: #939695;
border-color: rgba(0, 0, 0, 0.7);
background-color: rgba(66, 71, 73, 0.7);
box-shadow: none; box-shadow: none;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.modal-dialog-linked-button:active {
color: white;
border-color: rgba(0, 0, 0, 0.7);
background-color: #222728;
box-shadow: inset 0 0 black;
text-shadow: none;
icon-shadow: none; }
.modal-dialog-linked-button:focus {
color: #eeeeec;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.modal-dialog-linked-button:first-child {
border-radius: 0px 0px 0px 6px; }
.modal-dialog-linked-button:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 0px; }
.modal-dialog-linked-button:first-child:last-child {
border-right-width: 0px;
border-radius: 0px 0px 6px 6px; }
/* Entries */ /* Entries */
StEntry { StEntry {
@ -95,10 +131,10 @@ StScrollBar {
background-color: transparent; } background-color: transparent; }
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle { StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
border-radius: 8px; border-radius: 8px;
background-color: #393f3f; background-color: #a5a8a6;
margin: 3px; } margin: 3px; }
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover { StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
background-color: #515a5a; } background-color: #c9cbc9; }
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active { StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
background-color: #215d9c; } background-color: #215d9c; }
@ -160,11 +196,12 @@ StScrollBar {
background-color: white; } background-color: white; }
.modal-dialog { .modal-dialog {
border-radius: 5px; border-radius: 9px;
color: #eeeeec; color: #eeeeec;
background-color: rgba(23, 25, 26, 0.95); background-color: rgba(23, 25, 26, 0.95);
border: 3px solid rgba(238, 238, 236, 0.5); border: 3px solid rgba(238, 238, 236, 0.5); }
padding: 24px; } .modal-dialog .modal-dialog-content-box {
padding: 24px; }
.modal-dialog .run-dialog-entry { .modal-dialog .run-dialog-entry {
width: 20em; width: 20em;
margin-bottom: 6px; } margin-bottom: 6px; }
@ -179,10 +216,6 @@ StScrollBar {
color: #d6d6d1; color: #d6d6d1;
padding-bottom: .4em; } padding-bottom: .4em; }
.button-dialog-button-box {
spacing: 18px;
padding-top: 48px; }
.show-processes-dialog-subject, .show-processes-dialog-subject,
.mount-question-dialog-subject, .mount-question-dialog-subject,
.end-session-dialog-subject { .end-session-dialog-subject {
@ -411,7 +444,7 @@ StScrollBar {
.popup-menu-ornament { .popup-menu-ornament {
text-align: right; text-align: right;
width: 1em; } width: 1.2em; }
.popup-menu-boxpointer, .popup-menu-boxpointer,
.candidate-popup-boxpointer { .candidate-popup-boxpointer {
@ -488,10 +521,9 @@ StScrollBar {
.switcher-arrow { .switcher-arrow {
border-color: transparent; border-color: transparent;
color: #1c1f1f; } color: rgba(238, 238, 236, 0.8); }
.switcher-arrow:highlighted {
.switcher-arrow:highlighted { color: #eeeeec; }
color: #eeeeec; }
.input-source-switcher-symbol { .input-source-switcher-symbol {
font-size: 34pt; font-size: 34pt;
@ -710,8 +742,9 @@ StScrollBar {
border: 1px solid rgba(28, 31, 31, 0.5); } border: 1px solid rgba(28, 31, 31, 0.5); }
.calendar-day-with-events { .calendar-day-with-events {
color: #e2e2df; color: white;
font-weight: bold; } font-weight: bold;
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
.calendar-other-month-day { .calendar-other-month-day {
color: rgba(238, 238, 236, 0.15); color: rgba(238, 238, 236, 0.15);
@ -754,7 +787,12 @@ StScrollBar {
padding: 8px 8px 8px 0px; } padding: 8px 8px 8px 0px; }
.message-icon-bin > StIcon { .message-icon-bin > StIcon {
icon-size: 48px; } icon-size: 32px; }
.message-secondary-bin:ltr {
padding-left: 8px; }
.message-secondary-bin:rtl {
padding-right: 8px; }
.message-secondary-bin { .message-secondary-bin {
color: #8e8e80; } color: #8e8e80; }
@ -763,14 +801,20 @@ StScrollBar {
icon-size: 16px; } icon-size: 16px; }
.message-title { .message-title {
font-weight: bold; } font-weight: bold;
font-size: 1.1em; }
.message-content { .message-content {
padding: 8px; } padding: 8px;
font-size: .9em; }
.system-switch-user-submenu-icon { .system-switch-user-submenu-icon.user-icon {
icon-size: 24px; icon-size: 20px;
border: 1px solid rgba(238, 238, 236, 0.4); } padding: 0 2px; }
.system-switch-user-submenu-icon.default-icon {
icon-size: 16px;
padding: 0 4px; }
#appMenu { #appMenu {
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg"); spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
@ -779,7 +823,8 @@ StScrollBar {
color: transparent; } color: transparent; }
.aggregate-menu { .aggregate-menu {
width: 360px; } min-width: 280px;
max-width: 400px; }
.aggregate-menu .popup-menu-icon { .aggregate-menu .popup-menu-icon {
padding: 0 4px; } padding: 0 4px; }
@ -834,7 +879,8 @@ StScrollBar {
min-width: 470px; } min-width: 470px; }
.nm-dialog-content { .nm-dialog-content {
spacing: 20px; } spacing: 20px;
padding: 24px; }
.nm-dialog-header-hbox { .nm-dialog-header-hbox {
spacing: 10px; } spacing: 10px; }
@ -1016,7 +1062,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.app-view-control:first-child { .app-view-control:first-child {
@ -1335,10 +1381,9 @@ StScrollBar {
color: white; } color: white; }
.keyboard-key:focus { .keyboard-key:focus {
color: #eeeeec; color: #eeeeec;
border-color: #215d9c;
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black; text-shadow: 0 1px black;
icon-shadow: 0 1px black; } icon-shadow: 0 1px black;
box-shadow: inset 0px 0px 0px 1px #215d9c; }
.keyboard-key:hover, .keyboard-key:checked { .keyboard-key:hover, .keyboard-key:checked {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
@ -1350,7 +1395,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #222728; background-color: #222728;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.keyboard-key:grayed { .keyboard-key:grayed {
@ -1443,7 +1488,7 @@ StScrollBar {
color: white; color: white;
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
background-color: #1c5187; background-color: #1c5187;
box-shadow: none; box-shadow: inset 0 0 black;
text-shadow: none; text-shadow: none;
icon-shadow: none; } icon-shadow: none; }
.login-dialog .modal-dialog-button:default:insensitive { .login-dialog .modal-dialog-button:default:insensitive {

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="22"
id="svg2857"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toggle-off-hc.svg">
<defs
id="defs2859">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2865" />
<inkscape:perspective
id="perspective2843"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:path-effect
effect="spiro"
id="path-effect77541-4"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-6.1820581"
inkscape:cy="-16.463788"
inkscape:document-units="px"
inkscape:current-layer="g37994"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1364"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:snap-nodes="false"
inkscape:snap-bbox="true"
showborder="true">
<inkscape:grid
type="xygrid"
id="grid12954"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2862">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-444.64286,-781.36218)">
<g
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
id="g37994">
<g
transform="matrix(1.5323214,0,0,1.2413968,-324.76058,489.69039)"
id="toggle-off"
inkscape:label="#g8477">
<circle
cy="1033.993"
cx="571.95966"
id="path8444"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
r="7" />
<rect
ry="2.0108337"
rx="1.9562569"
y="1031.9885"
x="565.0083"
height="4.0216675"
width="34.850178"
id="rect8461"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
<g
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,491.16456)"
id="toggle-on"
inkscape:label="#g8481">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect8475"
width="34.850178"
height="4.0216675"
x="565.0083"
y="1070.9279"
rx="1.9562569"
ry="2.0108337" />
<circle
transform="scale(-1,1)"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="circle8463"
cx="-591.0213"
cy="1072.9402"
r="9" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

113
data/theme/toggle-on-hc.svg Normal file
View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="22"
id="svg2857"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="toggle-on-hc.svg">
<defs
id="defs2859">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2865" />
<inkscape:perspective
id="perspective2843"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:path-effect
effect="spiro"
id="path-effect77541-4"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-222.95215"
inkscape:cy="3.9378433"
inkscape:document-units="px"
inkscape:current-layer="g37994"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1364"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:snap-nodes="false"
inkscape:snap-bbox="true"
showborder="true">
<inkscape:grid
type="xygrid"
id="grid12954"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2862">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-444.64286,-781.36218)">
<g
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
id="g37994">
<g
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,441.50868)"
id="toggle-on"
inkscape:label="#g8481">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect8475"
width="34.850178"
height="4.0216675"
x="565.0083"
y="1070.9279"
rx="1.9562569"
ry="2.0108337" />
<circle
transform="scale(-1,1)"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="circle8463"
cx="-591.0213"
cy="1072.9402"
r="9" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -14,7 +14,7 @@
height="22" height="22"
id="svg2857" id="svg2857"
version="1.1" version="1.1"
inkscape:version="0.48.5 r10040" inkscape:version="0.91 r13725"
sodipodi:docname="toggle-on-intl.svg"> sodipodi:docname="toggle-on-intl.svg">
<defs <defs
id="defs2859"> id="defs2859">
@ -52,7 +52,7 @@
<stop <stop
id="stop77465" id="stop77465"
offset="1" offset="1"
style="stop-color:#204a87;stop-opacity:1" /> style="stop-color:#205b9a;stop-opacity:1" />
</linearGradient> </linearGradient>
<linearGradient <linearGradient
inkscape:collect="always" inkscape:collect="always"
@ -88,14 +88,14 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="1" inkscape:pageopacity="1"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="32" inkscape:zoom="1"
inkscape:cx="17.255148" inkscape:cx="37.410841"
inkscape:cy="8.9252639" inkscape:cy="16.009314"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g37994" inkscape:current-layer="g37994"
showgrid="true" showgrid="false"
inkscape:window-width="2560" inkscape:window-width="2560"
inkscape:window-height="1375" inkscape:window-height="1376"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="27" inkscape:window-y="27"
inkscape:window-maximized="1" inkscape:window-maximized="1"

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -14,7 +14,7 @@
height="22" height="22"
id="svg2857" id="svg2857"
version="1.1" version="1.1"
inkscape:version="0.48.5 r10040" inkscape:version="0.91 r13725"
sodipodi:docname="toggle-on-us.svg"> sodipodi:docname="toggle-on-us.svg">
<defs <defs
id="defs2859"> id="defs2859">
@ -32,28 +32,6 @@
inkscape:vp_y="0 : 1000 : 0" inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1" inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" /> sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient77461"
id="linearGradient77551"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
x1="1164.7644"
y1="962.93695"
x2="1164.7644"
y2="970.51404" />
<linearGradient
id="linearGradient77461"
inkscape:collect="always">
<stop
id="stop77463"
offset="0"
style="stop-color:#182f4c;stop-opacity:1" />
<stop
id="stop77465"
offset="1"
style="stop-color:#204a87;stop-opacity:1" />
</linearGradient>
<linearGradient <linearGradient
inkscape:collect="always" inkscape:collect="always"
xlink:href="#linearGradient76469-7-7-4" xlink:href="#linearGradient76469-7-7-4"
@ -80,6 +58,38 @@
effect="spiro" effect="spiro"
id="path-effect77541-4" id="path-effect77541-4"
is_visible="true" /> is_visible="true" />
<linearGradient
id="linearGradient77461-1"
inkscape:collect="always">
<stop
id="stop77463-1"
offset="0"
style="stop-color:#182f4c;stop-opacity:1" />
<stop
id="stop77465-4"
offset="1"
style="stop-color:#205b9a;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient77461-1"
id="linearGradient77551-6-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)"
x1="1164.7644"
y1="962.93695"
x2="1164.7644"
y2="970.51404" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient77461-1"
id="linearGradient11198"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)"
x1="1322.5831"
y1="-312.51855"
x2="1322.5831"
y2="-306.53461" />
</defs> </defs>
<sodipodi:namedview <sodipodi:namedview
id="base" id="base"
@ -89,13 +99,13 @@
inkscape:pageopacity="1" inkscape:pageopacity="1"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1" inkscape:zoom="1"
inkscape:cx="33.380898" inkscape:cx="-26.798898"
inkscape:cy="6.9658271" inkscape:cy="5.3753009"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="g37994" inkscape:current-layer="g37994"
showgrid="false" showgrid="false"
inkscape:window-width="2560" inkscape:window-width="2560"
inkscape:window-height="1375" inkscape:window-height="1376"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="27" inkscape:window-y="27"
inkscape:window-maximized="1" inkscape:window-maximized="1"
@ -152,7 +162,7 @@
height="25" height="25"
width="98" width="98"
id="rect38000" id="rect38000"
style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
</g> </g>
<g <g
transform="translate(2.0625,-2)" transform="translate(2.0625,-2)"

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -35,7 +35,6 @@
<xi:include href="xml/st-bin.xml"/> <xi:include href="xml/st-bin.xml"/>
<xi:include href="xml/st-box-layout.xml"/> <xi:include href="xml/st-box-layout.xml"/>
<xi:include href="xml/st-scroll-view.xml"/> <xi:include href="xml/st-scroll-view.xml"/>
<xi:include href="xml/st-table.xml"/>
</chapter> </chapter>
<chapter id="styling"> <chapter id="styling">

View File

@ -14,7 +14,7 @@ const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const UserWidget = imports.ui.userWidget; const UserWidget = imports.ui.userWidget;
const DEFAULT_BUTTON_WELL_ICON_SIZE = 24; const DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0; const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0;
const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3; const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3;
@ -258,6 +258,7 @@ const AuthPrompt = new Lang.Class({
}, },
_onVerificationComplete: function() { _onVerificationComplete: function() {
this.setActorInDefaultButtonWell(null);
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED; this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
this.cancelButton.reactive = false; this.cancelButton.reactive = false;
}, },
@ -281,6 +282,12 @@ const AuthPrompt = new Lang.Class({
if (oldActor) if (oldActor)
Tweener.removeTweens(oldActor); Tweener.removeTweens(oldActor);
let wasSpinner;
if (oldActor == this._spinner.actor)
wasSpinner = true;
else
wasSpinner = false;
let isSpinner; let isSpinner;
if (actor == this._spinner.actor) if (actor == this._spinner.actor)
isSpinner = true; isSpinner = true;
@ -290,6 +297,11 @@ const AuthPrompt = new Lang.Class({
if (this._defaultButtonWellActor != actor && oldActor) { if (this._defaultButtonWellActor != actor && oldActor) {
if (!animate) { if (!animate) {
oldActor.opacity = 0; oldActor.opacity = 0;
if (wasSpinner) {
if (this._spinner)
this._spinner.stop();
}
} else { } else {
Tweener.addTween(oldActor, Tweener.addTween(oldActor,
{ opacity: 0, { opacity: 0,
@ -298,7 +310,7 @@ const AuthPrompt = new Lang.Class({
transition: 'linear', transition: 'linear',
onCompleteScope: this, onCompleteScope: this,
onComplete: function() { onComplete: function() {
if (isSpinner) { if (wasSpinner) {
if (this._spinner) if (this._spinner)
this._spinner.stop(); this._spinner.stop();
} }
@ -401,7 +413,7 @@ const AuthPrompt = new Lang.Class({
}, },
updateSensitivity: function(sensitive) { updateSensitivity: function(sensitive) {
this._updateNextButtonSensitivity(sensitive); this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0);
this._entry.reactive = sensitive; this._entry.reactive = sensitive;
this._entry.clutter_text.editable = sensitive; this._entry.clutter_text.editable = sensitive;
}, },
@ -432,8 +444,9 @@ const AuthPrompt = new Lang.Class({
let oldStatus = this.verificationStatus; let oldStatus = this.verificationStatus;
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.cancelButton.reactive = true; this.cancelButton.reactive = true;
this.nextButton.label = _("Next");
if (oldStatus == AuthPromptStatus.VERIFYING) if (this._userVerifier)
this._userVerifier.cancel(); this._userVerifier.cancel();
this._queryingService = null; this._queryingService = null;
@ -488,6 +501,7 @@ const AuthPrompt = new Lang.Class({
finish: function(onComplete) { finish: function(onComplete) {
if (!this._userVerifier.hasPendingMessages) { if (!this._userVerifier.hasPendingMessages) {
this._userVerifier.clear();
onComplete(); onComplete();
return; return;
} }
@ -495,12 +509,13 @@ const AuthPrompt = new Lang.Class({
let signalId = this._userVerifier.connect('no-more-messages', let signalId = this._userVerifier.connect('no-more-messages',
Lang.bind(this, function() { Lang.bind(this, function() {
this._userVerifier.disconnect(signalId); this._userVerifier.disconnect(signalId);
this._userVerifier.clear();
onComplete(); onComplete();
})); }));
}, },
cancel: function() { cancel: function() {
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) { if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
return; return;
} }
this.reset(); this.reset();

View File

@ -535,6 +535,9 @@ const LoginDialog = new Lang.Class({
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
natWidth = Math.min(natWidth, dialogBox.x2 - dialogBox.x1);
natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1);
actorBox.x1 = Math.floor(centerX - natWidth / 2); actorBox.x1 = Math.floor(centerX - natWidth / 2);
actorBox.y1 = Math.floor(centerY - natHeight / 2); actorBox.y1 = Math.floor(centerY - natHeight / 2);
actorBox.x2 = actorBox.x1 + natWidth; actorBox.x2 = actorBox.x1 + natWidth;
@ -584,7 +587,14 @@ const LoginDialog = new Lang.Class({
// try a different layout, or if we have what extra space we // try a different layout, or if we have what extra space we
// can hand out // can hand out
if (bannerAllocation) { if (bannerAllocation) {
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight; let bannerSpace;
if (authPromptAllocation)
bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1;
else
bannerSpace = 0;
let leftOverYSpace = bannerSpace - bannerHeight;
if (leftOverYSpace > 0) { if (leftOverYSpace > 0) {
// First figure out how much left over space is up top // First figure out how much left over space is up top
@ -867,7 +877,7 @@ const LoginDialog = new Lang.Class({
}, },
_loginScreenSessionActivated: function() { _loginScreenSessionActivated: function() {
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED) if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
return; return;
Tweener.addTween(this.actor, Tweener.addTween(this.actor,
@ -884,7 +894,8 @@ const LoginDialog = new Lang.Class({
}, },
onUpdateScope: this, onUpdateScope: this,
onComplete: function() { onComplete: function() {
this._authPrompt.reset(); if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
this._authPrompt.reset();
}, },
onCompleteScope: this }); onCompleteScope: this });
}, },

View File

@ -134,7 +134,7 @@ const LoginManagerSystemd = new Lang.Class({
if (error) if (error)
asyncCallback(false); asyncCallback(false);
else else
asyncCallback(result[0] != 'no'); asyncCallback(result[0] != 'no' && result[0] != 'na');
}); });
}, },

View File

@ -448,8 +448,6 @@ const AppSwitcher = new Lang.Class({
}); });
if (appIcon.cachedWindows.length > 0) if (appIcon.cachedWindows.length > 0)
this._addIcon(appIcon); this._addIcon(appIcon);
else if (workspace == null)
throw new Error('%s appears to be running, but doesn\'t have any windows'.format(appIcon.app.get_name()));
} }
this._curApp = -1; this._curApp = -1;

View File

@ -7,7 +7,7 @@ const St = imports.gi.St;
const Signals = imports.signals; const Signals = imports.signals;
const Atk = imports.gi.Atk; const Atk = imports.gi.Atk;
const ANIMATED_ICON_UPDATE_TIMEOUT = 100; const ANIMATED_ICON_UPDATE_TIMEOUT = 14;
const Animation = new Lang.Class({ const Animation = new Lang.Class({
Name: 'Animation', Name: 'Animation',

View File

@ -500,6 +500,11 @@ const AllView = new Lang.Class({
_loadApps: function() { _loadApps: function() {
let apps = Gio.AppInfo.get_all().filter(function(appInfo) { let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
try {
let id = appInfo.get_id(); // catch invalid file encodings
} catch(e) {
return false;
}
return appInfo.should_show(); return appInfo.should_show();
}).map(function(app) { }).map(function(app) {
return app.get_id(); return app.get_id();
@ -753,7 +758,8 @@ const AllView = new Lang.Class({
let fadeOffset = Math.min(this._grid.topPadding, let fadeOffset = Math.min(this._grid.topPadding,
this._grid.bottomPadding); this._grid.bottomPadding);
this._scrollView.update_fade_effect(fadeOffset, 0); this._scrollView.update_fade_effect(fadeOffset, 0);
this._scrollView.get_effect('fade').fade_edges = true; if (fadeOffset > 0)
this._scrollView.get_effect('fade').fade_edges = true;
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) { if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
this._adjustment.value = 0; this._adjustment.value = 0;
@ -1060,7 +1066,7 @@ const AppSearchProvider = new Lang.Class({
getInitialResultSet: function(terms, callback, cancellable) { getInitialResultSet: function(terms, callback, cancellable) {
let query = terms.join(' '); let query = terms.join(' ');
let groups = Gio.DesktopAppInfo.search(query); let groups = Shell.AppSystem.search(query);
let usage = Shell.AppUsage.get_default(); let usage = Shell.AppUsage.get_default();
let results = []; let results = [];
groups.forEach(function(group) { groups.forEach(function(group) {
@ -1289,7 +1295,10 @@ const FolderIcon = new Lang.Class({
if (!_listsIntersect(folderCategories, appCategories)) if (!_listsIntersect(folderCategories, appCategories))
return; return;
addAppId(appInfo.get_id()); try {
addAppId(appInfo.get_id()); // catch invalid file encodings
} catch(e) {
}
}); });
this.actor.visible = this.view.getAllItems().length > 0; this.actor.visible = this.view.getAllItems().length > 0;

View File

@ -144,6 +144,7 @@ const BackgroundCache = new Lang.Class({
this._pendingFileLoads = []; this._pendingFileLoads = [];
this._fileMonitors = {}; this._fileMonitors = {};
this._backgroundSources = {}; this._backgroundSources = {};
this._animations = {};
}, },
monitorFile: function(file) { monitorFile: function(file) {
@ -162,12 +163,13 @@ const BackgroundCache = new Lang.Class({
getAnimation: function(params) { getAnimation: function(params) {
params = Params.parse(params, { file: null, params = Params.parse(params, { file: null,
settingsSchema: null,
onLoaded: null }); onLoaded: null });
if (_fileEqual0(this._animationFile, params.file)) { if (this._animations[params.settingsSchema] && _fileEqual0(this._animationFile, params.file)) {
if (params.onLoaded) { if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation); params.onLoaded(this._animations[params.settingsSchema]);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
@ -178,12 +180,11 @@ const BackgroundCache = new Lang.Class({
let animation = new Animation({ file: params.file }); let animation = new Animation({ file: params.file });
animation.load(Lang.bind(this, function() { animation.load(Lang.bind(this, function() {
this._animationFile = params.file; this._animations[params.settingsSchema] = animation;
this._animation = animation;
if (params.onLoaded) { if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation); params.onLoaded(this._animations[params.settingsSchema]);
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
})); }));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded'); GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
@ -403,17 +404,18 @@ const Background = new Lang.Class({
_loadAnimation: function(file) { _loadAnimation: function(file) {
this._cache.getAnimation({ file: file, this._cache.getAnimation({ file: file,
onLoaded: Lang.bind(this, function(animation) { settingsSchema: this._settings.schema_id,
this._animation = animation; onLoaded: Lang.bind(this, function(animation) {
this._animation = animation;
if (!this._animation || this._cancellable.is_cancelled()) { if (!this._animation || this._cancellable.is_cancelled()) {
this._setLoaded(); this._setLoaded();
return; return;
} }
this._updateAnimation(); this._updateAnimation();
this._watchFile(file); this._watchFile(file);
}) })
}); });
}, },

View File

@ -16,9 +16,10 @@ const BackgroundMenu = new Lang.Class({
_init: function(layoutManager) { _init: function(layoutManager) {
this.parent(layoutManager.dummyCursor, 0, St.Side.TOP); this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop'); this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
this.actor.add_style_class_name('background-menu'); this.actor.add_style_class_name('background-menu');

View File

@ -24,6 +24,8 @@ const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const SHOW_WEEKDATE_KEY = 'show-weekdate'; const SHOW_WEEKDATE_KEY = 'show-weekdate';
const ELLIPSIS_CHAR = '\u2026'; const ELLIPSIS_CHAR = '\u2026';
const MESSAGE_ICON_SIZE = 32;
const MESSAGE_ANIMATION_TIME = 0.1; const MESSAGE_ANIMATION_TIME = 0.1;
const DEFAULT_EXPAND_LINES = 6; const DEFAULT_EXPAND_LINES = 6;
@ -976,7 +978,6 @@ const Message = new Lang.Class({
this._iconBin = new St.Bin({ style_class: 'message-icon-bin', this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
y_expand: true, y_expand: true,
visible: false }); visible: false });
this._iconBin.set_y_align(Clutter.ActorAlign.START);
hbox.add_actor(this._iconBin); hbox.add_actor(this._iconBin);
let contentBox = new St.BoxLayout({ style_class: 'message-content', let contentBox = new St.BoxLayout({ style_class: 'message-content',
@ -1229,7 +1230,7 @@ const NotificationMessage = new Lang.Class({
this._closed = true; this._closed = true;
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED); this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
})); }));
notification.connect('destroy', Lang.bind(this, this._destroyId = notification.connect('destroy', Lang.bind(this,
function() { function() {
if (!this._closed) if (!this._closed)
this.close(); this.close();
@ -1240,9 +1241,10 @@ const NotificationMessage = new Lang.Class({
_getIcon: function() { _getIcon: function() {
if (this.notification.gicon) if (this.notification.gicon)
return new St.Icon({ gicon: this.notification.gicon, icon_size: 48 }); return new St.Icon({ gicon: this.notification.gicon,
icon_size: MESSAGE_ICON_SIZE });
else else
return this.notification.source.createIcon(48); return this.notification.source.createIcon(MESSAGE_ICON_SIZE);
}, },
_onUpdated: function(n, clear) { _onUpdated: function(n, clear) {
@ -1260,6 +1262,10 @@ const NotificationMessage = new Lang.Class({
if (this._updatedId) if (this._updatedId)
this.notification.disconnect(this._updatedId); this.notification.disconnect(this._updatedId);
this._updatedId = 0; this._updatedId = 0;
if (this._destroyId)
this.notification.disconnect(this._destroyId);
this._destroyId = 0;
} }
}); });

View File

@ -325,9 +325,6 @@ const AutorunNotification = new Lang.Class({
this._manager = manager; this._manager = manager;
this._mount = source.mount; this._mount = source.mount;
// set the notification to urgent, so that it expands out
this.setUrgency(MessageTray.Urgency.CRITICAL);
}, },
createBanner: function() { createBanner: function() {

View File

@ -9,9 +9,15 @@ const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject; const GObject = imports.gi.GObject;
const Gcr = imports.gi.Gcr; const Gcr = imports.gi.Gcr;
const Animation = imports.ui.animation;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry; const ShellEntry = imports.ui.shellEntry;
const CheckBox = imports.ui.checkBox; const CheckBox = imports.ui.checkBox;
const Tweener = imports.ui.tweener;
const WORK_SPINNER_ICON_SIZE = 16;
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
const WORK_SPINNER_ANIMATION_TIME = 0.3;
const KeyringDialog = new Lang.Class({ const KeyringDialog = new Lang.Class({
Name: 'KeyringDialog', Name: 'KeyringDialog',
@ -58,27 +64,47 @@ const KeyringDialog = new Lang.Class({
{ y_fill: true, { y_fill: true,
y_align: St.Align.START }); y_align: St.Align.START });
this._workSpinner = null;
this._controlTable = null; this._controlTable = null;
this._cancelButton = this.addButton({ label: '', this._cancelButton = this.addButton({ label: '',
action: Lang.bind(this, this._onCancelButton), action: Lang.bind(this, this._onCancelButton),
key: Clutter.Escape }, key: Clutter.Escape });
{ expand: true, x_fill: false, x_align: St.Align.START });
this.placeSpinner({ expand: false,
x_fill: false,
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.MIDDLE });
this._continueButton = this.addButton({ label: '', this._continueButton = this.addButton({ label: '',
action: Lang.bind(this, this._onContinueButton), action: Lang.bind(this, this._onContinueButton),
default: true }, default: true });
{ expand: false, x_fill: false, x_align: St.Align.END });
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE); this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE); this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
}, },
_setWorking: function(working) {
if (!this._workSpinner)
return;
Tweener.removeTweens(this._workSpinner.actor);
if (working) {
this._workSpinner.play();
Tweener.addTween(this._workSpinner.actor,
{ opacity: 255,
delay: WORK_SPINNER_ANIMATION_DELAY,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear'
});
} else {
Tweener.addTween(this._workSpinner.actor,
{ opacity: 0,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear',
onCompleteScope: this,
onComplete: function() {
if (this._workSpinner)
this._workSpinner.stop();
}
});
}
},
_buildControlTable: function() { _buildControlTable: function() {
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL }); let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
let table = new St.Widget({ style_class: 'keyring-dialog-control-table', let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
@ -101,15 +127,22 @@ const KeyringDialog = new Lang.Class({
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true }); ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate)); this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0;
if (rtl) { if (rtl) {
layout.attach(this._passwordEntry, 0, row, 1, 1); layout.attach(this._workSpinner.actor, 0, row, 1, 1);
layout.attach(label, 1, row, 1, 1); layout.attach(this._passwordEntry, 1, row, 1, 1);
layout.attach(label, 2, row, 1, 1);
} else { } else {
layout.attach(label, 0, row, 1, 1); layout.attach(label, 0, row, 1, 1);
layout.attach(this._passwordEntry, 1, row, 1, 1); layout.attach(this._passwordEntry, 1, row, 1, 1);
layout.attach(this._workSpinner.actor, 2, row, 1, 1);
} }
row++; row++;
} else { } else {
this._workSpinner = null;
this._passwordEntry = null; this._passwordEntry = null;
} }
@ -178,7 +211,7 @@ const KeyringDialog = new Lang.Class({
this._continueButton.can_focus = sensitive; this._continueButton.can_focus = sensitive;
this._continueButton.reactive = sensitive; this._continueButton.reactive = sensitive;
this.setWorking(!sensitive); this._setWorking(!sensitive);
}, },
_ensureOpen: function() { _ensureOpen: function() {

View File

@ -13,13 +13,19 @@ const Mainloop = imports.mainloop;
const Polkit = imports.gi.Polkit; const Polkit = imports.gi.Polkit;
const PolkitAgent = imports.gi.PolkitAgent; const PolkitAgent = imports.gi.PolkitAgent;
const Animation = imports.ui.animation;
const Components = imports.ui.components; const Components = imports.ui.components;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry; const ShellEntry = imports.ui.shellEntry;
const UserWidget = imports.ui.userWidget; const UserWidget = imports.ui.userWidget;
const Tweener = imports.ui.tweener;
const DIALOG_ICON_SIZE = 48; const DIALOG_ICON_SIZE = 48;
const WORK_SPINNER_ICON_SIZE = 16;
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
const WORK_SPINNER_ANIMATION_TIME = 0.3;
const AuthenticationDialog = new Lang.Class({ const AuthenticationDialog = new Lang.Class({
Name: 'AuthenticationDialog', Name: 'AuthenticationDialog',
Extends: ModalDialog.ModalDialog, Extends: ModalDialog.ModalDialog,
@ -136,6 +142,13 @@ const AuthenticationDialog = new Lang.Class({
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate)); this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
this._passwordBox.add(this._passwordEntry, this._passwordBox.add(this._passwordEntry,
{ expand: true }); { expand: true });
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0;
this._passwordBox.add(this._workSpinner.actor);
this.setInitialKeyFocus(this._passwordEntry); this.setInitialKeyFocus(this._passwordEntry);
this._passwordBox.hide(); this._passwordBox.hide();
@ -165,17 +178,10 @@ const AuthenticationDialog = new Lang.Class({
this._cancelButton = this.addButton({ label: _("Cancel"), this._cancelButton = this.addButton({ label: _("Cancel"),
action: Lang.bind(this, this.cancel), action: Lang.bind(this, this.cancel),
key: Clutter.Escape }, key: Clutter.Escape });
{ expand: true, x_fill: false, x_align: St.Align.START });
this.placeSpinner({ expand: false,
x_fill: false,
y_fill: false,
x_align: St.Align.END,
y_align: St.Align.MIDDLE });
this._okButton = this.addButton({ label: _("Authenticate"), this._okButton = this.addButton({ label: _("Authenticate"),
action: Lang.bind(this, this._onAuthenticateButtonPressed), action: Lang.bind(this, this._onAuthenticateButtonPressed),
default: true }, default: true });
{ expand: false, x_fill: false, x_align: St.Align.END });
this._doneEmitted = false; this._doneEmitted = false;
@ -183,6 +189,30 @@ const AuthenticationDialog = new Lang.Class({
this._cookie = cookie; this._cookie = cookie;
}, },
_setWorking: function(working) {
Tweener.removeTweens(this._workSpinner.actor);
if (working) {
this._workSpinner.play();
Tweener.addTween(this._workSpinner.actor,
{ opacity: 255,
delay: WORK_SPINNER_ANIMATION_DELAY,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear'
});
} else {
Tweener.addTween(this._workSpinner.actor,
{ opacity: 0,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear',
onCompleteScope: this,
onComplete: function() {
if (this._workSpinner)
this._workSpinner.stop();
}
});
}
},
performAuthentication: function() { performAuthentication: function() {
this.destroySession(); this.destroySession();
this._session = new PolkitAgent.Session({ identity: this._identityToAuth, this._session = new PolkitAgent.Session({ identity: this._identityToAuth,
@ -229,7 +259,7 @@ const AuthenticationDialog = new Lang.Class({
this._okButton.can_focus = sensitive; this._okButton.can_focus = sensitive;
this._okButton.reactive = sensitive; this._okButton.reactive = sensitive;
this.setWorking(!sensitive); this._setWorking(!sensitive);
}, },
_onEntryActivate: function() { _onEntryActivate: function() {

View File

@ -303,6 +303,8 @@ const ChatSource = new Lang.Class({
}, },
_createPolicy: function() { _createPolicy: function() {
if (this._account.protocol_name == 'irc')
return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
return new MessageTray.NotificationApplicationPolicy('empathy'); return new MessageTray.NotificationApplicationPolicy('empathy');
}, },

View File

@ -357,8 +357,6 @@ const DateMenuButton = new Lang.Class({
this._date.setDate(now); this._date.setDate(now);
this._messageList.setDate(now); this._messageList.setDate(now);
} }
// Block notification banners while the menu is open
Main.messageTray.bannerBlocked = isOpen;
})); }));
// Fill up the first column // Fill up the first column

View File

@ -81,7 +81,6 @@ function init() {
// Miscellaneous monkeypatching // Miscellaneous monkeypatching
_patchContainerClass(St.BoxLayout); _patchContainerClass(St.BoxLayout);
_patchContainerClass(St.Table);
_patchLayoutClass(Clutter.TableLayout, { row_spacing: 'spacing-rows', _patchLayoutClass(Clutter.TableLayout, { row_spacing: 'spacing-rows',
column_spacing: 'spacing-columns' }); column_spacing: 'spacing-columns' });

View File

@ -24,9 +24,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
const SHOW_KEYBOARD = 'screen-keyboard-enabled'; const SHOW_KEYBOARD = 'screen-keyboard-enabled';
const CURSOR_BUS_NAME = 'org.gnome.SettingsDaemon.Cursor';
const CURSOR_OBJECT_PATH = '/org/gnome/SettingsDaemon/Cursor';
const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon'; const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon';
const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon'; const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon';
@ -114,6 +111,35 @@ const Key = new Lang.Class({
key.release(); key.release();
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
})); }));
button.connect('touch-event', Lang.bind(this,
function (actor, event) {
let device = event.get_device();
let sequence = event.get_event_sequence();
// We only handle touch events here on wayland. On X11
// we do get emulated pointer events, which already works
// for single-touch cases. Besides, the X11 passive touch grab
// set up by Mutter will make us see first the touch events
// and later the pointer events, so it will look like two
// unrelated series of events, we want to avoid double handling
// in these cases.
if (!Meta.is_wayland_compositor())
return Clutter.EVENT_PROPAGATE;
if (!this._touchPressed &&
event.type() == Clutter.EventType.TOUCH_BEGIN) {
device.sequence_grab(sequence, actor);
this._touchPressed = true;
key.press();
} else if (this._touchPressed &&
event.type() == Clutter.EventType.TOUCH_END &&
device.sequence_get_grabbed_actor(sequence) == actor) {
device.sequence_ungrab(sequence);
this._touchPressed = false;
key.release();
}
return Clutter.EVENT_PROPAGATE;
}));
return button; return button;
}, },
@ -178,9 +204,6 @@ const Keyboard = new Lang.Class({
this._keyboardSettings.connect('changed', Lang.bind(this, this._sync)); this._keyboardSettings.connect('changed', Lang.bind(this, this._sync));
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA }); this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA });
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync)); this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync));
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
Lang.bind(this, this._sync),
Lang.bind(this, this._sync));
this._daemonProxy = null; this._daemonProxy = null;
this._lastDeviceId = null; this._lastDeviceId = null;

View File

@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
// need to connect to 'destroy' too. // need to connect to 'destroy' too.
this._trackedActors.push(actorData); this._trackedActors.push(actorData);
this._updateActorVisibility(actorData);
this._queueUpdateRegions(); this._queueUpdateRegions();
}, },
@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
this._queueUpdateRegions(); this._queueUpdateRegions();
}, },
_updateActorVisibility: function(actorData) {
if (!actorData.trackFullscreen)
return;
let monitor = this.findMonitorForActor(actorData.actor);
actorData.actor.visible = !(global.window_group.visible &&
monitor &&
monitor.inFullscreen);
},
_updateVisibility: function() { _updateVisibility: function() {
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview; let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
global.window_group.visible = windowsVisible; global.window_group.visible = windowsVisible;
global.top_window_group.visible = windowsVisible; global.top_window_group.visible = windowsVisible;
for (let i = 0; i < this._trackedActors.length; i++) { this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
let actorData = this._trackedActors[i], visible;
if (!actorData.trackFullscreen)
continue;
if (!windowsVisible)
visible = true;
else if (this.findMonitorForActor(actorData.actor).inFullscreen)
visible = false;
else
visible = true;
actorData.actor.visible = visible;
}
}, },
getWorkAreaForMonitor: function(monitorIndex) { getWorkAreaForMonitor: function(monitorIndex) {
@ -1316,8 +1315,11 @@ const PressureBarrier = new Lang.Class({
}, },
_onBarrierLeft: function(barrier, event) { _onBarrierLeft: function(barrier, event) {
this._reset(); barrier._isHit = false;
this._isTriggered = false; if (this._barriers.every(function(b) { return !b._isHit; })) {
this._reset();
this._isTriggered = false;
}
}, },
_trigger: function() { _trigger: function() {
@ -1327,6 +1329,8 @@ const PressureBarrier = new Lang.Class({
}, },
_onBarrierHit: function(barrier, event) { _onBarrierHit: function(barrier, event) {
barrier._isHit = true;
// If we've triggered the barrier, wait until the pointer has the // If we've triggered the barrier, wait until the pointer has the
// left the barrier hitbox until we trigger it again. // left the barrier hitbox until we trigger it again.
if (this._isTriggered) if (this._isTriggered)

View File

@ -4,6 +4,7 @@ const Atspi = imports.gi.Atspi;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GDesktopEnums = imports.gi.GDesktopEnums; const GDesktopEnums = imports.gi.GDesktopEnums;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const St = imports.gi.St; const St = imports.gi.St;
const Lang = imports.lang; const Lang = imports.lang;
@ -22,6 +23,8 @@ const MOUSE_POLL_FREQUENCY = 50;
const CROSSHAIRS_CLIP_SIZE = [100, 100]; const CROSSHAIRS_CLIP_SIZE = [100, 100];
const NO_CHANGE = 0.0; const NO_CHANGE = 0.0;
const POINTER_REST_TIME = 1000; // milliseconds
// Settings // Settings
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications'; const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
const SHOW_KEY = 'screen-magnifier-enabled'; const SHOW_KEY = 'screen-magnifier-enabled';
@ -709,6 +712,9 @@ const ZoomRegion = new Lang.Class({
this._xCaret = 0; this._xCaret = 0;
this._yCaret = 0; this._yCaret = 0;
this._pointerIdleMonitor = Meta.IdleMonitor.get_for_device(Meta.VIRTUAL_CORE_POINTER_ID);
this._scrollContentsTimerId = 0;
Main.layoutManager.connect('monitors-changed', Main.layoutManager.connect('monitors-changed',
Lang.bind(this, this._monitorsChanged)); Lang.bind(this, this._monitorsChanged));
this._focusCaretTracker.connect('caret-moved', this._focusCaretTracker.connect('caret-moved',
@ -1068,6 +1074,26 @@ const ZoomRegion = new Lang.Class({
return this._isMouseOverRegion(); return this._isMouseOverRegion();
}, },
_clearScrollContentsTimer: function() {
if (this._scrollContentsTimerId != 0) {
Mainloop.source_remove(this._scrollContentsTimerId);
this._scrollContentsTimerId = 0;
}
},
_scrollContentsToDelayed: function(x, y) {
if (this._pointerIdleMonitor.get_idletime() >= POINTER_REST_TIME) {
this.scrollContentsTo(x, y);
return;
}
this._clearScrollContentsTimer();
this._scrollContentsTimerId = Mainloop.timeout_add(POINTER_REST_TIME, Lang.bind(this, function() {
this._scrollContentsToDelayed(x, y);
return GLib.SOURCE_REMOVE;
}));
},
/** /**
* scrollContentsTo: * scrollContentsTo:
* Shift the contents of the magnified view such it is centered on the given * Shift the contents of the magnified view such it is centered on the given
@ -1076,6 +1102,8 @@ const ZoomRegion = new Lang.Class({
* @y: The y-coord of the point to center on. * @y: The y-coord of the point to center on.
*/ */
scrollContentsTo: function(x, y) { scrollContentsTo: function(x, y) {
this._clearScrollContentsTimer();
this._followingCursor = false; this._followingCursor = false;
this._changeROI({ xCenter: x, this._changeROI({ xCenter: x,
yCenter: y }); yCenter: y });
@ -1381,7 +1409,7 @@ const ZoomRegion = new Lang.Class({
else if (this._caretTrackingMode == GDesktopEnums.MagnifierCaretTrackingMode.CENTERED) else if (this._caretTrackingMode == GDesktopEnums.MagnifierCaretTrackingMode.CENTERED)
[xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret); [xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret);
this.scrollContentsTo(xCaret, yCaret); this._scrollContentsToDelayed(xCaret, yCaret);
}, },
_centerFromFocusPosition: function() { _centerFromFocusPosition: function() {
@ -1395,7 +1423,7 @@ const ZoomRegion = new Lang.Class({
else if (this._focusTrackingMode == GDesktopEnums.MagnifierFocusTrackingMode.CENTERED) else if (this._focusTrackingMode == GDesktopEnums.MagnifierFocusTrackingMode.CENTERED)
[xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus); [xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus);
this.scrollContentsTo(xFocus, yFocus); this._scrollContentsToDelayed(xFocus, yFocus);
}, },
_centerFromPointPush: function(xPoint, yPoint) { _centerFromPointPush: function(xPoint, yPoint) {

View File

@ -69,26 +69,6 @@ const Urgency = {
CRITICAL: 3 CRITICAL: 3
}; };
function _fixMarkup(text, allowMarkup) {
if (allowMarkup) {
// Support &amp;, &quot;, &apos;, &lt; and &gt;, escape all other
// occurrences of '&'.
let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&amp;');
// Support <b>, <i>, and <u>, escape anything else
// so it displays as raw markup.
_text = _text.replace(/<(?!\/?[biu]>)/g, '&lt;');
try {
Pango.parse_markup(_text, -1, '');
return _text;
} catch (e) {}
}
// !allowMarkup, or invalid markup
return GLib.markup_escape_text(text, -1);
}
const FocusGrabber = new Lang.Class({ const FocusGrabber = new Lang.Class({
Name: 'FocusGrabber', Name: 'FocusGrabber',
@ -258,6 +238,8 @@ const NotificationApplicationPolicy = new Lang.Class({
_changed: function(settings, key) { _changed: function(settings, key) {
this.emit('policy-changed', key); this.emit('policy-changed', key);
if (key == 'enable')
this.emit('enable-changed');
}, },
_canonicalizeId: function(id) { _canonicalizeId: function(id) {
@ -508,6 +490,7 @@ const NotificationBanner = new Lang.Class({
_init: function(notification) { _init: function(notification) {
this.parent(notification); this.parent(notification);
this.actor.can_focus = false;
this.actor.add_style_class_name('notification-banner'); this.actor.add_style_class_name('notification-banner');
this._buttonBox = null; this._buttonBox = null;
@ -975,6 +958,14 @@ const MessageTray = new Lang.Class({
Shell.util_set_hidden_from_pick(this.actor, false); Shell.util_set_hidden_from_pick(this.actor, false);
}, },
get bannerAlignment() {
return this._bannerBin.get_x_align();
},
set bannerAlignment(align) {
this._bannerBin.set_x_align(align);
},
_onNotificationKeyRelease: function(actor, event) { _onNotificationKeyRelease: function(actor, event) {
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) { if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
this._expireNotification(); this._expireNotification();

View File

@ -14,7 +14,6 @@ const Atk = imports.gi.Atk;
const Params = imports.misc.params; const Params = imports.misc.params;
const Animation = imports.ui.animation;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
const Lightbox = imports.ui.lightbox; const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -23,10 +22,6 @@ const Tweener = imports.ui.tweener;
const OPEN_AND_CLOSE_TIME = 0.1; const OPEN_AND_CLOSE_TIME = 0.1;
const FADE_OUT_DIALOG_TIME = 1.0; const FADE_OUT_DIALOG_TIME = 1.0;
const WORK_SPINNER_ICON_SIZE = 24;
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
const WORK_SPINNER_ANIMATION_TIME = 0.3;
const State = { const State = {
OPENED: 0, OPENED: 0,
CLOSED: 1, CLOSED: 1,
@ -79,7 +74,9 @@ const ModalDialog = new Lang.Class({
this._group.add_actor(this._backgroundBin); this._group.add_actor(this._backgroundBin);
this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog', this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
vertical: true }); x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
vertical: true });
// modal dialogs are fixed width and grow vertically; set the request // modal dialogs are fixed width and grow vertically; set the request
// mode accordingly so wrapped labels are handled correctly during // mode accordingly so wrapped labels are handled correctly during
// size requests. // size requests.
@ -100,7 +97,8 @@ const ModalDialog = new Lang.Class({
this.backgroundStack.add_actor(this.dialogLayout); this.backgroundStack.add_actor(this.dialogLayout);
this.contentLayout = new St.BoxLayout({ vertical: true }); this.contentLayout = new St.BoxLayout({ vertical: true,
style_class: "modal-dialog-content-box" });
this.dialogLayout.add(this.contentLayout, this.dialogLayout.add(this.contentLayout,
{ expand: true, { expand: true,
x_fill: true, x_fill: true,
@ -108,8 +106,7 @@ const ModalDialog = new Lang.Class({
x_align: St.Align.MIDDLE, x_align: St.Align.MIDDLE,
y_align: St.Align.START }); y_align: St.Align.START });
this.buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box', this.buttonLayout = new St.Widget ({ layout_manager: new Clutter.BoxLayout ({ homogeneous:true }) });
vertical: false });
this.dialogLayout.add(this.buttonLayout, this.dialogLayout.add(this.buttonLayout,
{ x_align: St.Align.MIDDLE, { x_align: St.Align.MIDDLE,
y_align: St.Align.END }); y_align: St.Align.END });
@ -118,8 +115,6 @@ const ModalDialog = new Lang.Class({
this._initialKeyFocus = this.dialogLayout; this._initialKeyFocus = this.dialogLayout;
this._initialKeyFocusDestroyId = 0; this._initialKeyFocusDestroyId = 0;
this._savedKeyFocus = null; this._savedKeyFocus = null;
this._workSpinner = null;
}, },
destroy: function() { destroy: function() {
@ -147,16 +142,12 @@ const ModalDialog = new Lang.Class({
else else
x_alignment = St.Align.MIDDLE; x_alignment = St.Align.MIDDLE;
this.addButton(buttonInfo, { expand: true, this.addButton(buttonInfo);
x_fill: false,
y_fill: false,
x_align: x_alignment,
y_align: St.Align.MIDDLE });
} }
}, },
addButton: function(buttonInfo, layoutInfo) { addButton: function(buttonInfo) {
let label = buttonInfo['label']; let label = buttonInfo['label']
let action = buttonInfo['action']; let action = buttonInfo['action'];
let key = buttonInfo['key']; let key = buttonInfo['key'];
let isDefault = buttonInfo['default']; let isDefault = buttonInfo['default'];
@ -170,10 +161,12 @@ const ModalDialog = new Lang.Class({
else else
keys = []; keys = [];
let button = new St.Button({ style_class: 'modal-dialog-button button', let button = new St.Button({ style_class: 'modal-dialog-linked-button',
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
reactive: true, reactive: true,
can_focus: true, can_focus: true,
x_expand: true,
y_expand: true,
label: label }); label: label });
button.connect('clicked', action); button.connect('clicked', action);
@ -188,47 +181,11 @@ const ModalDialog = new Lang.Class({
for (let i in keys) for (let i in keys)
this._buttonKeys[keys[i]] = buttonInfo; this._buttonKeys[keys[i]] = buttonInfo;
this.buttonLayout.add(button, layoutInfo); this.buttonLayout.add_actor(button);
return button; return button;
}, },
placeSpinner: function(layoutInfo) {
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0;
this._workSpinner.actor.show();
this.buttonLayout.add(this._workSpinner.actor, layoutInfo);
},
setWorking: function(working) {
if (!this._workSpinner)
return;
Tweener.removeTweens(this._workSpinner.actor);
if (working) {
this._workSpinner.play();
Tweener.addTween(this._workSpinner.actor,
{ opacity: 255,
delay: WORK_SPINNER_ANIMATION_DELAY,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear'
});
} else {
Tweener.addTween(this._workSpinner.actor,
{ opacity: 0,
time: WORK_SPINNER_ANIMATION_TIME,
transition: 'linear',
onCompleteScope: this,
onComplete: function() {
if (this._workSpinner)
this._workSpinner.stop();
}
});
}
},
_onKeyPressEvent: function(object, event) { _onKeyPressEvent: function(object, event) {
this._pressedKey = event.get_key_symbol(); this._pressedKey = event.get_key_symbol();
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;

View File

@ -15,8 +15,7 @@ const OsdMonitorLabel = new Lang.Class({
Name: 'OsdMonitorLabel', Name: 'OsdMonitorLabel',
_init: function(monitor, label) { _init: function(monitor, label) {
this._actor = new St.Widget({ opacity: 0, this._actor = new St.Widget({ x_expand: true,
x_expand: true,
y_expand: true }); y_expand: true });
this._monitor = monitor; this._monitor = monitor;
@ -34,10 +33,6 @@ const OsdMonitorLabel = new Lang.Class({
this._position(); this._position();
Meta.disable_unredirect_for_screen(global.screen); Meta.disable_unredirect_for_screen(global.screen);
Tweener.addTween(this._actor,
{ opacity: 255,
time: FADE_TIME,
transition: 'easeOutQuad' });
}, },
_position: function() { _position: function() {
@ -52,15 +47,8 @@ const OsdMonitorLabel = new Lang.Class({
}, },
destroy: function() { destroy: function() {
Tweener.addTween(this._actor, this._actor.destroy();
{ opacity: 0, Meta.enable_unredirect_for_screen(global.screen);
time: FADE_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this._actor.destroy();
Meta.enable_unredirect_for_screen(global.screen);
})
});
} }
}); });

View File

@ -107,13 +107,6 @@ const Overview = new Lang.Class({
this._overviewCreated = true; this._overviewCreated = true;
// The main Background actors are inside global.window_group which are
// hidden when displaying the overview, so we create a new
// one. Instances of this class share a single CoglTexture behind the
// scenes which allows us to show the background with different
// rendering options without duplicating the texture data.
let monitor = Main.layoutManager.primaryMonitor;
let layout = new Clutter.BinLayout(); let layout = new Clutter.BinLayout();
this._stack = new Clutter.Actor({ layout_manager: layout }); this._stack = new Clutter.Actor({ layout_manager: layout });
this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true })); this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
@ -128,6 +121,11 @@ const Overview = new Lang.Class({
y_expand: true }); y_expand: true });
this._overview._delegate = this; this._overview._delegate = this;
// The main Background actors are inside global.window_group which are
// hidden when displaying the overview, so we create a new
// one. Instances of this class share a single CoglTexture behind the
// scenes which allows us to show the background with different
// rendering options without duplicating the texture data.
this._backgroundGroup = new Meta.BackgroundGroup(); this._backgroundGroup = new Meta.BackgroundGroup();
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup); Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
this._bgManagers = []; this._bgManagers = [];

View File

@ -25,12 +25,12 @@ const RemoteMenu = imports.ui.remoteMenu;
const Main = imports.ui.main; const Main = imports.ui.main;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const PANEL_ICON_SIZE = 24; const PANEL_ICON_SIZE = 16;
const APP_MENU_ICON_MARGIN = 2; const APP_MENU_ICON_MARGIN = 0;
const BUTTON_DND_ACTIVATION_TIMEOUT = 250; const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
const SPINNER_ANIMATION_TIME = 0.2; const SPINNER_ANIMATION_TIME = 1.0;
// To make sure the panel corners blend nicely with the panel, // To make sure the panel corners blend nicely with the panel,
// we draw background and borders the same way, e.g. drawing // we draw background and borders the same way, e.g. drawing
@ -95,6 +95,7 @@ const AppMenuButton = new Lang.Class({
this._startingApps = []; this._startingApps = [];
this._menuManager = panel.menuManager; this._menuManager = panel.menuManager;
this._gtkSettings = Gtk.Settings.get_default();
this._targetApp = null; this._targetApp = null;
this._appMenuNotifyId = 0; this._appMenuNotifyId = 0;
this._actionGroupNotifyId = 0; this._actionGroupNotifyId = 0;
@ -123,11 +124,14 @@ const AppMenuButton = new Lang.Class({
this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM); this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM);
this._container.add_actor(this._arrow); this._container.add_actor(this._arrow);
this._visible = !Main.overview.visible; this._visible = this._gtkSettings.gtk_shell_shows_app_menu &&
!Main.overview.visible;
if (!this._visible) if (!this._visible)
this.actor.hide(); this.actor.hide();
this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync)); this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync));
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync)); this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync));
this._showsAppMenuId = this._gtkSettings.connect('notify::gtk-shell-shows-app-menu',
Lang.bind(this, this._sync));
this._stop = true; this._stop = true;
@ -305,7 +309,9 @@ const AppMenuButton = new Lang.Class({
} }
} }
let visible = (this._targetApp != null && !Main.overview.visibleTarget); let visible = (this._targetApp != null &&
this._gtkSettings.gtk_shell_shows_app_menu &&
!Main.overview.visibleTarget);
if (visible) if (visible)
this.show(); this.show();
else else
@ -378,6 +384,10 @@ const AppMenuButton = new Lang.Class({
Main.overview.disconnect(this._overviewShowingId); Main.overview.disconnect(this._overviewShowingId);
this._overviewShowingId = 0; this._overviewShowingId = 0;
} }
if (this._showsAppMenuId > 0) {
this._gtkSettings.disconnect(this._showsAppMenuId);
this._showsAppMenuId = 0;
}
if (this._switchWorkspaceNotifyId > 0) { if (this._switchWorkspaceNotifyId > 0) {
global.window_manager.disconnect(this._switchWorkspaceNotifyId); global.window_manager.disconnect(this._switchWorkspaceNotifyId);
this._switchWorkspaceNotifyId = 0; this._switchWorkspaceNotifyId = 0;
@ -647,7 +657,7 @@ const AggregateMenu = new Lang.Class({
Extends: PanelMenu.Button, Extends: PanelMenu.Button,
_init: function() { _init: function() {
this.parent(0.0, _("Settings"), false); this.parent(0.0, C_("System menu in the top bar", "System"), false);
this.menu.actor.add_style_class_name('aggregate-menu'); this.menu.actor.add_style_class_name('aggregate-menu');
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' }); this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
@ -697,7 +707,6 @@ const AggregateMenu = new Lang.Class({
this.menu.addMenuItem(this._location.menu); this.menu.addMenuItem(this._location.menu);
this.menu.addMenuItem(this._rfkill.menu); this.menu.addMenuItem(this._rfkill.menu);
this.menu.addMenuItem(this._power.menu); this.menu.addMenuItem(this._power.menu);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addMenuItem(this._system.menu); this.menu.addMenuItem(this._system.menu);
}, },
}); });
@ -933,6 +942,14 @@ const Panel = new Lang.Class({
this._updateBox(panel.center, this._centerBox); this._updateBox(panel.center, this._centerBox);
this._updateBox(panel.right, this._rightBox); this._updateBox(panel.right, this._rightBox);
if (panel.left.indexOf('dateMenu') != -1)
Main.messageTray.bannerAlignment = Clutter.ActorAlign.START;
else if (panel.right.indexOf('dateMenu') != -1)
Main.messageTray.bannerAlignment = Clutter.ActorAlign.END;
// Default to center if there is no dateMenu
else
Main.messageTray.bannerAlignment = Clutter.ActorAlign.CENTER;
if (this._sessionStyle) if (this._sessionStyle)
this._removeStyleClassName(this._sessionStyle); this._removeStyleClassName(this._sessionStyle);
@ -995,6 +1012,7 @@ const Panel = new Lang.Class({
if (parent) if (parent)
parent.remove_actor(container); parent.remove_actor(container);
box.insert_child_at_index(container, position); box.insert_child_at_index(container, position);
if (indicator.menu) if (indicator.menu)
this.menuManager.addMenu(indicator.menu); this.menuManager.addMenu(indicator.menu);
@ -1004,6 +1022,8 @@ const Panel = new Lang.Class({
emitter.disconnect(destroyId); emitter.disconnect(destroyId);
container.destroy(); container.destroy();
})); }));
indicator.connect('menu-set', Lang.bind(this, this._onMenuSet));
this._onMenuSet(indicator);
}, },
addToStatusArea: function(role, indicator, position, box) { addToStatusArea: function(role, indicator, position, box) {
@ -1035,5 +1055,24 @@ const Panel = new Lang.Class({
this.actor.remove_style_class_name(className); this.actor.remove_style_class_name(className);
this._rightCorner.actor.remove_style_class_name(className); this._rightCorner.actor.remove_style_class_name(className);
this._leftCorner.actor.remove_style_class_name(className); this._leftCorner.actor.remove_style_class_name(className);
},
_onMenuSet: function(indicator) {
if (!indicator.menu || indicator.menu._openChangedId > 0)
return;
indicator.menu._openChangedId = indicator.menu.connect('open-state-changed',
Lang.bind(this, function(menu, isOpen) {
let boxAlignment;
if (this._leftBox.contains(indicator.container))
boxAlignment = Clutter.ActorAlign.START;
else if (this._centerBox.contains(indicator.container))
boxAlignment = Clutter.ActorAlign.CENTER;
else if (this._rightBox.contains(indicator.container))
boxAlignment = Clutter.ActorAlign.END;
if (boxAlignment == Main.messageTray.bannerAlignment)
Main.messageTray.bannerBlocked = isOpen;
}));
} }
}); });

View File

@ -128,6 +128,7 @@ const Button = new Lang.Class({
Main.uiGroup.add_actor(this.menu.actor); Main.uiGroup.add_actor(this.menu.actor);
this.menu.actor.hide(); this.menu.actor.hide();
} }
this.emit('menu-set');
}, },
_onEvent: function(actor, event) { _onEvent: function(actor, event) {

View File

@ -396,6 +396,7 @@ const PopupImageMenuItem = new Lang.Class({
this.actor.add_child(this.label); this.actor.add_child(this.label);
this._icon = new St.Icon({ style_class: 'popup-menu-icon' }); this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
this.actor.add_child(this._icon, { align: St.Align.END }); this.actor.add_child(this._icon, { align: St.Align.END });
this.actor.label_actor = this.label;
this.setIcon(iconName); this.setIcon(iconName);
}, },
@ -1059,11 +1060,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' }); let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
this.actor.add(expander, { expand: true }); this.actor.add(expander, { expand: true });
this.status = new St.Label({ style_class: 'popup-status-menu-item',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add_child(this.status);
this._triangle = arrowIcon(St.Side.RIGHT); this._triangle = arrowIcon(St.Side.RIGHT);
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 }); this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });

View File

@ -507,21 +507,22 @@ const ScreenShield = new Lang.Class({
this._liftShield(true, 0); this._liftShield(true, 0);
})); }));
this._inhibitor = null;
this._aboutToSuspend = false;
this._loginManager = LoginManager.getLoginManager(); this._loginManager = LoginManager.getLoginManager();
this._loginManager.connect('prepare-for-sleep', this._loginManager.connect('prepare-for-sleep',
Lang.bind(this, this._prepareForSleep)); Lang.bind(this, this._prepareForSleep));
this._inhibitSuspend();
this._loginSession = null;
this._loginManager.getCurrentSessionProxy(Lang.bind(this, this._loginManager.getCurrentSessionProxy(Lang.bind(this,
function(sessionProxy) { function(sessionProxy) {
this._loginSession = sessionProxy; this._loginSession = sessionProxy;
this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); })); this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); })); this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); }));
this._loginSession.connect('g-properties-changed', Lang.bind(this, this._syncInhibitor));
this._syncInhibitor();
})); }));
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor));
this._isModal = false; this._isModal = false;
this._hasLockScreen = false; this._hasLockScreen = false;
@ -547,6 +548,18 @@ const ScreenShield = new Lang.Class({
this.idleMonitor = Meta.IdleMonitor.get_core(); this.idleMonitor = Meta.IdleMonitor.get_core();
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen); this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
this._syncInhibitor();
},
_setActive: function(active) {
let prevIsActive = this._isActive;
this._isActive = active;
if (prevIsActive != this._isActive)
this.emit('active-changed');
this._syncInhibitor();
}, },
_createBackground: function(monitorIndex) { _createBackground: function(monitorIndex) {
@ -664,31 +677,28 @@ const ScreenShield = new Lang.Class({
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
}, },
_inhibitSuspend: function() { _syncInhibitor: function() {
this._loginManager.inhibit(_("GNOME needs to lock the screen"), let inhibit = (this._loginSession && this._loginSession.Active &&
Lang.bind(this, function(inhibitor) { !this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY));
this._inhibitor = inhibitor; if (inhibit) {
})); this._loginManager.inhibit(_("GNOME needs to lock the screen"),
}, Lang.bind(this, function(inhibitor) {
if (this._inhibitor)
_uninhibitSuspend: function() { this._inhibitor.close(null);
if (this._inhibitor) this._inhibitor = inhibitor;
this._inhibitor.close(null); }));
this._inhibitor = null; } else {
if (this._inhibitor)
this._inhibitor.close(null);
this._inhibitor = null;
}
}, },
_prepareForSleep: function(loginManager, aboutToSuspend) { _prepareForSleep: function(loginManager, aboutToSuspend) {
this._aboutToSuspend = aboutToSuspend;
if (aboutToSuspend) { if (aboutToSuspend) {
if (!this._settings.get_boolean(LOCK_ENABLED_KEY)) { if (this._settings.get_boolean(LOCK_ENABLED_KEY))
this._uninhibitSuspend(); this.lock(true);
return;
}
this.lock(true);
} else { } else {
this._inhibitSuspend();
this._wakeUpScreen(); this._wakeUpScreen();
} }
}, },
@ -1083,15 +1093,7 @@ const ScreenShield = new Lang.Class({
}, },
_completeLockScreenShown: function() { _completeLockScreenShown: function() {
let prevIsActive = this._isActive; this._setActive(true);
this._isActive = true;
if (prevIsActive != this._isActive)
this.emit('active-changed');
if (this._aboutToSuspend)
this._uninhibitSuspend();
this.emit('lock-screen-shown'); this.emit('lock-screen-shown');
}, },
@ -1185,8 +1187,7 @@ const ScreenShield = new Lang.Class({
// gnome-settings-daemon will stop blanking the screen // gnome-settings-daemon will stop blanking the screen
this._activationTime = 0; this._activationTime = 0;
this._isActive = false; this._setActive(false);
this.emit('active-changed');
return; return;
} }
@ -1229,9 +1230,8 @@ const ScreenShield = new Lang.Class({
} }
this._activationTime = 0; this._activationTime = 0;
this._isActive = false; this._setActive(false);
this._isLocked = false; this._isLocked = false;
this.emit('active-changed');
this.emit('locked-changed'); this.emit('locked-changed');
global.set_runtime_state(LOCKED_STATE_STR, null); global.set_runtime_state(LOCKED_STATE_STR, null);
}, },

View File

@ -46,7 +46,7 @@ const Indicator = new Lang.Class({
// The Bluetooth menu only appears when Bluetooth is in use, // The Bluetooth menu only appears when Bluetooth is in use,
// so just statically build it with a "Turn Off" menu item. // so just statically build it with a "Turn Off" menu item.
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true); this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
this._item.icon.icon_name = 'bluetooth-active-symbolic'; this._item.icon.icon_name = 'bluetooth-active-symbolic';
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() { this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
this._proxy.BluetoothAirplaneMode = true; this._proxy.BluetoothAirplaneMode = true;
@ -101,8 +101,9 @@ const Indicator = new Lang.Class({
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode; this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
if (nDevices > 0) if (nDevices > 0)
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices", nDevices).format(nDevices); /* Translators: this is the number of connected bluetooth devices */
this._item.label.text = ngettext("%d Connected", "%d Connected", nDevices).format(nDevices);
else else
this._item.status.text = _("Not Connected"); this._item.label.text = _("Not In Use");
}, },
}); });

View File

@ -62,13 +62,13 @@ const Indicator = new Lang.Class({
this._indicator = this._addIndicator(); this._indicator = this._addIndicator();
this._indicator.icon_name = 'find-location-symbolic'; this._indicator.icon_name = 'find-location-symbolic';
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Location"), true); this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
this._item.icon.icon_name = 'find-location-symbolic'; this._item.icon.icon_name = 'find-location-symbolic';
this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this); this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this);
this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent'); this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent');
this._item.status.text = _("Enabled"); this._item.label.text = _("Location Enabled");
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction)); this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop'); this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop');
@ -173,10 +173,11 @@ const Indicator = new Lang.Class({
_updateMenuLabels: function() { _updateMenuLabels: function() {
if (this._settings.get_boolean(ENABLED)) { if (this._settings.get_boolean(ENABLED)) {
this._item.status.text = this._indicator.visible ? _("In Use") : _("Enabled"); this._item.label.text = this._indicator.visible ? _("Location In Use")
: _("Location Enabled");
this._onOffAction.label.text = _("Disable"); this._onOffAction.label.text = _("Disable");
} else { } else {
this._item.status.text = _("Disabled"); this._item.label.text = _("Location Disabled");
this._onOffAction.label.text = _("Enable"); this._onOffAction.label.text = _("Enable");
} }
}, },

View File

@ -257,16 +257,8 @@ const NMConnectionSection = new Lang.Class({
this._radioSection.actor.visible = (nItems > 1); this._radioSection.actor.visible = (nItems > 1);
this._labelSection.actor.visible = (nItems == 1); this._labelSection.actor.visible = (nItems == 1);
this.item.status.text = this._getStatus(); this.item.label.text = this._getStatus();
this.item.icon.icon_name = this._getMenuIcon(); this.item.icon.icon_name = this._getMenuIcon();
// desc can be undefined at cold-plug, before we called
// NMGtk.disambiguate_device_names() at least once
let desc = this._getDescription();
if (desc)
this.item.label.text = desc;
else
this.item.label.text = '';
}, },
_getMenuIcon: function() { _getMenuIcon: function() {
@ -355,6 +347,7 @@ const NMConnectionDevice = new Lang.Class({
this.parent(client); this.parent(client);
this._device = device; this._device = device;
this._settings = settings; this._settings = settings;
this._description = '';
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect)); this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
this._deactivateItem = this._radioSection.addAction(_("Turn Off"), Lang.bind(this, this.deactivateConnection)); this._deactivateItem = this._radioSection.addAction(_("Turn Off"), Lang.bind(this, this.deactivateConnection));
@ -454,38 +447,44 @@ const NMConnectionDevice = new Lang.Class({
switch(this._device.state) { switch(this._device.state) {
case NetworkManager.DeviceState.DISCONNECTED: case NetworkManager.DeviceState.DISCONNECTED:
return _("Off"); /* Translators: %s is a network identifier */
return _("%s Off").format(this._getDescription());
case NetworkManager.DeviceState.ACTIVATED: case NetworkManager.DeviceState.ACTIVATED:
return _("Connected"); /* Translators: %s is a network identifier */
return _("%s Connected").format(this._getDescription());
case NetworkManager.DeviceState.UNMANAGED: case NetworkManager.DeviceState.UNMANAGED:
/* Translators: this is for network devices that are physically present but are not /* Translators: this is for network devices that are physically present but are not
under NetworkManager's control (and thus cannot be used in the menu) */ under NetworkManager's control (and thus cannot be used in the menu);
return _("Unmanaged"); %s is a network identifier */
return _("%s Unmanaged").format(this._getDescription());
case NetworkManager.DeviceState.DEACTIVATING: case NetworkManager.DeviceState.DEACTIVATING:
return _("Disconnecting"); /* Translators: %s is a network identifier */
return _("%s Disconnecting").format(this._getDescription());
case NetworkManager.DeviceState.PREPARE: case NetworkManager.DeviceState.PREPARE:
case NetworkManager.DeviceState.CONFIG: case NetworkManager.DeviceState.CONFIG:
case NetworkManager.DeviceState.IP_CONFIG: case NetworkManager.DeviceState.IP_CONFIG:
case NetworkManager.DeviceState.IP_CHECK: case NetworkManager.DeviceState.IP_CHECK:
case NetworkManager.DeviceState.SECONDARIES: case NetworkManager.DeviceState.SECONDARIES:
return _("Connecting"); /* Translators: %s is a network identifier */
return _("%s Connecting").format(this._getDescription());
case NetworkManager.DeviceState.NEED_AUTH: case NetworkManager.DeviceState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */ /* Translators: this is for network connections that require some kind of key or password; %s is a network identifier */
return _("Authentication required"); return _("%s Requires Authentication").format(this._getDescription());
case NetworkManager.DeviceState.UNAVAILABLE: case NetworkManager.DeviceState.UNAVAILABLE:
// This state is actually a compound of various states (generically unavailable, // This state is actually a compound of various states (generically unavailable,
// firmware missing), that are exposed by different properties (whose state may // firmware missing), that are exposed by different properties (whose state may
// or may not updated when we receive state-changed). // or may not updated when we receive state-changed).
if (this._device.firmware_missing) { if (this._device.firmware_missing) {
/* Translators: this is for devices that require some kind of firmware or kernel /* Translators: this is for devices that require some kind of firmware or kernel
module, which is missing */ module, which is missing; %s is a network identifier */
return _("Firmware missing"); return _("Firmware Missing For %s").format(this._getDescription());
} }
/* Translators: this is for a network device that cannot be activated (for example it /* Translators: this is for a network device that cannot be activated (for example it
is disabled by rfkill, or it has no coverage */ is disabled by rfkill, or it has no coverage; %s is a network identifier */
return _("Unavailable"); return _("%s Unavailable").format(this._getDescription());
case NetworkManager.DeviceState.FAILED: case NetworkManager.DeviceState.FAILED:
return _("Connection failed"); /* Translators: %s is a network identifier */
return _("%s Connection Failed").format(this._getDescription());
default: default:
log('Device state invalid, is %d'.format(this._device.state)); log('Device state invalid, is %d'.format(this._device.state));
return 'invalid'; return 'invalid';
@ -585,11 +584,12 @@ const NMDeviceModem = new Lang.Class({
_getStatus: function() { _getStatus: function() {
if (!this._client.wwan_hardware_enabled) if (!this._client.wwan_hardware_enabled)
return _("Hardware Disabled"); /* Translators: %s is a network identifier */
return _("%s Hardware Disabled").format(this._getDescription());
else if (!this._client.wwan_enabled) else if (!this._client.wwan_enabled)
/* Translators: this is for a network device that cannot be activated /* Translators: this is for a network device that cannot be activated
because it's disabled by rfkill (airplane mode) */ because it's disabled by rfkill (airplane mode); %s is a network identifier */
return _("Disabled"); return _("%s Disabled").format(this._getDescription());
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED && else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
this._mobileDevice && this._mobileDevice.operator_name) this._mobileDevice && this._mobileDevice.operator_name)
return this._mobileDevice.operator_name; return this._mobileDevice.operator_name;
@ -877,7 +877,7 @@ const NMWirelessDialog = new Lang.Class({
y_align: Clutter.ActorAlign.CENTER }); y_align: Clutter.ActorAlign.CENTER });
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 24, 24); this._noNetworksSpinner = new Animation.AnimatedIcon(file, 16, 16);
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor); this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label', this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
text: _("No Networks") })); text: _("No Networks") }));
@ -917,10 +917,7 @@ const NMWirelessDialog = new Lang.Class({
key: Clutter.Escape }); key: Clutter.Escape });
this._connectButton = this.addButton({ action: Lang.bind(this, this._connect), this._connectButton = this.addButton({ action: Lang.bind(this, this._connect),
label: _("Connect"), label: _("Connect"),
key: Clutter.Return }, key: Clutter.Return });
{ expand: true,
x_fill: false,
x_align: St.Align.END });
}, },
_connect: function() { _connect: function() {
@ -1282,9 +1279,8 @@ const NMDeviceWireless = new Lang.Class({
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On"); this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled; this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
this.item.status.text = this._getStatus();
this.item.icon.icon_name = this._getMenuIcon(); this.item.icon.icon_name = this._getMenuIcon();
this.item.label.text = this._description; this.item.label.text = this._getStatus();
}, },
setDeviceDescription: function(desc) { setDeviceDescription: function(desc) {
@ -1296,18 +1292,23 @@ const NMDeviceWireless = new Lang.Class({
let ap = this._device.active_access_point; let ap = this._device.active_access_point;
if (this._isHotSpotMaster()) if (this._isHotSpotMaster())
return _("Hotspot Active"); /* Translators: %s is a network identifier */
return _("%s Hotspot Active").format(this._description);
else if (this._device.state >= NetworkManager.DeviceState.PREPARE && else if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
this._device.state < NetworkManager.DeviceState.ACTIVATED) this._device.state < NetworkManager.DeviceState.ACTIVATED)
return _("Connecting"); /* Translators: %s is a network identifier */
return _("%s Connecting").format(this._description);
else if (ap) else if (ap)
return ssidToLabel(ap.get_ssid()); return ssidToLabel(ap.get_ssid());
else if (!this._client.wireless_hardware_enabled) else if (!this._client.wireless_hardware_enabled)
return _("Hardware Disabled"); /* Translators: %s is a network identifier */
return _("%s Hardware Disabled").format(this._description);
else if (!this._client.wireless_enabled) else if (!this._client.wireless_enabled)
return _("Off"); /* Translators: %s is a network identifier */
return _("%s Off").format(this._description);
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED) else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
return _("Not Connected"); /* Translators: %s is a network identifier */
return _("%s Not Connected").format(this._description);
else else
return ''; return '';
}, },
@ -1509,7 +1510,7 @@ const NMVPNSection = new Lang.Class({
return item.getName(); return item.getName();
} }
return _("Off"); return _("VPN Off");
}, },
_getMenuIcon: function() { _getMenuIcon: function() {

View File

@ -112,12 +112,6 @@ const Indicator = new Lang.Class({
this._item.icon.icon_name = icon; this._item.icon.icon_name = icon;
// The status label // The status label
this._item.status.text = this._getStatus(); this._item.label.text = this._getStatus();
// The sub-menu heading
if (this._proxy.Type == UPower.DeviceKind.UPS)
this._item.label.text = _("UPS");
else
this._item.label.text = _("Battery");
}, },
}); });

View File

@ -85,9 +85,8 @@ const Indicator = new Lang.Class({
// The menu only appears when airplane mode is on, so just // The menu only appears when airplane mode is on, so just
// statically build it as if it was on, rather than dynamically // statically build it as if it was on, rather than dynamically
// changing the menu contents. // changing the menu contents.
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode"), true); this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode On"), true);
this._item.icon.icon_name = 'airplane-mode-symbolic'; this._item.icon.icon_name = 'airplane-mode-symbolic';
this._item.status.text = _("On");
this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() { this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
this._manager.airplaneMode = false; this._manager.airplaneMode = false;
})); }));

View File

@ -24,6 +24,17 @@ const DISABLE_LOG_OUT_KEY = 'disable-log-out';
const DISABLE_RESTART_KEY = 'disable-restart-buttons'; const DISABLE_RESTART_KEY = 'disable-restart-buttons';
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out'; const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
const SensorProxyInterface = '<node> \
<interface name="net.hadess.SensorProxy"> \
<property name="HasAccelerometer" type="b" access="read"/> \
</interface> \
</node>';
const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface);
const AltSwitcher = new Lang.Class({ const AltSwitcher = new Lang.Class({
Name: 'AltSwitcher', Name: 'AltSwitcher',
@ -144,23 +155,32 @@ const Indicator = new Lang.Class({
this._orientationSettings.connect('changed::orientation-lock', this._orientationSettings.connect('changed::orientation-lock',
Lang.bind(this, this._updateOrientationLock)); Lang.bind(this, this._updateOrientationLock));
this._orientationExists = false; Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
Gio.DBus.session.watch_name('org.gnome.SettingsDaemon.Orientation', Gio.BusNameWatcherFlags.NONE,
Gio.BusNameWatcherFlags.NONE, Lang.bind(this, this._sensorProxyAppeared),
Lang.bind(this, function() { Lang.bind(this, function() {
this._orientationExists = true; this._sensorProxy = null;
this._updateOrientationLock(); this._updateOrientationLock();
}), }));
Lang.bind(this, function() {
this._orientationExists = false;
this._updateOrientationLock();
}));
this._updateOrientationLock(); this._updateOrientationLock();
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated(); this._sessionUpdated();
}, },
_sensorProxyAppeared: function() {
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
this._sensorProxy.connect('g-properties-changed',
Lang.bind(this, this._updateOrientationLock));
this._updateOrientationLock();
}));
},
_updateActionsVisibility: function() { _updateActionsVisibility: function() {
let visible = (this._settingsAction.visible || let visible = (this._settingsAction.visible ||
this._orientationLockAction.visible || this._orientationLockAction.visible ||
@ -231,13 +251,22 @@ const Indicator = new Lang.Class({
let file = Gio.File.new_for_path(iconFile); let file = Gio.File.new_for_path(iconFile);
let gicon = new Gio.FileIcon({ file: file }); let gicon = new Gio.FileIcon({ file: file });
this._switchUserSubMenu.icon.gicon = gicon; this._switchUserSubMenu.icon.gicon = gicon;
this._switchUserSubMenu.icon.add_style_class_name('user-icon');
this._switchUserSubMenu.icon.remove_style_class_name('default-icon');
} else { } else {
this._switchUserSubMenu.icon.icon_name = 'avatar-default-symbolic'; this._switchUserSubMenu.icon.icon_name = 'avatar-default-symbolic';
this._switchUserSubMenu.icon.add_style_class_name('default-icon');
this._switchUserSubMenu.icon.remove_style_class_name('user-icon');
} }
}, },
_updateOrientationLock: function() { _updateOrientationLock: function() {
this._orientationLockAction.visible = this._orientationExists; if (this._sensorProxy)
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer;
else
this._orientationLockAction.visible = false;
let locked = this._orientationSettings.get_boolean('orientation-lock'); let locked = this._orientationSettings.get_boolean('orientation-lock');
let icon = this._orientationLockAction.child; let icon = this._orientationLockAction.child;
@ -321,6 +350,9 @@ const Indicator = new Lang.Class({
this._switchUserSubMenu.menu.addMenuItem(item); this._switchUserSubMenu.menu.addMenuItem(item);
this._logoutItem = item; this._logoutItem = item;
this._switchUserSubMenu.menu.addSettingsAction(_("Account Settings"),
'gnome-user-accounts-panel.desktop');
this._user.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUserSubMenu)); this._user.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUserSubMenu));
this._user.connect('changed', Lang.bind(this, this._updateSwitchUserSubMenu)); this._user.connect('changed', Lang.bind(this, this._updateSwitchUserSubMenu));

View File

@ -465,6 +465,12 @@ const ViewSelector = new Lang.Class({
}, },
_shouldTriggerSearch: function(symbol) { _shouldTriggerSearch: function(symbol) {
if (symbol == Clutter.Multi_key)
return true;
if (symbol == Clutter.BackSpace && this._searchActive)
return true;
let unicode = Clutter.keysym_to_unicode(symbol); let unicode = Clutter.keysym_to_unicode(symbol);
if (unicode == 0) if (unicode == 0)
return false; return false;
@ -472,7 +478,7 @@ const ViewSelector = new Lang.Class({
if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0) if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0)
return true; return true;
return symbol == Clutter.BackSpace && this._searchActive; return false;
}, },
startSearch: function(event) { startSearch: function(event) {

View File

@ -11,7 +11,8 @@ const WindowAttentionHandler = new Lang.Class({
_init : function() { _init : function() {
this._tracker = Shell.WindowTracker.get_default(); this._tracker = Shell.WindowTracker.get_default();
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention)); this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
Lang.bind(this, this._onWindowDemandsAttention));
}, },
_getTitleAndBanner: function(app, window) { _getTitleAndBanner: function(app, window) {

View File

@ -19,8 +19,6 @@ const Tweener = imports.ui.tweener;
const WindowMenu = imports.ui.windowMenu; const WindowMenu = imports.ui.windowMenu;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings'; const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const MAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
const UNMAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2; const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
const SHOW_WINDOW_ANIMATION_TIME = 0.15; const SHOW_WINDOW_ANIMATION_TIME = 0.15;
const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1; const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1;
@ -83,12 +81,10 @@ const DisplayChangeDialog = new Lang.Class({
*/ */
this._cancelButton = this.addButton({ label: _("Revert Settings"), this._cancelButton = this.addButton({ label: _("Revert Settings"),
action: Lang.bind(this, this._onFailure), action: Lang.bind(this, this._onFailure),
key: Clutter.Escape }, key: Clutter.Escape });
{ expand: true, x_fill: false, x_align: St.Align.START });
this._okButton = this.addButton({ label: _("Keep Changes"), this._okButton = this.addButton({ label: _("Keep Changes"),
action: Lang.bind(this, this._onSuccess), action: Lang.bind(this, this._onSuccess),
default: true }, default: true });
{ expand: false, x_fill: false, x_align: St.Align.END });
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick)); this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick'); GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
@ -217,7 +213,8 @@ const WorkspaceTracker = new Lang.Class({
_getWorkspaceSettings: function() { _getWorkspaceSettings: function() {
let settings = global.get_overrides_settings(); let settings = global.get_overrides_settings();
if (settings.list_keys().indexOf('dynamic-workspaces') > -1) if (settings &&
settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1)
return settings; return settings;
return new Gio.Settings({ schema_id: 'org.gnome.mutter' }); return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
}, },
@ -478,52 +475,100 @@ const TilePreview = new Lang.Class({
} }
}); });
const TouchpadWorkspaceSwitchAction = new Lang.Class({
Name: 'TouchpadWorkspaceSwitchAction',
_init: function(actor) {
this._dx = 0;
this._dy = 0;
actor.connect('captured-event', Lang.bind(this, this._handleEvent));
},
_checkActivated: function() {
const MOTION_THRESHOLD = 50;
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
let dir;
if ((allowedModes & Main.actionMode) == 0)
return;
if (this._dy < -MOTION_THRESHOLD)
dir = Meta.MotionDirection.DOWN;
else if (this._dy > MOTION_THRESHOLD)
dir = Meta.MotionDirection.UP;
else if (this._dx < -MOTION_THRESHOLD)
dir = Meta.MotionDirection.RIGHT;
else if (this._dx > MOTION_THRESHOLD)
dir = Meta.MotionDirection.LEFT;
else
return;
this.emit('activated', dir);
},
_handleEvent: function(actor, event) {
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_swipe_finger_count() != 4)
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
let [dx, dy] = event.get_gesture_motion_delta(event);
this._dx += dx;
this._dy += dy;
} else {
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
this._checkActivated();
this._dx = 0;
this._dy = 0;
}
return Clutter.EVENT_STOP;
}
});
Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
const WorkspaceSwitchAction = new Lang.Class({ const WorkspaceSwitchAction = new Lang.Class({
Name: 'WorkspaceSwitchAction', Name: 'WorkspaceSwitchAction',
Extends: Clutter.GestureAction, Extends: Clutter.SwipeAction,
_init : function() { _init : function() {
const MOTION_THRESHOLD = 50;
this.parent(); this.parent();
this.set_n_touch_points(4); this.set_n_touch_points(4);
this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD);
global.display.connect('grab-op-begin', Lang.bind(this, function() { global.display.connect('grab-op-begin', Lang.bind(this, function() {
this.cancel(); this.cancel();
})); }));
}, },
vfunc_gesture_prepare : function(action, actor) { vfunc_gesture_prepare : function(actor) {
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW; let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
return this.get_n_current_points() == this.get_n_touch_points() &&
(allowedModes & Main.actionMode); if (!this.parent(actor))
return false;
return (allowedModes & Main.actionMode);
}, },
vfunc_gesture_end : function(action, actor) { vfunc_swept : function(actor, direction) {
const MOTION_THRESHOLD = 50; let dir;
// Just check one touchpoint here if (direction & Clutter.SwipeDirection.UP)
let [startX, startY] = this.get_press_coords(0); dir = Meta.MotionDirection.DOWN;
let [x, y] = this.get_motion_coords(0); else if (direction & Clutter.SwipeDirection.DOWN)
let offsetX = x - startX; dir = Meta.MotionDirection.UP;
let offsetY = y - startY; else if (direction & Clutter.SwipeDirection.LEFT)
let direction; dir = Meta.MotionDirection.RIGHT;
else if (direction & Clutter.SwipeDirection.RIGHT)
dir = Meta.MotionDirection.LEFT;
if (Math.abs(offsetX) < MOTION_THRESHOLD && this.emit('activated', dir);
Math.abs(offsetY) < MOTION_THRESHOLD)
return;
if (Math.abs(offsetY) > Math.abs(offsetX)) {
if (offsetY > 0)
direction = Meta.MotionDirection.UP;
else
direction = Meta.MotionDirection.DOWN;
} else {
if (offsetX > 0)
direction = Meta.MotionDirection.LEFT;
else
direction = Meta.MotionDirection.RIGHT;
}
this.emit('activated', direction);
} }
}); });
Signals.addSignalMethods(WorkspaceSwitchAction.prototype); Signals.addSignalMethods(WorkspaceSwitchAction.prototype);
@ -631,8 +676,6 @@ const WindowManager = new Lang.Class({
this._minimizing = []; this._minimizing = [];
this._unminimizing = []; this._unminimizing = [];
this._maximizing = [];
this._unmaximizing = [];
this._mapping = []; this._mapping = [];
this._destroying = []; this._destroying = [];
this._movingWindow = null; this._movingWindow = null;
@ -647,10 +690,9 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone)); this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) { this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
this._minimizeWindowDone(shellwm, actor); this._minimizeWindowDone(shellwm, actor);
this._maximizeWindowDone(shellwm, actor);
this._unmaximizeWindowDone(shellwm, actor);
this._mapWindowDone(shellwm, actor); this._mapWindowDone(shellwm, actor);
this._destroyWindowDone(shellwm, actor); this._destroyWindowDone(shellwm, actor);
this._sizeChangeWindowDone(shellwm, actor);
})); }));
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace)); this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
@ -659,8 +701,7 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu)); this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow)); this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow)); this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow));
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow)); this._shellwm.connect('size-change', Lang.bind(this, this._sizeChangeWindow));
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
this._shellwm.connect('map', Lang.bind(this, this._mapWindow)); this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow)); this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding)); this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
@ -880,15 +921,22 @@ const WindowManager = new Lang.Class({
false, -1, 1); false, -1, 1);
let gesture = new WorkspaceSwitchAction(); let gesture = new WorkspaceSwitchAction();
gesture.connect('activated', Lang.bind(this, function(action, direction) { gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
this.actionMoveWorkspace(newWs);
}));
global.stage.add_action(gesture); global.stage.add_action(gesture);
// This is not a normal Clutter.GestureAction, doesn't need add_action()
gesture = new TouchpadWorkspaceSwitchAction(global.stage);
gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
gesture = new AppSwitchAction(); gesture = new AppSwitchAction();
gesture.connect('activated', Lang.bind(this, this._switchApp)); gesture.connect('activated', Lang.bind(this, this._switchApp));
global.stage.add_action(gesture); global.stage.add_action(gesture);
},
_actionSwitchWorkspace: function(action, direction) {
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
this.actionMoveWorkspace(newWs);
}, },
_lookupIndex: function (windows, metaWindow) { _lookupIndex: function (windows, metaWindow) {
@ -1170,22 +1218,123 @@ const WindowManager = new Lang.Class({
} }
}, },
_sizeChangeWindow : function(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
let types = [Meta.WindowType.NORMAL];
if (!this._shouldAnimateActor(actor, types)) {
shellwm.completed_size_change(actor);
return;
}
_maximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) { if (whichChange == Meta.SizeChange.FULLSCREEN)
shellwm.completed_maximize(actor); this._fullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
else if (whichChange == Meta.SizeChange.UNFULLSCREEN)
this._unfullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
else
shellwm.completed_size_change(actor);
}, },
_maximizeWindowDone : function(shellwm, actor) { _fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let targetRect = actor.meta_window.get_frame_rect();
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
let actorClone = new St.Widget({ content: actorContent });
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
Main.uiGroup.add_actor(actorClone);
actor.__fullscreenClone = actorClone;
let scaleX = targetRect.width / oldFrameRect.width;
let scaleY = targetRect.height / oldFrameRect.height;
Tweener.addTween(actorClone,
{ x: targetRect.x,
y: targetRect.y,
scaleX: scaleX,
scaleY: scaleY,
opacity: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._sizeChangeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor]
});
actor.translation_x = actor.x;
actor.translation_y = actor.y;
actor.scaleX = 1 / scaleX;
actor.scaleY = 1 / scaleY;
Tweener.addTween(actor,
{ scaleX: 1.0,
scaleY: 1.0,
translation_x: 0,
translation_y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
shellwm.completed_size_change(actor);
}, },
_maximizeWindowOverwrite : function(shellwm, actor) { _unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
let targetRect = actor.meta_window.get_frame_rect();
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
let actorClone = new St.Widget({ content: actorContent });
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
Main.uiGroup.add_actor(actorClone);
actor.__unfullscreenClone = actorClone;
let scaleX = targetRect.width / oldFrameRect.width;
let scaleY = targetRect.height / oldFrameRect.height;
Tweener.addTween(actorClone,
{ x: targetRect.x,
y: targetRect.y,
scaleX: scaleX,
scaleY: scaleY,
opacity: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: this._sizeChangeWindowDone,
onCompleteScope: this,
onCompleteParams: [shellwm, actor]
});
actor.translation_x = -actor.x;
actor.translation_y = -actor.y;
actor.scaleX = 1 / scaleX;
actor.scaleY = 1 / scaleY;
Tweener.addTween(actor,
{ scaleX: 1.0,
scaleY: 1.0,
translation_x: 0,
translation_y: 0,
time: WINDOW_ANIMATION_TIME,
transition: 'easeOutQuad'
});
shellwm.completed_size_change(actor);
}, },
_unmaximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) { _sizeChangeWindowDone: function(shellwm, actor) {
shellwm.completed_unmaximize(actor); Tweener.removeTweens(actor);
},
_unmaximizeWindowDone : function(shellwm, actor) { let actorClone = actor.__fullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__fullscreenClone;
}
actorClone = actor.__unfullscreenClone;
if (actorClone) {
actorClone.destroy();
delete actor.__unfullscreenClone;
}
}, },
_hasAttachedDialogs: function(window, ignoreWindow) { _hasAttachedDialogs: function(window, ignoreWindow) {

View File

@ -74,7 +74,7 @@ const WindowMenu = new Lang.Class({
window.make_above(); window.make_above();
})); }));
if (window.is_above()) if (window.is_above())
item.setOrnament(PopupMenu.Ornament.DOT); item.setOrnament(PopupMenu.Ornament.CHECK);
if (window.get_maximized() == Meta.MaximizeFlags.BOTH || if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
type == Meta.WindowType.DOCK || type == Meta.WindowType.DOCK ||
type == Meta.WindowType.DESKTOP || type == Meta.WindowType.DESKTOP ||
@ -93,7 +93,7 @@ const WindowMenu = new Lang.Class({
window.stick(); window.stick();
})); }));
if (isSticky) if (isSticky)
item.setOrnament(PopupMenu.Ornament.DOT); item.setOrnament(PopupMenu.Ornament.CHECK);
if (window.is_always_on_all_workspaces()) if (window.is_always_on_all_workspaces())
item.setSensitive(false); item.setSensitive(false);
@ -101,13 +101,22 @@ const WindowMenu = new Lang.Class({
if (!isSticky) { if (!isSticky) {
let workspace = window.get_workspace(); let workspace = window.get_workspace();
let idx = workspace.index(); if (workspace != workspace.get_neighbor(Meta.MotionDirection.LEFT)) {
if (idx > 0) { this.addAction(_("Move to Workspace Left"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.LEFT));
}));
}
if (workspace != workspace.get_neighbor(Meta.MotionDirection.RIGHT)) {
this.addAction(_("Move to Workspace Right"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.RIGHT));
}));
}
if (workspace != workspace.get_neighbor(Meta.MotionDirection.UP)) {
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) { this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP)); window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
})); }));
} }
if (idx < nWorkspaces) { if (workspace != workspace.get_neighbor(Meta.MotionDirection.DOWN)) {
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) { this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN)); window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
})); }));
@ -115,6 +124,39 @@ const WindowMenu = new Lang.Class({
} }
} }
let screen = global.screen;
let nMonitors = screen.get_n_monitors();
if (nMonitors > 1) {
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
let monitorIndex = window.get_monitor();
let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP);
if (upMonitorIndex != -1) {
this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) {
window.move_to_monitor(upMonitorIndex);
}));
}
let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN);
if (downMonitorIndex != -1) {
this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) {
window.move_to_monitor(downMonitorIndex);
}));
}
let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT);
if (leftMonitorIndex != -1) {
this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) {
window.move_to_monitor(leftMonitorIndex);
}));
}
let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT);
if (rightMonitorIndex != -1) {
this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) {
window.move_to_monitor(rightMonitorIndex);
}));
}
}
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
item = this.addAction(_("Close"), Lang.bind(this, function(event) { item = this.addAction(_("Close"), Lang.bind(this, function(event) {
@ -167,6 +209,10 @@ const WindowMenuManager = new Lang.Class({
menu.connect('activate', function() { menu.connect('activate', function() {
window.check_alive(global.get_current_time()); window.check_alive(global.get_current_time());
}); });
let destroyId = window.connect('unmanaged',
function() {
menu.close();
});
this._sourceActor.set_size(rect.width, rect.height); this._sourceActor.set_size(rect.width, rect.height);
this._sourceActor.set_position(rect.x, rect.y); this._sourceActor.set_position(rect.x, rect.y);
@ -180,6 +226,7 @@ const WindowMenuManager = new Lang.Class({
this._sourceActor.hide(); this._sourceActor.hide();
menu.destroy(); menu.destroy();
window.disconnect(destroyId);
})); }));
} }
}); });

View File

@ -50,6 +50,7 @@ nb
ne ne
nl nl
nn nn
oc
or or
pa pa
pl pl

297
po/an.po
View File

@ -9,24 +9,23 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-17 12:39+0000\n" "POT-Creation-Date: 2015-07-23 08:08+0000\n"
"PO-Revision-Date: 2015-03-17 19:50+0100\n" "PO-Revision-Date: 2015-04-28 08:40+0200\n"
"Last-Translator: Daniel Martinez <entaltoaragon@gmail.com>\n" "Last-Translator: Daniel <entaltoaragon@gmail.com>\n"
"Language-Team: Aragonés <softaragones@googlegroups.com>\n" "Language-Team: Aragonés <softaragones@googlegroups.com>\n"
"Language: an\n" "Language: an\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 2.91.6\n" "X-Generator: Pootle 2.5.1.1\n"
"X-POOTLE-MTIME: 1430206804.000000\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: ../data/50-gnome-shell-system.xml.in.h:2 #: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "%d new notification"
#| msgid_plural "%d new notifications"
msgid "Show the notification list" msgid "Show the notification list"
msgstr "Amostrar a lista de notificacions" msgstr "Amostrar a lista de notificacions"
@ -136,17 +135,18 @@ msgstr "Indiz de l'anvista seleccionada actual en o selector d'aplicacion."
msgid "History for command (Alt-F2) dialog" msgid "History for command (Alt-F2) dialog"
msgstr "Historico d'o dialogo de comandos (Alt+F2)" msgstr "Historico d'o dialogo de comandos (Alt+F2)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12 #. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
msgid "History for the looking glass dialog" msgid "History for the looking glass dialog"
msgstr "Historico d'o dialogo de \"looking glass\"" msgstr "Historico d'o dialogo de \"looking glass\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13 #: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid "Always show the 'Log out' menu item in the user menu." msgid "Always show the 'Log out' menu item in the user menu."
msgstr "" msgstr ""
"Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de " "Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de "
"l'usuario." "l'usuario."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "" msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-" "This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations." "user, single-session situations."
@ -154,14 +154,14 @@ msgstr ""
"Ista clau sobrescribe a ocultación automatica de l'elemento de menú " "Ista clau sobrescribe a ocultación automatica de l'elemento de menú "
"\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión." "\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15 #: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "" msgid ""
"Whether to remember password for mounting encrypted or remote filesystems" "Whether to remember password for mounting encrypted or remote filesystems"
msgstr "" msgstr ""
"Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u " "Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u "
"zifraus" "zifraus"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16 #: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "" msgid ""
"The shell will request a password when an encrypted device or a remote " "The shell will request a password when an encrypted device or a remote "
"filesystem is mounted. If the password can be saved for future use a " "filesystem is mounted. If the password can be saved for future use a "
@ -173,81 +173,79 @@ msgstr ""
"s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor " "s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor "
"predeterminada d'a caixeta." "predeterminada d'a caixeta."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17 #: ../data/org.gnome.shell.gschema.xml.in.in.h:18
msgid "Show the week date in the calendar" msgid "Show the week date in the calendar"
msgstr "Amostrar a calendata d'a semana en o calendario" msgstr "Amostrar a calendata d'a semana en o calendario"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18 #: ../data/org.gnome.shell.gschema.xml.in.in.h:19
msgid "If true, display the ISO week date in the calendar." msgid "If true, display the ISO week date in the calendar."
msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario." msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19 #: ../data/org.gnome.shell.gschema.xml.in.in.h:20
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación" msgstr "Asociación de teclas ta ubrir o menú de l'aplicación"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20 #: ../data/org.gnome.shell.gschema.xml.in.in.h:21
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación." msgstr "Asociación de teclas ta ubrir o menú de l'aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21 #: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view" msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\"" msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22 #: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "" msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview." "Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "" msgstr ""
"Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista " "Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista "
"d'actividatz." "d'actividatz."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23 #: ../data/org.gnome.shell.gschema.xml.in.in.h:24
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Asociación de teclas ta l'anvista cheneral" msgstr "Asociación de teclas ta l'anvista cheneral"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24 #: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz" msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25 #: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#| msgid "Keybinding to toggle the visibility of the message tray"
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "" msgstr ""
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions" "Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26 #: ../data/org.gnome.shell.gschema.xml.in.in.h:27
#| msgid "Keybinding to toggle the visibility of the message tray."
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "" msgstr ""
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions." "Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27 #: ../data/org.gnome.shell.gschema.xml.in.in.h:28
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Asociación de teclas ta dar o foco a la notificación activa" msgstr "Asociación de teclas ta dar o foco a la notificación activa"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28 #: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Asociación de teclas ta dar o foco a la notificación activa." msgstr "Asociación de teclas ta dar o foco a la notificación activa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29 #: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "" msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes" "Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr "" msgstr ""
"Asociación de teclas que pausan y continan todas as execucions de «tweens», " "Asociación de teclas que pausan y continan todas as execucions de «tweens», "
"ta propositos de depuraci'on" "ta propositos de depuraci'on"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30 #: ../data/org.gnome.shell.gschema.xml.in.in.h:31
msgid "Which keyboard to use" msgid "Which keyboard to use"
msgstr "Que teclau usar" msgstr "Que teclau usar"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31 #: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "The type of keyboard to use." msgid "The type of keyboard to use."
msgstr "O tipo de teclau que usar." msgstr "O tipo de teclau que usar."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32 #: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "Limit switcher to current workspace." msgid "Limit switcher to current workspace."
msgstr "Selector de limite ta l'aria de treballo actual." msgstr "Selector de limite ta l'aria de treballo actual."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33 #: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "" msgid ""
"If true, only applications that have windows on the current workspace are " "If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included." "shown in the switcher. Otherwise, all applications are included."
@ -256,21 +254,21 @@ msgstr ""
"finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as " "finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as "
"aplicacions." "aplicacions."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34 #: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "The application icon mode." msgid "The application icon mode."
msgstr "O modo d'icono de l'aplicación." msgstr "O modo d'icono de l'aplicación."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35 #: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "" msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities " "Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
"only' (shows only the application icon) or 'both'." "(shows only the application icon) or 'both'."
msgstr "" msgstr ""
"Configura cómo s'amuestran as finestras en o selector. Os valore posibles " "Configura cómo s'amuestran as finestras en o selector. Os valore posibles "
"son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-only" "son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-"
"\" (solament amuestra l'icono de l'aplicación) u \"both\"." "only\" (solament amuestra l'icono de l'aplicación) u \"both\"."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36 #: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "" msgid ""
"If true, only windows from the current workspace are shown in the switcher. " "If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included." "Otherwise, all windows are included."
@ -278,31 +276,31 @@ msgstr ""
"Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de " "Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de "
"treballo actual. D'atra man, s'incluirán todas as finestras." "treballo actual. D'atra man, s'incluirán todas as finestras."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37 #: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "Attach modal dialog to the parent window" msgid "Attach modal dialog to the parent window"
msgstr "Acoplar un dialogo modal a la finestra pai" msgstr "Acoplar un dialogo modal a la finestra pai"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38 #: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid "" msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell." "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "" msgstr ""
"Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell." "Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39 #: ../data/org.gnome.shell.gschema.xml.in.in.h:40
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a " "Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a "
"finestra" "finestra"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40 #: ../data/org.gnome.shell.gschema.xml.in.in.h:41
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "As arias de treballo se chestionan dinámicamente" msgstr "As arias de treballo se chestionan dinámicamente"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41 #: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Workspaces only on primary monitor" msgid "Workspaces only on primary monitor"
msgstr "Arias de treballo solament en a pantalla prencipal" msgstr "Arias de treballo solament en a pantalla prencipal"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42 #: ../data/org.gnome.shell.gschema.xml.in.in.h:43
msgid "Delay focus changes in mouse mode until the pointer stops moving" msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "" msgstr ""
"Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se" "Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se"
@ -311,12 +309,12 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Encetar sesión en o rete" msgstr "Encetar sesión en o rete"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:122
#, javascript-format #, javascript-format
msgid "There was an error loading the preferences dialog for %s:" msgid "There was an error loading the preferences dialog for %s:"
msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:" msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:"
#: ../js/extensionPrefs/main.js:155 #: ../js/extensionPrefs/main.js:154
msgid "GNOME Shell Extensions" msgid "GNOME Shell Extensions"
msgstr "Extensions de GNOME Shell" msgstr "Extensions de GNOME Shell"
@ -327,39 +325,39 @@ msgstr "Extensions de GNOME Shell"
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
msgid "Next" msgid "Next"
msgstr "Siguient" msgstr "Siguient"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Desbloquiar" msgstr "Desbloquiar"
#: ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:213
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Encetar sesión" msgstr "Encetar sesión"
#: ../js/gdm/loginDialog.js:280 #: ../js/gdm/loginDialog.js:281
msgid "Choose Session" msgid "Choose Session"
msgstr "Esleyir a sesión" msgstr "Esleyir a sesión"
#: ../js/gdm/loginDialog.js:420 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "No ye en a lista?" msgstr "No ye en a lista?"
#: ../js/gdm/loginDialog.js:829 #: ../js/gdm/loginDialog.js:847
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(eix., usuario u %s)" msgstr "(eix., usuario u %s)"
#: ../js/gdm/loginDialog.js:834 ../js/ui/components/networkAgent.js:271 #: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289 #: ../js/ui/components/networkAgent.js:289
msgid "Username: " msgid "Username: "
msgstr "Nombre d'usuario:" msgstr "Nombre d'usuario: "
#: ../js/gdm/loginDialog.js:1169 #: ../js/gdm/loginDialog.js:1180
msgid "Login Window" msgid "Login Window"
msgstr "Finestra d'inicio de sesión" msgstr "Finestra d'inicio de sesión"
@ -452,31 +450,31 @@ msgstr "%d de %B de %Y, %l%M %"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Rendrecera ta autentiación web" msgstr "Rendrecera ta autentiación web"
#: ../js/ui/appDisplay.js:792 #: ../js/ui/appDisplay.js:789
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "As aplicaciones usadas freqüentment amaneixerán aquí" msgstr "As aplicaciones usadas freqüentment amaneixerán aquí"
#: ../js/ui/appDisplay.js:912 #: ../js/ui/appDisplay.js:909
msgid "Frequent" msgid "Frequent"
msgstr "Freqüent" msgstr "Freqüent"
#: ../js/ui/appDisplay.js:919 #: ../js/ui/appDisplay.js:916
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: ../js/ui/appDisplay.js:1850 #: ../js/ui/appDisplay.js:1845
msgid "New Window" msgid "New Window"
msgstr "Finestra nueva" msgstr "Finestra nueva"
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291 #: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Sacar d'os favoritos" msgstr "Sacar d'os favoritos"
#: ../js/ui/appDisplay.js:1884 #: ../js/ui/appDisplay.js:1879
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Anyadir a os favoritos" msgstr "Anyadir a os favoritos"
#: ../js/ui/appDisplay.js:1894 #: ../js/ui/appDisplay.js:1889
msgid "Show Details" msgid "Show Details"
msgstr "Amostrar detalles" msgstr "Amostrar detalles"
@ -490,15 +488,19 @@ msgstr "S'ha anyadiu %s a os suyos favoritos."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "S'ha sacau %s d'os suyos favoritos" msgstr "S'ha sacau %s d'os suyos favoritos"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650 #: ../js/ui/backgroundMenu.js:19
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Configuración"
#: ../js/ui/backgroundMenu.js:21
msgid "Change Background…" msgid "Change Background…"
msgstr "Cambiar o fondo…" msgstr "Cambiar o fondo…"
#: ../js/ui/backgroundMenu.js:21
msgid "Display Settings"
msgstr "Preferencias de pantalla"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:357
msgid "Settings"
msgstr "Configuración"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:53 #: ../js/ui/calendar.js:53
msgctxt "calendar-no-work" msgctxt "calendar-no-work"
@ -551,54 +553,53 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: ../js/ui/calendar.js:563 #: ../js/ui/calendar.js:564
msgid "Previous month" msgid "Previous month"
msgstr "Mes anterior" msgstr "Mes anterior"
#: ../js/ui/calendar.js:573 #: ../js/ui/calendar.js:574
msgid "Next month" msgid "Next month"
msgstr "Mes siguient" msgstr "Mes siguient"
#: ../js/ui/calendar.js:780 #: ../js/ui/calendar.js:781
msgid "Week %V" msgid "Week %V"
msgstr "Semana %V" msgstr "Semana %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:1182 #: ../js/ui/calendar.js:1187
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Tot o diya" msgstr "Tot o diya"
#: ../js/ui/calendar.js:1288 #: ../js/ui/calendar.js:1289
msgid "Clear section" msgid "Clear section"
msgstr "Limpiar a sección" msgstr "Limpiar a sección"
#: ../js/ui/calendar.js:1515 #: ../js/ui/calendar.js:1516
msgid "Events" msgid "Events"
msgstr "Eventos" msgstr "Eventos"
#: ../js/ui/calendar.js:1524 #: ../js/ui/calendar.js:1525
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#: ../js/ui/calendar.js:1528 #: ../js/ui/calendar.js:1529
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y" msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:1613 #: ../js/ui/calendar.js:1614
msgid "Notifications" msgid "Notifications"
msgstr "Notificacions" msgstr "Notificacions"
#: ../js/ui/calendar.js:1764 #: ../js/ui/calendar.js:1765
#| msgid "Notifications"
msgid "No Notifications" msgid "No Notifications"
msgstr "No i hai notificacions" msgstr "No i hai notificacions"
#: ../js/ui/calendar.js:1767 #: ../js/ui/calendar.js:1768
msgid "No Events" msgid "No Events"
msgstr "No i hai eventos" msgstr "No i hai eventos"
@ -634,23 +635,23 @@ msgstr "Connectar"
#: ../js/ui/components/networkAgent.js:293 #: ../js/ui/components/networkAgent.js:293
#: ../js/ui/components/networkAgent.js:303 #: ../js/ui/components/networkAgent.js:303
msgid "Password: " msgid "Password: "
msgstr "Clau de paso:" msgstr "Clau de paso: "
#: ../js/ui/components/networkAgent.js:238 #: ../js/ui/components/networkAgent.js:238
msgid "Key: " msgid "Key: "
msgstr "Clau:" msgstr "Clau: "
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:277
msgid "Identity: " msgid "Identity: "
msgstr "Identidat:" msgstr "Identidat: "
#: ../js/ui/components/networkAgent.js:279 #: ../js/ui/components/networkAgent.js:279
msgid "Private key password: " msgid "Private key password: "
msgstr "Clau d'a clau privada:" msgstr "Clau d'a clau privada: "
#: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:291
msgid "Service: " msgid "Service: "
msgstr "Servicio:" msgstr "Servicio: "
#: ../js/ui/components/networkAgent.js:320 #: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:658 #: ../js/ui/components/networkAgent.js:658
@ -661,8 +662,8 @@ msgstr "O ret sin cordón requiere autenticación"
#: ../js/ui/components/networkAgent.js:659 #: ../js/ui/components/networkAgent.js:659
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"%s”." "%s”."
msgstr "" msgstr ""
"S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"." "S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"."
@ -673,7 +674,7 @@ msgstr "Autenticación 802.1X cableada"
#: ../js/ui/components/networkAgent.js:327 #: ../js/ui/components/networkAgent.js:327
msgid "Network name: " msgid "Network name: "
msgstr "Nombre d'o ret:" msgstr "Nombre d'o ret: "
#: ../js/ui/components/networkAgent.js:332 #: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:666 #: ../js/ui/components/networkAgent.js:666
@ -733,7 +734,7 @@ msgstr "Prebe atra vegada."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:768 #: ../js/ui/components/telepathyClient.js:757
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "Agora %s se dice %s" msgstr "Agora %s se dice %s"
@ -742,11 +743,11 @@ msgstr "Agora %s se dice %s"
msgid "Windows" msgid "Windows"
msgstr "Finestras" msgstr "Finestras"
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293 #: ../js/ui/dash.js:250 ../js/ui/dash.js:291
msgid "Show Applications" msgid "Show Applications"
msgstr "Amostrar aplicacions" msgstr "Amostrar aplicacions"
#: ../js/ui/dash.js:453 #: ../js/ui/dash.js:449
msgid "Dash" msgid "Dash"
msgstr "Tablero" msgstr "Tablero"
@ -754,7 +755,6 @@ msgstr "Tablero"
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */ #. */
#: ../js/ui/dateMenu.js:73 #: ../js/ui/dateMenu.js:73
#| msgid "%A %B %e, %Y"
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%B %e %Y" msgstr "%B %e %Y"
@ -763,7 +763,6 @@ msgstr "%B %e %Y"
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
#. */ #. */
#: ../js/ui/dateMenu.js:80 #: ../js/ui/dateMenu.js:80
#| msgid "%A %B %e, %Y"
msgid "%A %B %e %Y" msgid "%A %B %e %Y"
msgstr "%A %e de %B de %Y" msgstr "%A %e de %B de %Y"
@ -772,7 +771,6 @@ msgid "Add world clocks…"
msgstr "Adhibir reloches d'o mundo…" msgstr "Adhibir reloches d'o mundo…"
#: ../js/ui/dateMenu.js:161 #: ../js/ui/dateMenu.js:161
#| msgid "Open Clocks"
msgid "World Clocks" msgid "World Clocks"
msgstr "Reloches d'o mundo" msgstr "Reloches d'o mundo"
@ -916,17 +914,16 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?" msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?"
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580 #: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclau" msgstr "Teclau"
#. translators: 'Hide' is a verb */ #. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:64 #: ../js/ui/legacyTray.js:66
#| msgid "Hide Text"
msgid "Hide tray" msgid "Hide tray"
msgstr "Amagar servilla" msgstr "Amagar servilla"
#: ../js/ui/legacyTray.js:104 #: ../js/ui/legacyTray.js:107
msgid "Status Icons" msgid "Status Icons"
msgstr "Iconos d'estau" msgstr "Iconos d'estau"
@ -982,7 +979,7 @@ msgstr "Veyer fuent"
msgid "Web Page" msgid "Web Page"
msgstr "Pachina web" msgstr "Pachina web"
#: ../js/ui/messageTray.js:2133 #: ../js/ui/messageTray.js:1486
msgid "System Information" msgid "System Information"
msgstr "Informacion d'o sistema" msgstr "Informacion d'o sistema"
@ -1024,7 +1021,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Introducir un comando" msgstr "Introducir un comando"
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close" msgid "Close"
msgstr "Trancar" msgstr "Trancar"
@ -1052,27 +1049,27 @@ msgid_plural "%d new notifications"
msgstr[0] "%d notificación nueva" msgstr[0] "%d notificación nueva"
msgstr[1] "%d notificacions nuevas" msgstr[1] "%d notificacions nuevas"
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
msgid "Lock" msgid "Lock"
msgstr "Blocar" msgstr "Blocar"
#: ../js/ui/screenShield.js:668 #: ../js/ui/screenShield.js:684
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME ameneste blocar a pantalla" msgstr "GNOME ameneste blocar a pantalla"
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271 #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
msgid "Unable to lock" msgid "Unable to lock"
msgstr "No se podió blocar" msgstr "No se podió blocar"
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272 #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió o bloqueyo" msgstr "Una aplicación impidió o bloqueyo"
#: ../js/ui/search.js:616 #: ../js/ui/search.js:617
msgid "Searching…" msgid "Searching…"
msgstr "Mirando…" msgstr "Mirando…"
#: ../js/ui/search.js:618 #: ../js/ui/search.js:619
msgid "No results." msgid "No results."
msgstr "No se troboron resultaus." msgstr "No se troboron resultaus."
@ -1136,11 +1133,11 @@ msgstr "Refuso de teclas"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Teclas d'o ratet" msgstr "Teclas d'o ratet"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:167
msgid "High Contrast" msgid "High Contrast"
msgstr "Contraste alto" msgstr "Contraste alto"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:202
msgid "Large Text" msgid "Large Text"
msgstr "Texto gran" msgstr "Texto gran"
@ -1174,7 +1171,7 @@ msgstr "No connectau"
msgid "Brightness" msgid "Brightness"
msgstr "Brilo" msgstr "Brilo"
#: ../js/ui/status/keyboard.js:603 #: ../js/ui/status/keyboard.js:736
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Amostrar a distribución d'o teclau" msgstr "Amostrar a distribución d'o teclau"
@ -1268,7 +1265,7 @@ msgstr "O modo avión ye enchegau"
#: ../js/ui/status/network.js:814 #: ../js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on." msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau." msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau."
#: ../js/ui/status/network.js:815 #: ../js/ui/status/network.js:815
msgid "Turn Off Airplane Mode" msgid "Turn Off Airplane Mode"
@ -1385,23 +1382,23 @@ msgstr "Modo avión"
msgid "On" msgid "On"
msgstr "Enchegau" msgstr "Enchegau"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:337
msgid "Switch User" msgid "Switch User"
msgstr "Cambear d'usuario" msgstr "Cambear d'usuario"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:342
msgid "Log Out" msgid "Log Out"
msgstr "Trancar sesion" msgstr "Trancar sesion"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:361
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Bloqueyo d'Orientación" msgstr "Bloqueyo d'Orientación"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:369
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:372
msgid "Power Off" msgid "Power Off"
msgstr "Amortar" msgstr "Amortar"
@ -1433,27 +1430,27 @@ msgstr "Aplicacions"
msgid "Search" msgid "Search"
msgstr "Mirar" msgstr "Mirar"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:20
#, javascript-format #, javascript-format
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "\"%s\" ye parau" msgstr "\"%s\" ye parau"
#: ../js/ui/windowManager.js:65 #: ../js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Quiers mantener istas opcions de pantalla?" msgstr "Quiers mantener istas opcions de pantalla?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. */ #. */
#: ../js/ui/windowManager.js:84 #: ../js/ui/windowManager.js:82
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Revertir as opcions" msgstr "Revertir as opcions"
#: ../js/ui/windowManager.js:88 #: ../js/ui/windowManager.js:86
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Mantener os cambeos" msgstr "Mantener os cambeos"
#: ../js/ui/windowManager.js:107 #: ../js/ui/windowManager.js:105
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@ -1462,7 +1459,7 @@ msgstr[1] "Os cambeos d'as opcions serán revertius en %d segundos"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */ #. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599 #: ../js/ui/windowManager.js:660
#, javascript-format #, javascript-format
msgid "%d x %d" msgid "%d x %d"
msgstr "%d x %d" msgstr "%d x %d"
@ -1499,14 +1496,48 @@ msgstr "Siempre veyible"
msgid "Always on Visible Workspace" msgid "Always on Visible Workspace"
msgstr "Siempre en l'aria de treballo veyible" msgstr "Siempre en l'aria de treballo veyible"
#: ../js/ui/windowMenu.js:106 #: ../js/ui/windowMenu.js:105
#, fuzzy
#| msgid "Move to Workspace Up"
msgid "Move to Workspace Left"
msgstr "Mover a l'aria de treballo d'a cucha"
#: ../js/ui/windowMenu.js:110
#, fuzzy
#| msgid "Move to Workspace Up"
msgid "Move to Workspace Right"
msgstr "Mover a l'aria de treballo d'a dreita"
#: ../js/ui/windowMenu.js:115
msgid "Move to Workspace Up" msgid "Move to Workspace Up"
msgstr "Mover ta l'aria de treballo d'alto" msgstr "Mover ta l'aria de treballo d'alto"
#: ../js/ui/windowMenu.js:111 #: ../js/ui/windowMenu.js:120
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Mover ta l'aria de treballo d'abaixo" msgstr "Mover ta l'aria de treballo d'abaixo"
#: ../js/ui/windowMenu.js:136
#, fuzzy
#| msgid "Move to Workspace Up"
msgid "Move to Monitor Up"
msgstr "Mover a la pantalla d'alto"
#: ../js/ui/windowMenu.js:142
#, fuzzy
#| msgid "Move to Workspace Down"
msgid "Move to Monitor Down"
msgstr "Mover a la pantalla d'abaixo"
#: ../js/ui/windowMenu.js:148
#, fuzzy
msgid "Move to Monitor Left"
msgstr "Mover a la pantalla d'a cucha"
#: ../js/ui/windowMenu.js:154
#, fuzzy
msgid "Move to Monitor Right"
msgstr "Mover a la pantalla d'a dreita"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Calandario d'Evolution" msgstr "Calandario d'Evolution"
@ -1561,11 +1592,11 @@ msgstr "Desconoxiu"
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Ha fallau en aventar \"%s\"" msgstr "Ha fallau en aventar \"%s\""
#: ../src/shell-keyring-prompt.c:714 #: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match." msgid "Passwords do not match."
msgstr "As claus de paso no coinciden." msgstr "As claus de paso no coinciden."
#: ../src/shell-keyring-prompt.c:722 #: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "A clau de paso no puede estar vueda" msgstr "A clau de paso no puede estar vueda"
@ -1803,14 +1834,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgid "The maximum accuracy level of location." #~ msgid "The maximum accuracy level of location."
#~ msgstr "O maximo libel de precisión d'ubicación." #~ msgstr "O maximo libel de precisión d'ubicación."
#~| msgid ""
#~| "Configures the maximum level of location accuracy applications are "
#~| "allowed to see. Valid options are 'off' (disable location tracking), "
#~| "'country', 'city', 'neighborhood', 'street', and 'exact' (typically "
#~| "requires GPS receiver). Please keep in mind that this only controls what "
#~| "Geoclue will allow applications to see and they can find user's location "
#~| "on their own using network resources (albeit with street-level accuracy "
#~| "at best)."
#~ msgid "" #~ msgid ""
#~ "Configures the maximum level of location accuracy applications are " #~ "Configures the maximum level of location accuracy applications are "
#~ "allowed to see. Valid options are 'off' (disable location tracking), " #~ "allowed to see. Valid options are 'off' (disable location tracking), "
@ -1822,8 +1845,8 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgstr "" #~ msgstr ""
#~ "Configura o ran maximo de precisión d'ubicación que as aplicacions " #~ "Configura o ran maximo de precisión d'ubicación que as aplicacions "
#~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación " #~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación "
#~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and " #~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and 'exact' "
#~ "'exact' (typicament requier GPS " #~ "(typicament requier GPS "
#~ msgid "Arrangement of buttons on the titlebar" #~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Orden d'os botons en a barra de titol" #~ msgstr "Orden d'os botons en a barra de titol"
@ -1968,7 +1991,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgid "Session…" #~ msgid "Session…"
#~ msgstr "Sesión…" #~ msgstr "Sesión…"
#~| msgid "Power Off"
#~ msgid "Power" #~ msgid "Power"
#~ msgstr "Enerchía" #~ msgstr "Enerchía"
@ -2132,11 +2154,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgid "%d%%" #~ msgid "%d%%"
#~ msgstr "%d%%" #~ msgstr "%d%%"
#~| msgid "AC adapter"
#~ msgid "AC Adapter" #~ msgid "AC Adapter"
#~ msgstr "Adaptador de corrient" #~ msgstr "Adaptador de corrient"
#~| msgid "Laptop battery"
#~ msgid "Laptop Battery" #~ msgid "Laptop Battery"
#~ msgstr "Bateria d'o portatil" #~ msgstr "Bateria d'o portatil"
@ -2149,11 +2169,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgid "PDA" #~ msgid "PDA"
#~ msgstr "PDA" #~ msgstr "PDA"
#~| msgid "Cell phone"
#~ msgid "Cell Phone" #~ msgid "Cell Phone"
#~ msgstr "Telefono movil" #~ msgstr "Telefono movil"
#~| msgid "Media player"
#~ msgid "Media Player" #~ msgid "Media Player"
#~ msgstr "Reproductor multimeya" #~ msgstr "Reproductor multimeya"
@ -2163,7 +2181,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
#~ msgid "Computer" #~ msgid "Computer"
#~ msgstr "Equipo" #~ msgstr "Equipo"
#~| msgid "Unknown"
#~ msgctxt "device" #~ msgctxt "device"
#~ msgid "Unknown" #~ msgid "Unknown"
#~ msgstr "Desconoxiu" #~ msgstr "Desconoxiu"

555
po/ar.po

File diff suppressed because it is too large Load Diff

524
po/ca.po

File diff suppressed because it is too large Load Diff

630
po/cs.po

File diff suppressed because it is too large Load Diff

541
po/da.po

File diff suppressed because it is too large Load Diff

752
po/de.po

File diff suppressed because it is too large Load Diff

653
po/el.po

File diff suppressed because it is too large Load Diff

656
po/es.po

File diff suppressed because it is too large Load Diff

1650
po/fa.po

File diff suppressed because it is too large Load Diff

737
po/fi.po

File diff suppressed because it is too large Load Diff

1237
po/fr.po

File diff suppressed because it is too large Load Diff

1066
po/fur.po

File diff suppressed because it is too large Load Diff

1695
po/ga.po

File diff suppressed because it is too large Load Diff

538
po/gl.po

File diff suppressed because it is too large Load Diff

547
po/he.po

File diff suppressed because it is too large Load Diff

542
po/hu.po

File diff suppressed because it is too large Load Diff

704
po/id.po

File diff suppressed because it is too large Load Diff

994
po/is.po

File diff suppressed because it is too large Load Diff

650
po/it.po

File diff suppressed because it is too large Load Diff

503
po/ja.po

File diff suppressed because it is too large Load Diff

649
po/kk.po

File diff suppressed because it is too large Load Diff

639
po/ko.po

File diff suppressed because it is too large Load Diff

653
po/lt.po

File diff suppressed because it is too large Load Diff

610
po/lv.po

File diff suppressed because it is too large Load Diff

486
po/nb.po

File diff suppressed because it is too large Load Diff

509
po/nl.po

File diff suppressed because it is too large Load Diff

2487
po/oc.po Normal file

File diff suppressed because it is too large Load Diff

556
po/pa.po

File diff suppressed because it is too large Load Diff

552
po/pl.po

File diff suppressed because it is too large Load Diff

1851
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

624
po/ru.po

File diff suppressed because it is too large Load Diff

879
po/sk.po

File diff suppressed because it is too large Load Diff

168
po/sl.po
View File

@ -9,18 +9,18 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-15 08:36+0000\n" "POT-Creation-Date: 2015-07-08 08:07+0000\n"
"PO-Revision-Date: 2015-03-15 09:41+0100\n" "PO-Revision-Date: 2015-07-08 15:46+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: Slovenian\n" "Language: sl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n" "%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.7.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -302,12 +302,12 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Omrežna prijava" msgstr "Omrežna prijava"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:122
#, javascript-format #, javascript-format
msgid "There was an error loading the preferences dialog for %s:" msgid "There was an error loading the preferences dialog for %s:"
msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:" msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
#: ../js/extensionPrefs/main.js:155 #: ../js/extensionPrefs/main.js:154
msgid "GNOME Shell Extensions" msgid "GNOME Shell Extensions"
msgstr "Razširitve lupine Gnome" msgstr "Razširitve lupine Gnome"
@ -318,39 +318,39 @@ msgstr "Razširitve lupine Gnome"
msgid "Cancel" msgid "Cancel"
msgstr "Prekliči" msgstr "Prekliči"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
msgid "Next" msgid "Next"
msgstr "Naslednji" msgstr "Naslednji"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Odkleni" msgstr "Odkleni"
#: ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:213
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Prijava" msgstr "Prijava"
#: ../js/gdm/loginDialog.js:280 #: ../js/gdm/loginDialog.js:281
msgid "Choose Session" msgid "Choose Session"
msgstr "Izbor seje" msgstr "Izbor seje"
#: ../js/gdm/loginDialog.js:421 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "Ali je ni na seznamu?" msgstr "Ali je ni na seznamu?"
#: ../js/gdm/loginDialog.js:830 #: ../js/gdm/loginDialog.js:847
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(na primer, uporabnika ali %s)" msgstr "(na primer, uporabnika ali %s)"
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271 #: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289 #: ../js/ui/components/networkAgent.js:289
msgid "Username: " msgid "Username: "
msgstr "Uporabniško ime: " msgstr "Uporabniško ime: "
#: ../js/gdm/loginDialog.js:1170 #: ../js/gdm/loginDialog.js:1180
msgid "Login Window" msgid "Login Window"
msgstr "Prijavno okno" msgstr "Prijavno okno"
@ -443,31 +443,31 @@ msgstr "%B %d %Y, %l%M %p"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Preusmeritev spletnega overjanja" msgstr "Preusmeritev spletnega overjanja"
#: ../js/ui/appDisplay.js:792 #: ../js/ui/appDisplay.js:789
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Pogosto uporabljeni programi bodo prikazani tu" msgstr "Pogosto uporabljeni programi bodo prikazani tu"
#: ../js/ui/appDisplay.js:912 #: ../js/ui/appDisplay.js:909
msgid "Frequent" msgid "Frequent"
msgstr "Pogosto" msgstr "Pogosto"
#: ../js/ui/appDisplay.js:919 #: ../js/ui/appDisplay.js:916
msgid "All" msgid "All"
msgstr "Vse" msgstr "Vse"
#: ../js/ui/appDisplay.js:1850 #: ../js/ui/appDisplay.js:1845
msgid "New Window" msgid "New Window"
msgstr "Novo okno" msgstr "Novo okno"
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291 #: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih" msgstr "Odstrani iz priljubljenih"
#: ../js/ui/appDisplay.js:1884 #: ../js/ui/appDisplay.js:1879
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj med priljubljene" msgstr "Dodaj med priljubljene"
#: ../js/ui/appDisplay.js:1894 #: ../js/ui/appDisplay.js:1889
msgid "Show Details" msgid "Show Details"
msgstr "Pokaži besedilo" msgstr "Pokaži besedilo"
@ -481,15 +481,19 @@ msgstr "Program \"%s\" je dodan med priljubljeno."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Program \"%s\" je odstranjen iz priljubljenih." msgstr "Program \"%s\" je odstranjen iz priljubljenih."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650 #: ../js/ui/backgroundMenu.js:19
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Nastavitve"
#: ../js/ui/backgroundMenu.js:21
msgid "Change Background…" msgid "Change Background…"
msgstr "Spremeni ozadje ..." msgstr "Spremeni ozadje ..."
#: ../js/ui/backgroundMenu.js:21
msgid "Display Settings"
msgstr "Nastavitve zaslona"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:357
msgid "Settings"
msgstr "Nastavitve"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:53 #: ../js/ui/calendar.js:53
msgctxt "calendar-no-work" msgctxt "calendar-no-work"
@ -542,53 +546,53 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: ../js/ui/calendar.js:563 #: ../js/ui/calendar.js:564
msgid "Previous month" msgid "Previous month"
msgstr "Predhodni mesec" msgstr "Predhodni mesec"
#: ../js/ui/calendar.js:573 #: ../js/ui/calendar.js:574
msgid "Next month" msgid "Next month"
msgstr "Naslednji mesec" msgstr "Naslednji mesec"
#: ../js/ui/calendar.js:780 #: ../js/ui/calendar.js:781
msgid "Week %V" msgid "Week %V"
msgstr "Teden %V" msgstr "Teden %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:1182 #: ../js/ui/calendar.js:1187
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Celodnevno" msgstr "Celodnevno"
#: ../js/ui/calendar.js:1288 #: ../js/ui/calendar.js:1289
msgid "Clear section" msgid "Clear section"
msgstr "Počisti odsek" msgstr "Počisti odsek"
#: ../js/ui/calendar.js:1515 #: ../js/ui/calendar.js:1516
msgid "Events" msgid "Events"
msgstr "Dogodki" msgstr "Dogodki"
#: ../js/ui/calendar.js:1524 #: ../js/ui/calendar.js:1525
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d. %m." msgstr "%A, %d. %m."
#: ../js/ui/calendar.js:1528 #: ../js/ui/calendar.js:1529
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: ../js/ui/calendar.js:1613 #: ../js/ui/calendar.js:1614
msgid "Notifications" msgid "Notifications"
msgstr "Obvestila" msgstr "Obvestila"
#: ../js/ui/calendar.js:1764 #: ../js/ui/calendar.js:1765
msgid "No Notifications" msgid "No Notifications"
msgstr "Ni obvestil" msgstr "Ni obvestil"
#: ../js/ui/calendar.js:1767 #: ../js/ui/calendar.js:1768
msgid "No Events" msgid "No Events"
msgstr "Ni dogodkov" msgstr "Ni dogodkov"
@ -724,7 +728,7 @@ msgstr "Dejanje je spodletelo. Poskusite znova."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:775 #: ../js/ui/components/telepathyClient.js:757
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s je sedaj znan kot v %s" msgstr "%s je sedaj znan kot v %s"
@ -733,11 +737,11 @@ msgstr "%s je sedaj znan kot v %s"
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293 #: ../js/ui/dash.js:250 ../js/ui/dash.js:291
msgid "Show Applications" msgid "Show Applications"
msgstr "Pokaži programe" msgstr "Pokaži programe"
#: ../js/ui/dash.js:453 #: ../js/ui/dash.js:449
msgid "Dash" msgid "Dash"
msgstr "Pregledna plošča" msgstr "Pregledna plošča"
@ -916,16 +920,16 @@ msgstr "Namesti"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?" msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580 #: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
msgid "Keyboard" msgid "Keyboard"
msgstr "Tipkovnica" msgstr "Tipkovnica"
#. translators: 'Hide' is a verb */ #. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:64 #: ../js/ui/legacyTray.js:66
msgid "Hide tray" msgid "Hide tray"
msgstr "Skrij sistemsko vrstico" msgstr "Skrij sistemsko vrstico"
#: ../js/ui/legacyTray.js:104 #: ../js/ui/legacyTray.js:107
msgid "Status Icons" msgid "Status Icons"
msgstr "Ikone stanja" msgstr "Ikone stanja"
@ -981,7 +985,7 @@ msgstr "Poglej vir"
msgid "Web Page" msgid "Web Page"
msgstr "Spletna stran" msgstr "Spletna stran"
#: ../js/ui/messageTray.js:2133 #: ../js/ui/messageTray.js:1486
msgid "System Information" msgid "System Information"
msgstr "Podrobnosti sistema" msgstr "Podrobnosti sistema"
@ -1023,7 +1027,7 @@ msgstr "toggle-switch-intl"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Vnos ukaza" msgstr "Vnos ukaza"
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close" msgid "Close"
msgstr "Zapri" msgstr "Zapri"
@ -1055,27 +1059,27 @@ msgstr[1] "%d novo obvestilo"
msgstr[2] "%d novi obvestili" msgstr[2] "%d novi obvestili"
msgstr[3] "%d nova obvestila" msgstr[3] "%d nova obvestila"
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
msgid "Lock" msgid "Lock"
msgstr "Zakleni" msgstr "Zakleni"
#: ../js/ui/screenShield.js:668 #: ../js/ui/screenShield.js:684
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "Zakleniti je treba zaslon" msgstr "Zakleniti je treba zaslon"
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271 #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Zaklep ni mogoč" msgstr "Zaklep ni mogoč"
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272 #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Zaklep je preprečil program" msgstr "Zaklep je preprečil program"
#: ../js/ui/search.js:616 #: ../js/ui/search.js:617
msgid "Searching…" msgid "Searching…"
msgstr "Iskanje ..." msgstr "Iskanje ..."
#: ../js/ui/search.js:618 #: ../js/ui/search.js:619
msgid "No results." msgid "No results."
msgstr "Ni najdenih zadetkov." msgstr "Ni najdenih zadetkov."
@ -1139,11 +1143,11 @@ msgstr "Odskočne tipke"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Miškine tipke" msgstr "Miškine tipke"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:167
msgid "High Contrast" msgid "High Contrast"
msgstr "Visok kontrast" msgstr "Visok kontrast"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:202
msgid "Large Text" msgid "Large Text"
msgstr "Veliko besedilo" msgstr "Veliko besedilo"
@ -1179,7 +1183,7 @@ msgstr "Ni vzpostavljene povezave"
msgid "Brightness" msgid "Brightness"
msgstr "Svetlost" msgstr "Svetlost"
#: ../js/ui/status/keyboard.js:603 #: ../js/ui/status/keyboard.js:736
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Pokaži razporeditev tipkovnice" msgstr "Pokaži razporeditev tipkovnice"
@ -1390,23 +1394,23 @@ msgstr "Način letala"
msgid "On" msgid "On"
msgstr "Povezano" msgstr "Povezano"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:337
msgid "Switch User" msgid "Switch User"
msgstr "Preklopi uporabnika" msgstr "Preklopi uporabnika"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:342
msgid "Log Out" msgid "Log Out"
msgstr "Odjava" msgstr "Odjava"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:361
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Zaklep položaja" msgstr "Zaklep položaja"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:369
msgid "Suspend" msgid "Suspend"
msgstr "Zaustavi" msgstr "Zaustavi"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:372
msgid "Power Off" msgid "Power Off"
msgstr "Izklop" msgstr "Izklop"
@ -1438,27 +1442,27 @@ msgstr "Programi"
msgid "Search" msgid "Search"
msgstr "Poišči" msgstr "Poišči"
#: ../js/ui/windowAttentionHandler.js:19 #: ../js/ui/windowAttentionHandler.js:20
#, javascript-format #, javascript-format
msgid "“%s” is ready" msgid "“%s” is ready"
msgstr "“%s” storitev je pripravljena" msgstr "“%s” storitev je pripravljena"
#: ../js/ui/windowManager.js:65 #: ../js/ui/windowManager.js:63
msgid "Do you want to keep these display settings?" msgid "Do you want to keep these display settings?"
msgstr "Ali želite ohraniti te nastavitve zaslona?" msgstr "Ali želite ohraniti te nastavitve zaslona?"
#. Translators: this and the following message should be limited in lenght, #. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels. #. to avoid ellipsizing the labels.
#. */ #. */
#: ../js/ui/windowManager.js:84 #: ../js/ui/windowManager.js:82
msgid "Revert Settings" msgid "Revert Settings"
msgstr "Povrni nastavitve" msgstr "Povrni nastavitve"
#: ../js/ui/windowManager.js:88 #: ../js/ui/windowManager.js:86
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Sledi spremembam" msgstr "Sledi spremembam"
#: ../js/ui/windowManager.js:107 #: ../js/ui/windowManager.js:105
#, javascript-format #, javascript-format
msgid "Settings changes will revert in %d second" msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds" msgid_plural "Settings changes will revert in %d seconds"
@ -1469,7 +1473,7 @@ msgstr[3] "Spremembe nastavitev bodo povrnjene v %d sekundah."
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */ #. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599 #: ../js/ui/windowManager.js:604
#, javascript-format #, javascript-format
msgid "%d x %d" msgid "%d x %d"
msgstr "%d x %d" msgstr "%d x %d"
@ -1506,14 +1510,38 @@ msgstr "Vedno na vrhu"
msgid "Always on Visible Workspace" msgid "Always on Visible Workspace"
msgstr "Vedno na dejavni delovni površini" msgstr "Vedno na dejavni delovni površini"
#: ../js/ui/windowMenu.js:106 #: ../js/ui/windowMenu.js:105
msgid "Move to Workspace Left"
msgstr "Premakni na delovno površino na levi"
#: ../js/ui/windowMenu.js:110
msgid "Move to Workspace Right"
msgstr "Premakni na delovno površino na desni"
#: ../js/ui/windowMenu.js:115
msgid "Move to Workspace Up" msgid "Move to Workspace Up"
msgstr "Premakni na zgornjo delovno površino" msgstr "Premakni na zgornjo delovno površino"
#: ../js/ui/windowMenu.js:111 #: ../js/ui/windowMenu.js:120
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Premakni na spodnjo delovno površino" msgstr "Premakni na spodnjo delovno površino"
#: ../js/ui/windowMenu.js:136
msgid "Move to Monitor Up"
msgstr "\t"
#: ../js/ui/windowMenu.js:142
msgid "Move to Monitor Down"
msgstr "Premakni na zaslon spodaj"
#: ../js/ui/windowMenu.js:148
msgid "Move to Monitor Left"
msgstr "Premakni na zaslon levo"
#: ../js/ui/windowMenu.js:154
msgid "Move to Monitor Right"
msgstr "Premakni na zaslon desno"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Koledar Evolution " msgstr "Koledar Evolution "
@ -1570,11 +1598,11 @@ msgstr "Neznano"
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Zaganjanje “%s” je spodletelo" msgstr "Zaganjanje “%s” je spodletelo"
#: ../src/shell-keyring-prompt.c:714 #: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match." msgid "Passwords do not match."
msgstr "Gesli se ne skladata." msgstr "Gesli se ne skladata."
#: ../src/shell-keyring-prompt.c:722 #: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "Geslo ne more biti prazno" msgstr "Geslo ne more biti prazno"

747
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

644
po/sv.po

File diff suppressed because it is too large Load Diff

163
po/tg.po
View File

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: Tajik Gnome\n" "Project-Id-Version: Tajik Gnome\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-13 20:44+0000\n" "POT-Creation-Date: 2015-06-24 20:04+0000\n"
"PO-Revision-Date: 2015-03-14 09:50+0500\n" "PO-Revision-Date: 2015-06-25 10:20+0500\n"
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n" "Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: tg\n" "Language: tg\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.5\n" "X-Generator: Poedit 1.7.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -305,14 +305,14 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Воридшавии шабакавӣ" msgstr "Воридшавии шабакавӣ"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:122
#, javascript-format #, javascript-format
msgid "There was an error loading the preferences dialog for %s:" msgid "There was an error loading the preferences dialog for %s:"
msgstr "" msgstr ""
"Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд " "Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд "
"омадааст:" "омадааст:"
#: ../js/extensionPrefs/main.js:155 #: ../js/extensionPrefs/main.js:154
msgid "GNOME Shell Extensions" msgid "GNOME Shell Extensions"
msgstr "Пасвандҳои восити GNOME" msgstr "Пасвандҳои восити GNOME"
@ -323,39 +323,39 @@ msgstr "Пасвандҳои восити GNOME"
msgid "Cancel" msgid "Cancel"
msgstr "Бекор кардан" msgstr "Бекор кардан"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
msgid "Next" msgid "Next"
msgstr "Навбатӣ" msgstr "Навбатӣ"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "Кушодан" msgstr "Кушодан"
#: ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:213
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Ворид шудан" msgstr "Ворид шудан"
#: ../js/gdm/loginDialog.js:280 #: ../js/gdm/loginDialog.js:281
msgid "Choose Session" msgid "Choose Session"
msgstr "Интихоби ҷаласа" msgstr "Интихоби ҷаласа"
#: ../js/gdm/loginDialog.js:421 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "Вуҷуд надора?" msgstr "Вуҷуд надора?"
#: ../js/gdm/loginDialog.js:830 #: ../js/gdm/loginDialog.js:840
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(масалан, корбар ё %s)" msgstr "(масалан, корбар ё %s)"
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271 #: ../js/gdm/loginDialog.js:845 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289 #: ../js/ui/components/networkAgent.js:289
msgid "Username: " msgid "Username: "
msgstr "Номи корбар:" msgstr "Номи корбар:"
#: ../js/gdm/loginDialog.js:1170 #: ../js/gdm/loginDialog.js:1173
msgid "Login Window" msgid "Login Window"
msgstr "Равзанаи воридшавӣ" msgstr "Равзанаи воридшавӣ"
@ -448,31 +448,31 @@ msgstr "%B %d %Y, %l%M %p"
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "Бозфиристодани санҷиши ҳаққонияти веб" msgstr "Бозфиристодани санҷиши ҳаққонияти веб"
#: ../js/ui/appDisplay.js:792 #: ../js/ui/appDisplay.js:788
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд" msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд"
#: ../js/ui/appDisplay.js:912 #: ../js/ui/appDisplay.js:908
msgid "Frequent" msgid "Frequent"
msgstr "Роиҷ" msgstr "Роиҷ"
#: ../js/ui/appDisplay.js:919 #: ../js/ui/appDisplay.js:915
msgid "All" msgid "All"
msgstr "Ҳама" msgstr "Ҳама"
#: ../js/ui/appDisplay.js:1850 #: ../js/ui/appDisplay.js:1844
msgid "New Window" msgid "New Window"
msgstr "Равзанаи нав" msgstr "Равзанаи нав"
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291 #: ../js/ui/appDisplay.js:1872 ../js/ui/dash.js:289
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Тоза кардан аз Баргузидаҳо" msgstr "Тоза кардан аз Баргузидаҳо"
#: ../js/ui/appDisplay.js:1884 #: ../js/ui/appDisplay.js:1878
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Илова кардан ба Баргузидаҳо" msgstr "Илова кардан ба Баргузидаҳо"
#: ../js/ui/appDisplay.js:1894 #: ../js/ui/appDisplay.js:1888
msgid "Show Details" msgid "Show Details"
msgstr "Намоиш додани тафсилот" msgstr "Намоиш додани тафсилот"
@ -486,15 +486,19 @@ msgstr "%s ба баргузидаҳои шумо илова шудааст."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s аз баргузидаҳои шумо тоза шудааст." msgstr "%s аз баргузидаҳои шумо тоза шудааст."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650 #: ../js/ui/backgroundMenu.js:19
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Танзимот"
#: ../js/ui/backgroundMenu.js:21
msgid "Change Background…" msgid "Change Background…"
msgstr "Тағйир додани пазсамина..." msgstr "Тағйир додани пазсамина..."
#: ../js/ui/backgroundMenu.js:21
msgid "Display Settings"
msgstr "Танзимоти дисплей"
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:357
msgid "Settings"
msgstr "Танзимот"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:53 #: ../js/ui/calendar.js:53
msgctxt "calendar-no-work" msgctxt "calendar-no-work"
@ -547,53 +551,53 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "Ш" msgstr "Ш"
#: ../js/ui/calendar.js:563 #: ../js/ui/calendar.js:564
msgid "Previous month" msgid "Previous month"
msgstr "Моҳи қаблӣ" msgstr "Моҳи қаблӣ"
#: ../js/ui/calendar.js:573 #: ../js/ui/calendar.js:574
msgid "Next month" msgid "Next month"
msgstr "Моҳи навбатӣ" msgstr "Моҳи навбатӣ"
#: ../js/ui/calendar.js:780 #: ../js/ui/calendar.js:781
msgid "Week %V" msgid "Week %V"
msgstr "Ҳафтаи %V" msgstr "Ҳафтаи %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. */ #. */
#: ../js/ui/calendar.js:1182 #: ../js/ui/calendar.js:1187
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Тамоми рӯз" msgstr "Тамоми рӯз"
#: ../js/ui/calendar.js:1288 #: ../js/ui/calendar.js:1289
msgid "Clear section" msgid "Clear section"
msgstr "Пок кардани қисмат" msgstr "Пок кардани қисмат"
#: ../js/ui/calendar.js:1515 #: ../js/ui/calendar.js:1516
msgid "Events" msgid "Events"
msgstr "Рӯйдодҳо" msgstr "Рӯйдодҳо"
#: ../js/ui/calendar.js:1524 #: ../js/ui/calendar.js:1525
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d" msgstr "%A, %B %d"
#: ../js/ui/calendar.js:1528 #: ../js/ui/calendar.js:1529
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %B %d, %Y" msgstr "%A, %B %d, %Y"
#: ../js/ui/calendar.js:1613 #: ../js/ui/calendar.js:1614
msgid "Notifications" msgid "Notifications"
msgstr "Огоҳиҳо" msgstr "Огоҳиҳо"
#: ../js/ui/calendar.js:1764 #: ../js/ui/calendar.js:1765
msgid "No Notifications" msgid "No Notifications"
msgstr "Ягон огоҳӣ нест" msgstr "Ягон огоҳӣ нест"
#: ../js/ui/calendar.js:1767 #: ../js/ui/calendar.js:1768
msgid "No Events" msgid "No Events"
msgstr "Ягон рӯйдод нест" msgstr "Ягон рӯйдод нест"
@ -729,7 +733,7 @@ msgstr "Мутаассифона, ин амал иҷро нашуд. Лутфа
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:775 #: ../js/ui/components/telepathyClient.js:757
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s аллакой бо номи %s номида мешавад" msgstr "%s аллакой бо номи %s номида мешавад"
@ -738,11 +742,11 @@ msgstr "%s аллакой бо номи %s номида мешавад"
msgid "Windows" msgid "Windows"
msgstr "Равзанаҳо" msgstr "Равзанаҳо"
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293 #: ../js/ui/dash.js:250 ../js/ui/dash.js:291
msgid "Show Applications" msgid "Show Applications"
msgstr "Намоиш додани барномаҳо" msgstr "Намоиш додани барномаҳо"
#: ../js/ui/dash.js:453 #: ../js/ui/dash.js:449
msgid "Dash" msgid "Dash"
msgstr "Рах" msgstr "Рах"
@ -910,17 +914,16 @@ msgstr "Насб кардан"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?" msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580 #: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
msgid "Keyboard" msgid "Keyboard"
msgstr "Клавиатура" msgstr "Клавиатура"
#. translators: 'Hide' is a verb */ #. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:59 #: ../js/ui/legacyTray.js:66
#| msgid "Hide Text"
msgid "Hide tray" msgid "Hide tray"
msgstr "Пинҳон кардани лавҳа" msgstr "Пинҳон кардани лавҳа"
#: ../js/ui/legacyTray.js:91 #: ../js/ui/legacyTray.js:107
msgid "Status Icons" msgid "Status Icons"
msgstr "Нишонаҳои вазъият" msgstr "Нишонаҳои вазъият"
@ -976,7 +979,7 @@ msgstr "Намоиш додани манбаъ"
msgid "Web Page" msgid "Web Page"
msgstr "Саҳифаи веб" msgstr "Саҳифаи веб"
#: ../js/ui/messageTray.js:2133 #: ../js/ui/messageTray.js:1486
msgid "System Information" msgid "System Information"
msgstr "Маълумоти система" msgstr "Маълумоти система"
@ -1018,7 +1021,7 @@ msgstr "toggle-switch-us"
msgid "Enter a Command" msgid "Enter a Command"
msgstr "Фармонеро ворид кунед" msgstr "Фармонеро ворид кунед"
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120 #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
msgid "Close" msgid "Close"
msgstr "Пӯшидан" msgstr "Пӯшидан"
@ -1046,27 +1049,27 @@ msgid_plural "%d new notifications"
msgstr[0] "%d огоҳии нав" msgstr[0] "%d огоҳии нав"
msgstr[1] "%d огоҳии нав" msgstr[1] "%d огоҳии нав"
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
msgid "Lock" msgid "Lock"
msgstr "Қулф кардан" msgstr "Қулф кардан"
#: ../js/ui/screenShield.js:668 #: ../js/ui/screenShield.js:684
msgid "GNOME needs to lock the screen" msgid "GNOME needs to lock the screen"
msgstr "GNOME бояд экранро қулф кунад" msgstr "GNOME бояд экранро қулф кунад"
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271 #: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
msgid "Unable to lock" msgid "Unable to lock"
msgstr "Қулф карда намешавад" msgstr "Қулф карда намешавад"
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272 #: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "Қулф аз тарави барнома баста шудааст" msgstr "Қулф аз тарави барнома баста шудааст"
#: ../js/ui/search.js:616 #: ../js/ui/search.js:617
msgid "Searching…" msgid "Searching…"
msgstr "Ҷустуҷӯ рафта истодааст..." msgstr "Ҷустуҷӯ рафта истодааст..."
#: ../js/ui/search.js:618 #: ../js/ui/search.js:619
msgid "No results." msgid "No results."
msgstr "Ягон натиҷа нест." msgstr "Ягон натиҷа нест."
@ -1130,11 +1133,11 @@ msgstr "Тугмаҳои ҷастухез"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Тугмаҳои муш" msgstr "Тугмаҳои муш"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:167
msgid "High Contrast" msgid "High Contrast"
msgstr "Контрасти баланд" msgstr "Контрасти баланд"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:202
msgid "Large Text" msgid "Large Text"
msgstr "Матни бузург" msgstr "Матни бузург"
@ -1168,7 +1171,7 @@ msgstr "Пайваст нашудааст"
msgid "Brightness" msgid "Brightness"
msgstr "Дурахшонӣ" msgstr "Дурахшонӣ"
#: ../js/ui/status/keyboard.js:603 #: ../js/ui/status/keyboard.js:736
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Намоиш додани тарҳбандии клавиатура" msgstr "Намоиш додани тарҳбандии клавиатура"
@ -1379,23 +1382,23 @@ msgstr "Ҳолати ҳавопаймо"
msgid "On" msgid "On"
msgstr "Фаъол" msgstr "Фаъол"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:337
msgid "Switch User" msgid "Switch User"
msgstr "Таъвизи корбар" msgstr "Таъвизи корбар"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:342
msgid "Log Out" msgid "Log Out"
msgstr "Баромад" msgstr "Баромад"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:361
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "Қулфи самт" msgstr "Қулфи самт"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:369
msgid "Suspend" msgid "Suspend"
msgstr "Таваққуф" msgstr "Таваққуф"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:372
msgid "Power Off" msgid "Power Off"
msgstr "Хомӯш кардан" msgstr "Хомӯш кардан"
@ -1456,7 +1459,7 @@ msgstr[1] "Тағйироти танзимот баъд аз %d сония ба
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */ #. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599 #: ../js/ui/windowManager.js:605
#, javascript-format #, javascript-format
msgid "%d x %d" msgid "%d x %d"
msgstr "%d x %d" msgstr "%d x %d"
@ -1493,14 +1496,38 @@ msgstr "Ҳамеша дар боло"
msgid "Always on Visible Workspace" msgid "Always on Visible Workspace"
msgstr "Ҳамеша дар фазои кории намоён" msgstr "Ҳамеша дар фазои кории намоён"
#: ../js/ui/windowMenu.js:106 #: ../js/ui/windowMenu.js:105
msgid "Move to Workspace Left"
msgstr "Интиқол додан ба фазои кории чап"
#: ../js/ui/windowMenu.js:110
msgid "Move to Workspace Right"
msgstr "Интиқол додан ба фазои кории рост"
#: ../js/ui/windowMenu.js:115
msgid "Move to Workspace Up" msgid "Move to Workspace Up"
msgstr "Интиқол додан ба фазои кории боло" msgstr "Интиқол додан ба фазои кории боло"
#: ../js/ui/windowMenu.js:111 #: ../js/ui/windowMenu.js:120
msgid "Move to Workspace Down" msgid "Move to Workspace Down"
msgstr "Интиқол додан ба фазои кории поён" msgstr "Интиқол додан ба фазои кории поён"
#: ../js/ui/windowMenu.js:136
msgid "Move to Monitor Up"
msgstr "Интиқол ба канори болои монитор"
#: ../js/ui/windowMenu.js:142
msgid "Move to Monitor Down"
msgstr "Интиқол ба канори поёни монитор"
#: ../js/ui/windowMenu.js:148
msgid "Move to Monitor Left"
msgstr "Интиқол ба канори чапи монитор"
#: ../js/ui/windowMenu.js:154
msgid "Move to Monitor Right"
msgstr "Интиқол ба канори рости монитор"
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1 #: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Ӣақвими Evolution" msgstr "Ӣақвими Evolution"
@ -1544,21 +1571,21 @@ msgstr ""
msgid "List possible modes" msgid "List possible modes"
msgstr "Рӯйхати ҳолатҳои имконпазир" msgstr "Рӯйхати ҳолатҳои имконпазир"
#: ../src/shell-app.c:247 #: ../src/shell-app.c:239
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "Номаълум" msgstr "Номаълум"
#: ../src/shell-app.c:488 #: ../src/shell-app.c:480
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "Оғози “%s” қатъ шудааст" msgstr "Оғози “%s” қатъ шудааст"
#: ../src/shell-keyring-prompt.c:714 #: ../src/shell-keyring-prompt.c:742
msgid "Passwords do not match." msgid "Passwords do not match."
msgstr "Паролҳо мувофиқат намекунанд." msgstr "Паролҳо мувофиқат намекунанд."
#: ../src/shell-keyring-prompt.c:722 #: ../src/shell-keyring-prompt.c:750
msgid "Password cannot be blank" msgid "Password cannot be blank"
msgstr "Парол бояд холӣ набошад" msgstr "Парол бояд холӣ набошад"
@ -1787,7 +1814,7 @@ msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо
#~ "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад" #~ "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад"
#~ msgid "Internal error" #~ msgid "Internal error"
#~ msgstr "Хатогии дохилӣ" #~ msgstr "Хатои дохилӣ"
#~ msgid "Unable to connect to %s" #~ msgid "Unable to connect to %s"
#~ msgstr "Пайвастшавӣ ба %s имконнопазир аст" #~ msgstr "Пайвастшавӣ ба %s имконнопазир аст"

528
po/tr.po

File diff suppressed because it is too large Load Diff

691
po/vi.po

File diff suppressed because it is too large Load Diff

View File

@ -21,8 +21,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-03 22:33+0000\n" "POT-Creation-Date: 2015-04-25 08:00+0000\n"
"PO-Revision-Date: 2015-03-04 17:55+0800\n" "PO-Revision-Date: 2015-04-17 19:36+0800\n"
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n" "Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n" "Language: zh_CN\n"
@ -30,6 +30,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.7.5\n"
#: ../data/50-gnome-shell-system.xml.in.h:1 #: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System" msgid "System"
@ -287,55 +288,55 @@ msgstr "将鼠标模式下焦点的更改推迟到指针停止移动之后"
msgid "Network Login" msgid "Network Login"
msgstr "网络登录" msgstr "网络登录"
#: ../js/extensionPrefs/main.js:123 #: ../js/extensionPrefs/main.js:122
#, javascript-format #, javascript-format
msgid "There was an error loading the preferences dialog for %s:" msgid "There was an error loading the preferences dialog for %s:"
msgstr "载入 %s 的首选想对话框出错:" msgstr "载入 %s 的首选想对话框出错:"
#: ../js/extensionPrefs/main.js:155 #: ../js/extensionPrefs/main.js:154
msgid "GNOME Shell Extensions" msgid "GNOME Shell Extensions"
msgstr "配置 GNOME Shell 扩展" msgstr "配置 GNOME Shell 扩展"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 #: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916 #: ../js/ui/status/network.js:916
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59 #: ../js/ui/unlockDialog.js:59
msgid "Unlock" msgid "Unlock"
msgstr "解锁" msgstr "解锁"
#: ../js/gdm/authPrompt.js:215 #: ../js/gdm/authPrompt.js:213
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "登录" msgstr "登录"
#: ../js/gdm/loginDialog.js:276 #: ../js/gdm/loginDialog.js:281
msgid "Choose Session" msgid "Choose Session"
msgstr "选择会话" msgstr "选择会话"
#: ../js/gdm/loginDialog.js:417 #: ../js/gdm/loginDialog.js:431
msgid "Not listed?" msgid "Not listed?"
msgstr "未列出?" msgstr "未列出?"
#: ../js/gdm/loginDialog.js:826 #: ../js/gdm/loginDialog.js:840
#, javascript-format #, javascript-format
msgid "(e.g., user or %s)" msgid "(e.g., user or %s)"
msgstr "(如 user 或 %s)" msgstr "(如 user 或 %s)"
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269 #: ../js/gdm/loginDialog.js:845 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:287 #: ../js/ui/components/networkAgent.js:289
msgid "Username: " msgid "Username: "
msgstr "用户名:" msgstr "用户名:"
#: ../js/gdm/loginDialog.js:1166 #: ../js/gdm/loginDialog.js:1173
msgid "Login Window" msgid "Login Window"
msgstr "登录窗口" msgstr "登录窗口"
@ -347,50 +348,112 @@ msgstr "认证出错"
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(或滑动手指)" msgstr "(或滑动手指)"
#: ../js/misc/util.js:115 #: ../js/misc/util.js:119
msgid "Command not found" msgid "Command not found"
msgstr "命令未找到" msgstr "命令未找到"
#: ../js/misc/util.js:148 #: ../js/misc/util.js:152
msgid "Could not parse command:" msgid "Could not parse command:"
msgstr "不能解析命令:" msgstr "不能解析命令:"
#: ../js/misc/util.js:156 #: ../js/misc/util.js:160
#, javascript-format #, javascript-format
msgid "Execution of “%s” failed:" msgid "Execution of “%s” failed:"
msgstr "运行“%s”失败" msgstr "运行“%s”失败"
#. Translators: Time in 24h format */
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/misc/util.js:197
msgid "Yesterday, %H%M"
msgstr "昨天 %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/misc/util.js:203
msgid "%A, %H%M"
msgstr "%A %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/misc/util.js:209
msgid "%B %d, %H%M"
msgstr "%m月%d日, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/misc/util.js:215
msgid "%B %d %Y, %H%M"
msgstr "%Y年%m月%d日, %H:%M"
#. Translators: Time in 12h format */
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%p %-l:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/misc/util.js:226
msgid "Yesterday, %l%M %p"
msgstr "昨天%p %-l:%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/misc/util.js:232
msgid "%A, %l%M %p"
msgstr "%A%p %-l:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/misc/util.js:238
msgid "%B %d, %l%M %p"
msgstr "%m月%d日%p %-l:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/misc/util.js:244
msgid "%B %d %Y, %l%M %p"
msgstr "%Y年%m月%d日%p %-l:%M"
#. TRANSLATORS: this is the title of the wifi captive portal login #. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page */ #. * window, until we know the title of the actual login page */
#: ../js/portalHelper/main.js:85 #: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect" msgid "Web Authentication Redirect"
msgstr "网页认证重定向" msgstr "网页认证重定向"
#: ../js/ui/appDisplay.js:785 #: ../js/ui/appDisplay.js:788
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "常用的应用程序会出现在这里" msgstr "常用的应用程序会出现在这里"
#: ../js/ui/appDisplay.js:905 #: ../js/ui/appDisplay.js:908
msgid "Frequent" msgid "Frequent"
msgstr "常用" msgstr "常用"
#: ../js/ui/appDisplay.js:912 #: ../js/ui/appDisplay.js:915
msgid "All" msgid "All"
msgstr "全部" msgstr "全部"
#: ../js/ui/appDisplay.js:1840 #: ../js/ui/appDisplay.js:1844
msgid "New Window" msgid "New Window"
msgstr "新窗口" msgstr "新窗口"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289 #: ../js/ui/appDisplay.js:1872 ../js/ui/dash.js:289
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "从收藏夹中移除" msgstr "从收藏夹中移除"
#: ../js/ui/appDisplay.js:1874 #: ../js/ui/appDisplay.js:1878
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "添加到收藏夹" msgstr "添加到收藏夹"
#: ../js/ui/appDisplay.js:1884 #: ../js/ui/appDisplay.js:1888
msgid "Show Details" msgid "Show Details"
msgstr "显示细节" msgstr "显示细节"
@ -404,8 +467,8 @@ msgstr "%s 已经添加到了您的收藏夹。"
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s 已经从您的收藏夹移除。" msgstr "%s 已经从您的收藏夹移除。"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649 #: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337 #: ../js/ui/status/system.js:334
msgid "Settings" msgid "Settings"
msgstr "设置" msgstr "设置"
@ -414,119 +477,104 @@ msgid "Change Background…"
msgstr "更换壁纸..." msgstr "更换壁纸..."
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:52 #: ../js/ui/calendar.js:53
msgctxt "calendar-no-work" msgctxt "calendar-no-work"
msgid "06" msgid "06"
msgstr "周日和周六" msgstr "周日和周六"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:81
msgctxt "event list time"
msgid "All Day"
msgstr "全天"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1596
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%p %-l:%M"
#. Translators: Calendar grid abbreviation for Sunday. #. Translators: Calendar grid abbreviation for Sunday.
#. * #. *
#. * NOTE: These grid abbreviations are always shown together #. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S". #. * and in order, e.g. "S M T W T F S".
#. */ #. */
#: ../js/ui/calendar.js:111 #: ../js/ui/calendar.js:82
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "日" msgstr "日"
#. Translators: Calendar grid abbreviation for Monday */ #. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:113 #: ../js/ui/calendar.js:84
msgctxt "grid monday" msgctxt "grid monday"
msgid "M" msgid "M"
msgstr "一" msgstr "一"
#. Translators: Calendar grid abbreviation for Tuesday */ #. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:115 #: ../js/ui/calendar.js:86
msgctxt "grid tuesday" msgctxt "grid tuesday"
msgid "T" msgid "T"
msgstr "二" msgstr "二"
#. Translators: Calendar grid abbreviation for Wednesday */ #. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:117 #: ../js/ui/calendar.js:88
msgctxt "grid wednesday" msgctxt "grid wednesday"
msgid "W" msgid "W"
msgstr "三" msgstr "三"
#. Translators: Calendar grid abbreviation for Thursday */ #. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:119 #: ../js/ui/calendar.js:90
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "四" msgstr "四"
#. Translators: Calendar grid abbreviation for Friday */ #. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:121 #: ../js/ui/calendar.js:92
msgctxt "grid friday" msgctxt "grid friday"
msgid "F" msgid "F"
msgstr "五" msgstr "五"
#. Translators: Calendar grid abbreviation for Saturday */ #. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:123 #: ../js/ui/calendar.js:94
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "六" msgstr "六"
#: ../js/ui/calendar.js:590 #: ../js/ui/calendar.js:564
msgid "Previous month" msgid "Previous month"
msgstr "上个月" msgstr "上个月"
#: ../js/ui/calendar.js:600 #: ../js/ui/calendar.js:574
msgid "Next month" msgid "Next month"
msgstr "下个月" msgstr "下个月"
#: ../js/ui/calendar.js:807 #: ../js/ui/calendar.js:781
msgid "Week %V" msgid "Week %V"
msgstr "第 %V 星期" msgstr "第 %V 星期"
#: ../js/ui/calendar.js:1263 #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:1187
msgctxt "event list time"
msgid "All Day"
msgstr "全天"
#: ../js/ui/calendar.js:1289
msgid "Clear section" msgid "Clear section"
msgstr "清除选中项目" msgstr "清除选中项目"
#: ../js/ui/calendar.js:1455 #: ../js/ui/calendar.js:1516
msgid "Events" msgid "Events"
msgstr "事件" msgstr "事件"
#: ../js/ui/calendar.js:1463 #: ../js/ui/calendar.js:1525
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%m月%d日 %A" msgstr "%m月%d日 %A"
#: ../js/ui/calendar.js:1467 #: ../js/ui/calendar.js:1529
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%Y年%m月%d日 %A" msgstr "%Y年%m月%d日 %A"
#: ../js/ui/calendar.js:1560 #: ../js/ui/calendar.js:1614
msgid "Notifications" msgid "Notifications"
msgstr "提示" msgstr "提示"
#: ../js/ui/calendar.js:1700 #: ../js/ui/calendar.js:1765
msgid "No Notifications" msgid "No Notifications"
msgstr "无提示" msgstr "无提示"
#: ../js/ui/calendar.js:1703 #: ../js/ui/calendar.js:1768
msgid "No Events" msgid "No Events"
msgstr "无事件" msgstr "无事件"
@ -551,79 +599,93 @@ msgstr "密码:"
msgid "Type again:" msgid "Type again:"
msgstr "再输一次:" msgstr "再输一次:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 #: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919 #: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect" msgid "Connect"
msgstr "连接" msgstr "连接"
#: ../js/ui/components/networkAgent.js:231 #: ../js/ui/components/networkAgent.js:233
#: ../js/ui/components/networkAgent.js:243 #: ../js/ui/components/networkAgent.js:245
#: ../js/ui/components/networkAgent.js:271 #: ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:291 #: ../js/ui/components/networkAgent.js:293
#: ../js/ui/components/networkAgent.js:301 #: ../js/ui/components/networkAgent.js:303
msgid "Password: " msgid "Password: "
msgstr "密码:" msgstr "密码:"
#: ../js/ui/components/networkAgent.js:236 #: ../js/ui/components/networkAgent.js:238
msgid "Key: " msgid "Key: "
msgstr "密钥:" msgstr "密钥:"
#: ../js/ui/components/networkAgent.js:275 #: ../js/ui/components/networkAgent.js:277
msgid "Identity: " msgid "Identity: "
msgstr "身份:" msgstr "身份:"
#: ../js/ui/components/networkAgent.js:277 #: ../js/ui/components/networkAgent.js:279
msgid "Private key password: " msgid "Private key password: "
msgstr "私人密钥密码:" msgstr "私人密钥密码:"
#: ../js/ui/components/networkAgent.js:289 #: ../js/ui/components/networkAgent.js:291
msgid "Service: " msgid "Service: "
msgstr "服务:" msgstr "服务:"
#: ../js/ui/components/networkAgent.js:318 #: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "无线网络要求身份认证" msgstr "无线网络要求身份认证"
#: ../js/ui/components/networkAgent.js:319 #: ../js/ui/components/networkAgent.js:321
#: ../js/ui/components/networkAgent.js:659
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
msgstr "访问无线网络“%s”需要密码或密钥。" msgstr "访问无线网络“%s”需要密码或密钥。"
#: ../js/ui/components/networkAgent.js:323 #: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "有线 802.1X 认证" msgstr "有线 802.1X 认证"
#: ../js/ui/components/networkAgent.js:325 #: ../js/ui/components/networkAgent.js:327
msgid "Network name: " msgid "Network name: "
msgstr "网络名称:" msgstr "网络名称:"
#: ../js/ui/components/networkAgent.js:330 #: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:666
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL 认证" msgstr "DSL 认证"
#: ../js/ui/components/networkAgent.js:337 #: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:672
msgid "PIN code required" msgid "PIN code required"
msgstr "需要 PIN 码" msgstr "需要 PIN 码"
#: ../js/ui/components/networkAgent.js:338 #: ../js/ui/components/networkAgent.js:340
#: ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "移动宽带设备需要 PIN 码" msgstr "移动宽带设备需要 PIN 码"
#: ../js/ui/components/networkAgent.js:339 #: ../js/ui/components/networkAgent.js:341
msgid "PIN: " msgid "PIN: "
msgstr "PIN" msgstr "PIN"
#: ../js/ui/components/networkAgent.js:345 #: ../js/ui/components/networkAgent.js:348
#: ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "移动宽带网络密码" msgstr "移动宽带网络密码"
#: ../js/ui/components/networkAgent.js:346 #: ../js/ui/components/networkAgent.js:349
#: ../js/ui/components/networkAgent.js:663
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "连接到“%s”需要密码。" msgstr "连接到“%s”需要密码。"
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "网络管理器"
#: ../js/ui/components/polkitAgent.js:54 #: ../js/ui/components/polkitAgent.js:54
msgid "Authentication Required" msgid "Authentication Required"
msgstr "需要认证" msgstr "需要认证"
@ -644,71 +706,9 @@ msgstr "认证"
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "抱歉,您的输入有误。请重试。" msgstr "抱歉,您的输入有误。请重试。"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:764 ../js/ui/dateMenu.js:210
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:771
msgid "Yesterday, %H%M"
msgstr "昨天 %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:778
msgid "%A, %H%M"
msgstr "%A %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:785
msgid "%B %d, %H%M"
msgstr "%m月%d日, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:791
msgid "%B %d %Y, %H%M"
msgstr "%Y年%m月%d日, %H:%M"
#. Translators: Time in 12h format */
#: ../js/ui/components/telepathyClient.js:797 ../js/ui/dateMenu.js:213
msgid "%l%M %p"
msgstr "%p %-l:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:804
msgid "Yesterday, %l%M %p"
msgstr "昨天%p %-l:%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:811
msgid "%A, %l%M %p"
msgstr "%A%p %-l:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:818
msgid "%B %d, %l%M %p"
msgstr "%m月%d日%p %-l:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:824
msgid "%B %d %Y, %l%M %p"
msgstr "%Y年%m月%d日%p %-l:%M"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. */ #. IM name. */
#: ../js/ui/components/telepathyClient.js:856 #: ../js/ui/components/telepathyClient.js:757
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s 现在叫做 %s" msgstr "%s 现在叫做 %s"
@ -721,7 +721,7 @@ msgstr "窗口"
msgid "Show Applications" msgid "Show Applications"
msgstr "显示应用程序" msgstr "显示应用程序"
#: ../js/ui/dash.js:451 #: ../js/ui/dash.js:449
msgid "Dash" msgid "Dash"
msgstr "Dash" msgstr "Dash"
@ -878,10 +878,19 @@ msgstr "安装"
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "从 extensions.gnome.org 下载并安装“%s”" msgstr "从 extensions.gnome.org 下载并安装“%s”"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576 #: ../js/ui/keyboard.js:718 ../js/ui/status/keyboard.js:713
msgid "Keyboard" msgid "Keyboard"
msgstr "键盘" msgstr "键盘"
#. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:66
msgid "Hide tray"
msgstr "隐藏托盘"
#: ../js/ui/legacyTray.js:107
msgid "Status Icons"
msgstr "状态图标"
#: ../js/ui/lookingGlass.js:643 #: ../js/ui/lookingGlass.js:643
msgid "No extensions installed" msgid "No extensions installed"
msgstr "未安装扩展" msgstr "未安装扩展"
@ -934,7 +943,7 @@ msgstr "查看源"
msgid "Web Page" msgid "Web Page"
msgstr "网页" msgstr "网页"
#: ../js/ui/messageTray.js:2131 #: ../js/ui/messageTray.js:1504
msgid "System Information" msgid "System Information"
msgstr "系统信息" msgstr "系统信息"
@ -954,21 +963,21 @@ msgstr "概览"
msgid "Type to search…" msgid "Type to search…"
msgstr "输入以搜索..." msgstr "输入以搜索..."
#: ../js/ui/panel.js:351 #: ../js/ui/panel.js:352
msgid "Quit" msgid "Quit"
msgstr "退出" msgstr "退出"
#. Translators: If there is no suitable word for "Activities" #. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */ #. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403 #: ../js/ui/panel.js:404
msgid "Activities" msgid "Activities"
msgstr "活动" msgstr "活动"
#: ../js/ui/panel.js:754 #: ../js/ui/panel.js:755
msgid "Top Bar" msgid "Top Bar"
msgstr "顶栏" msgstr "顶栏"
#: ../js/ui/popupMenu.js:288 #: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-us" msgstr "toggle-switch-us"
@ -1002,7 +1011,7 @@ msgid "%d new notification"
msgid_plural "%d new notifications" msgid_plural "%d new notifications"
msgstr[0] "%d 条新通知" msgstr[0] "%d 条新通知"
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345 #: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:342
msgid "Lock" msgid "Lock"
msgstr "锁定" msgstr "锁定"
@ -1018,11 +1027,11 @@ msgstr "无法锁定"
msgid "Lock was blocked by an application" msgid "Lock was blocked by an application"
msgstr "一个应用程序阻止了锁定" msgstr "一个应用程序阻止了锁定"
#: ../js/ui/search.js:609 #: ../js/ui/search.js:617
msgid "Searching…" msgid "Searching…"
msgstr "正在搜索..." msgstr "正在搜索..."
#: ../js/ui/search.js:611 #: ../js/ui/search.js:619
msgid "No results." msgid "No results."
msgstr "无结果。" msgstr "无结果。"
@ -1086,11 +1095,11 @@ msgstr "筛选键"
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "鼠标按键" msgstr "鼠标按键"
#: ../js/ui/status/accessibility.js:144 #: ../js/ui/status/accessibility.js:167
msgid "High Contrast" msgid "High Contrast"
msgstr "高对比度" msgstr "高对比度"
#: ../js/ui/status/accessibility.js:193 #: ../js/ui/status/accessibility.js:202
msgid "Large Text" msgid "Large Text"
msgstr "大号文本" msgstr "大号文本"
@ -1123,7 +1132,7 @@ msgstr "无连接"
msgid "Brightness" msgid "Brightness"
msgstr "亮度" msgstr "亮度"
#: ../js/ui/status/keyboard.js:599 #: ../js/ui/status/keyboard.js:736
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "显示键盘布局" msgstr "显示键盘布局"
@ -1292,10 +1301,6 @@ msgstr "VPN 设置"
msgid "VPN" msgid "VPN"
msgstr "VPN" msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "网络管理器"
#: ../js/ui/status/network.js:1697 #: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "启用网络连接失败" msgstr "启用网络连接失败"
@ -1338,23 +1343,23 @@ msgstr "乘机模式"
msgid "On" msgid "On"
msgstr "开" msgstr "开"
#: ../js/ui/status/system.js:317 #: ../js/ui/status/system.js:314
msgid "Switch User" msgid "Switch User"
msgstr "切换用户" msgstr "切换用户"
#: ../js/ui/status/system.js:322 #: ../js/ui/status/system.js:319
msgid "Log Out" msgid "Log Out"
msgstr "注销" msgstr "注销"
#: ../js/ui/status/system.js:341 #: ../js/ui/status/system.js:338
msgid "Orientation Lock" msgid "Orientation Lock"
msgstr "方向锁定" msgstr "方向锁定"
#: ../js/ui/status/system.js:349 #: ../js/ui/status/system.js:346
msgid "Suspend" msgid "Suspend"
msgstr "挂起" msgstr "挂起"
#: ../js/ui/status/system.js:352 #: ../js/ui/status/system.js:349
msgid "Power Off" msgid "Power Off"
msgstr "关机" msgstr "关机"
@ -1414,7 +1419,7 @@ msgstr[0] "设置更改将在 %d 后还原"
#. Translators: This represents the size of a window. The first number is #. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height. */ #. * the width of the window and the second is the height. */
#: ../js/ui/windowManager.js:599 #: ../js/ui/windowManager.js:613
#, javascript-format #, javascript-format
msgid "%d x %d" msgid "%d x %d"
msgstr "%d x %d" msgstr "%d x %d"
@ -1499,12 +1504,12 @@ msgstr "使用指定模式,如 “gdm”用于登录屏幕的模式"
msgid "List possible modes" msgid "List possible modes"
msgstr "列出可用的模式" msgstr "列出可用的模式"
#: ../src/shell-app.c:247 #: ../src/shell-app.c:239
msgctxt "program" msgctxt "program"
msgid "Unknown" msgid "Unknown"
msgstr "未知" msgstr "未知"
#: ../src/shell-app.c:488 #: ../src/shell-app.c:480
#, c-format #, c-format
msgid "Failed to launch “%s”" msgid "Failed to launch “%s”"
msgstr "启动“%s”失败" msgstr "启动“%s”失败"
@ -1520,3 +1525,11 @@ msgstr "密码不能为空"
#: ../src/shell-polkit-authentication-agent.c:346 #: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "认证对话框被用户驳回" msgstr "认证对话框被用户驳回"
#~ msgctxt "event list time"
#~ msgid "%H%M"
#~ msgstr "%H%M"
#~ msgctxt "event list time"
#~ msgid "%l%M%p"
#~ msgstr "%p %-l:%M"

File diff suppressed because it is too large Load Diff

View File

@ -64,8 +64,6 @@ st_source_h = \
st/st-scroll-bar.h \ st/st-scroll-bar.h \
st/st-scroll-view.h \ st/st-scroll-view.h \
st/st-shadow.h \ st/st-shadow.h \
st/st-table.h \
st/st-table-child.h \
st/st-texture-cache.h \ st/st-texture-cache.h \
st/st-theme.h \ st/st-theme.h \
st/st-theme-context.h \ st/st-theme-context.h \
@ -106,7 +104,6 @@ EXTRA_DIST += \
st_source_private_h = \ st_source_private_h = \
st/st-private.h \ st/st-private.h \
st/st-table-private.h \
st/st-theme-private.h \ st/st-theme-private.h \
st/st-theme-node-private.h \ st/st-theme-node-private.h \
st/st-theme-node-transition.h st/st-theme-node-transition.h
@ -133,8 +130,6 @@ st_source_c = \
st/st-scroll-bar.c \ st/st-scroll-bar.c \
st/st-scroll-view.c \ st/st-scroll-view.c \
st/st-shadow.c \ st/st-shadow.c \
st/st-table.c \
st/st-table-child.c \
st/st-texture-cache.c \ st/st-texture-cache.c \
st/st-theme.c \ st/st-theme.c \
st/st-theme-context.c \ st/st-theme-context.c \

View File

@ -201,7 +201,7 @@ calendar_sources_init (CalendarSources *sources)
"/", "org.freedesktop.DBus", "/", "org.freedesktop.DBus",
"StartServiceByName", "StartServiceByName",
g_variant_new ("(su)", g_variant_new ("(su)",
"org.gnome.evolution.dataserver.Sources4", "org.gnome.evolution.dataserver.Sources5",
0), 0),
NULL, NULL,
G_DBUS_CALL_FLAGS_NONE, G_DBUS_CALL_FLAGS_NONE,

View File

@ -1,4 +1,4 @@
#!/usr/bin/perl #!/usr/bin/env perl
# Copyright © 2011 Red Hat, Inc # Copyright © 2011 Red Hat, Inc
# #

View File

@ -42,18 +42,11 @@ static void gnome_shell_plugin_minimize (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);
static void gnome_shell_plugin_unminimize (MetaPlugin *plugin, static void gnome_shell_plugin_unminimize (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);
static void gnome_shell_plugin_maximize (MetaPlugin *plugin, static void gnome_shell_plugin_size_change (MetaPlugin *plugin,
MetaWindowActor *actor, MetaWindowActor *actor,
gint x, MetaSizeChange which_change,
gint y, MetaRectangle *old_frame_rect,
gint width, MetaRectangle *old_buffer_rect);
gint height);
static void gnome_shell_plugin_unmaximize (MetaPlugin *plugin,
MetaWindowActor *actor,
gint x,
gint y,
gint width,
gint height);
static void gnome_shell_plugin_map (MetaPlugin *plugin, static void gnome_shell_plugin_map (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);
static void gnome_shell_plugin_destroy (MetaPlugin *plugin, static void gnome_shell_plugin_destroy (MetaPlugin *plugin,
@ -134,8 +127,7 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
plugin_class->map = gnome_shell_plugin_map; plugin_class->map = gnome_shell_plugin_map;
plugin_class->minimize = gnome_shell_plugin_minimize; plugin_class->minimize = gnome_shell_plugin_minimize;
plugin_class->unminimize = gnome_shell_plugin_unminimize; plugin_class->unminimize = gnome_shell_plugin_unminimize;
plugin_class->maximize = gnome_shell_plugin_maximize; plugin_class->size_change = gnome_shell_plugin_size_change;
plugin_class->unmaximize = gnome_shell_plugin_unmaximize;
plugin_class->destroy = gnome_shell_plugin_destroy; plugin_class->destroy = gnome_shell_plugin_destroy;
plugin_class->switch_workspace = gnome_shell_plugin_switch_workspace; plugin_class->switch_workspace = gnome_shell_plugin_switch_workspace;
@ -281,27 +273,13 @@ gnome_shell_plugin_unminimize (MetaPlugin *plugin,
} }
static void static void
gnome_shell_plugin_maximize (MetaPlugin *plugin, gnome_shell_plugin_size_change (MetaPlugin *plugin,
MetaWindowActor *actor, MetaWindowActor *actor,
gint x, MetaSizeChange which_change,
gint y, MetaRectangle *old_frame_rect,
gint width, MetaRectangle *old_buffer_rect)
gint height)
{ {
_shell_wm_maximize (get_shell_wm (), _shell_wm_size_change (get_shell_wm (), actor, which_change, old_frame_rect, old_buffer_rect);
actor, x, y, width, height);
}
static void
gnome_shell_plugin_unmaximize (MetaPlugin *plugin,
MetaWindowActor *actor,
gint x,
gint y,
gint width,
gint height)
{
_shell_wm_unmaximize (get_shell_wm (),
actor, x, y, width, height);
} }
static void static void

View File

@ -176,15 +176,15 @@ gtk_menu_tracker_section_sync_separators (GtkMenuTrackerSection *section,
if (subsection) if (subsection)
{ {
gboolean could_have_separator; gboolean section_could_have_separator;
could_have_separator = (section->with_separators && n_items > 0) || subsection->separator_label; section_could_have_separator = (section->with_separators && n_items > 0) || subsection->separator_label;
/* Only pass the parent_model and parent_index in case they may be used to create the separator. */ /* Only pass the parent_model and parent_index in case they may be used to create the separator. */
n_items += gtk_menu_tracker_section_sync_separators (subsection, tracker, offset + n_items, n_items += gtk_menu_tracker_section_sync_separators (subsection, tracker, offset + n_items,
could_have_separator, section_could_have_separator,
could_have_separator ? section->model : NULL, section_could_have_separator ? section->model : NULL,
could_have_separator ? i : 0); section_could_have_separator ? i : 0);
} }
else else
n_items++; n_items++;
@ -197,11 +197,11 @@ gtk_menu_tracker_section_sync_separators (GtkMenuTrackerSection *section,
if (should_have_separator > section->has_separator) if (should_have_separator > section->has_separator)
{ {
/* Add a separator */ /* Add a separator */
GtkMenuTrackerItem *item; GtkMenuTrackerItem *menuitem;
item = _gtk_menu_tracker_item_new (tracker->observable, parent_model, parent_index, NULL, TRUE); menuitem = _gtk_menu_tracker_item_new (tracker->observable, parent_model, parent_index, NULL, TRUE);
(* tracker->insert_func) (item, offset, tracker->user_data); (* tracker->insert_func) (menuitem, offset, tracker->user_data);
g_object_unref (item); g_object_unref (menuitem);
section->has_separator = TRUE; section->has_separator = TRUE;
} }

Some files were not shown because too many files have changed in this diff Show More