Compare commits

...

76 Commits

Author SHA1 Message Date
Robert Ancell
c3ae81a5b3 Show a guest login prompt 2018-01-19 16:17:55 +13:00
Sveinn í Felli
74f4447b38 Update Icelandic translation 2017-12-08 09:01:12 +00:00
Bastien Nocera
a3736d3a39 dateMenu: Fix possible crash with unknown locations
If there are locations unknown to the libgweather version gnome-shell is
using, don't crash.

JS ERROR: TypeError: b.location is null
WorldClocksSection<._clocksChanged/<@resource:///org/gnome/shell/ui/dateMenu.js:141:1
WorldClocksSection<._clocksChanged@resource:///org/gnome/shell/ui/dateMenu.js:139:9

https://bugzilla.gnome.org/show_bug.cgi?id=791148
2017-12-06 02:06:49 +01:00
Bastien Nocera
b7b59d78b5 dateMenu: Ignore malformed world-clocks settings
Guard against a malformed setting that doesn't contain a
'location' key.

https://bugzilla.gnome.org/show_bug.cgi?id=791148
2017-12-06 02:06:47 +01:00
Marco Trevisan (Treviño)
ac596ca1c1 dash: Do not shadow ClutterActor's destroy()
Since commit ef1e27966d turned DashItemContainer into an StWidget,
the destroy() method overrides the ClutterActor method, which is at
the very least bad style. Instead, follow the usual pattern of using
a ::destroy handler.

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2017-12-05 18:07:43 -05:00
Marco Trevisan (Treviño)
d5805f9f0d dash: Make sure item labels are only destroyed once
Labels are currently destroyed from both animateOutAndDestroy()
and destroy(), which now (rightfully) triggers a gjs warning. As
the label is created unconditionally since commit 36e5ae4a25,
mirror that and always release it in destroy() and hide it
elsewhere.

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2017-12-05 18:07:39 -05:00
Marco Trevisan (Treviño)
3b4be770a0 status/keyboard: Reset menuItems and Label objects on change
In the current code it could happen that we've menuItems and indicatorLabels
for sources that aren't anymore around, because in case a source is removed
we don't cleanup the their container objects.
Also, we should nullify InputManager's _currentSource when sources change
or it might point to some invalid data again.

So it could happen that we try to access an invalid menuitem or label
if a source change happens mentioning a source that has been deleted.

https://bugzilla.gnome.org/show_bug.cgi?id=788931
2017-11-21 11:05:31 -05:00
Petr Kovar
580ba22954 Update Czech translation 2017-11-20 08:18:36 +01:00
Carlos Garnacho
af79d975b0 overview: Protect ::drag-end handlers
These end up emitting item-drag-end/window-drag-end pretty much
without checks. Given the MetaDnd object may end up emitting
::drag-leave as a result of the plugin ending its grab, this
would result on spurious emission of those events and subsequent
warnings.

For extra paranoia, the _inDrag variable has been split into
_inItemDrag/_inWindowDrag so we can't cross the streams.

https://bugzilla.gnome.org/show_bug.cgi?id=784545
2017-11-17 16:03:37 +01:00
Kjartan Maraas
bfe2558d68 Updated Norwegian bokmål translation. 2017-11-06 13:03:05 +01:00
Khaled Hosny
8f4e45abfa Update Arabic translation 2017-11-03 10:18:46 +02:00
Florian Müllner
6dd973be12 Bump version to 3.26.2
Update NEWS.
2017-11-02 17:01:38 +01:00
Florian Müllner
98be314e64 style: Fix left tile preview
Windows that are tiled to the left/right only use rounded corners
where they are attached to the edge, the preview should follow that.
2017-11-02 16:56:31 +01:00
Alessandro Bono
c0ef30d416 theme: Restore drag effect between workspaces
When dragging a window between two workspaces a light effect used
to be present. The effect was lost probably during the theme revamp
in version 3.16.

https://bugzilla.gnome.org/show_bug.cgi?id=789103
2017-11-02 16:56:19 +01:00
Florian Müllner
fd103ff703 dialog: Reset initial focus on destroy
Since 0b02f757f8 we track the button that should have key focus
when the dialog is opened. However when the dialog is reused, the
button may get destroyed - clear the initial focus in that case to
allow setButton() to set a new one.

https://bugzilla.gnome.org/show_bug.cgi?id=788542
2017-10-27 14:46:30 +02:00
Hannie Dumoleyn
49c144a64c Update Dutch translation 2017-10-25 09:03:41 +00:00
Marco Trevisan (Treviño)
2c2479581a main: use SA_NODEFER to track signals to being able to raise from alarm
After we receive one of the tracked signals, in case we get stuck inside
the gjs_dumpstack () call, we use an alarm to raise the previously emitted
signal, however without using SA_NODEFER, the raise inside the alarm handler
will be ignored.

To avoid to handle new signals caused by the handler calls, once we get the
first signal, we just ignore them all as they could only lead to dirty traces.

Also, cleaning up a bit the code, and disabling the shell log handler
in dump_gjs_stack_alarm_sigaction since this might lead to a new
gjs_dumpstack () request.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-24 01:22:16 -05:00
Marco Trevisan (Treviño)
f15650e060 main: call gjs_dumpstack on aborts and traps and optionally on segfaults
In order to debug issues triggered by JS code we might need to
see the stack of it, this is not normally visible in static stack traces,
thus we need to call gjs_dumpstack () before dying the process.

Intercepting signals SIGABRT, SIGTRAP (needed for catching fatal glib
errors) SIGFPE and SIGIOT by default, while introducing a new
'backtrace-segfaults' flag for the SHELL_DEBUG environment variable to
do the same on SIGSEGV and SIGBUS (this is a precaution to avoid that we
corrupt the stack for automatic errors trackers).

In any case after dumping the stack we raise the signal again, in order
to make the system aware of it.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-23 05:12:28 -05:00
Florian Müllner
78d58deb5a network: Spawn wifi panel for further WPA enterprise configuration
Settings recently split Wi-Fi configuration from the Network panel,
so launch that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=789231
2017-10-20 18:05:10 +02:00
Florian Müllner
f4237a4ae7 popupMenu: Fix setting ImageMenuItem's icons via strings
Commit 28ca96064b added support for setting PopupImageMenuItem's icons
via GIcons as well as via strings. However as the check whether an object
implements the GIcon interface only works on GObjects, specifying an icon
name was broken. Fix that to actually allow both strings and GIcons.

https://bugzilla.gnome.org/show_bug.cgi?id=789018
2017-10-16 20:54:57 +02:00
Matej Urbančič
40616015e5 Updated Slovenian translation 2017-10-15 09:51:49 +02:00
Fabio Tomat
43ec5280b4 Update Friulian translation 2017-10-11 06:35:27 +00:00
Jonas Ådahl
5f8a511483 layout: Unset primary and bottom monitor when headless
We were handling being initially headless by only setting the primary
and bottom monitor if there was any primary monitor, then checking the
primary monitor reference before making calls assuming there was any
monitors.

What we didn't do was unset the primary and bottom monitor when going
headless, meaning that temporarly disconnecting a monitor while having
windows open caused an assert to be triggered due to various code paths
taking the path assuming there are valid monitors.

Unsetting both the primary and bottom monitor when going headless avoids
the code paths in the same way as they were avoided when starting
headless.

https://bugzilla.gnome.org/show_bug.cgi?id=788607
2017-10-07 00:38:16 -04:00
Xavi Ivars
f036786d4a [l10n] Updated Catalan (Valencian) translation 2017-10-05 13:59:55 +02:00
Florian Müllner
bf2a824fd1 Bump version to 3.26.1
Update NEWS.
2017-10-04 18:12:27 +02:00
Florian Müllner
d439456048 tests: Fix JS warning 2017-10-04 18:12:27 +02:00
Florian Müllner
4543ca1620 build: Run unit tests on meson test
Meson makes it easy to define unit tests, so hook up the existing
ones.

https://bugzilla.gnome.org/show_bug.cgi?id=786497
2017-10-04 18:12:27 +02:00
Florian Müllner
7da5a76aaa popupMenu: Close menus on session mode changes
We are already closing top bar menus on session mode changes, but
as this behavior makes sense for any other menus as well - dash
context menus or the background menu for instance - just generalize
the behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=787676
2017-10-04 18:12:27 +02:00
Florian Müllner
0b02f757f8 dialog: Fix setting buttons as initial key focus
Commit 1c7a3ee61b broke setting the initial key focus for default
buttons added via addButton(). Fix this by allowing the dialog class
to provide a different default widget to ModalDialog than the entire
dialog itself.

https://bugzilla.gnome.org/show_bug.cgi?id=788282
2017-10-04 18:12:27 +02:00
Florian Müllner
1939e22c22 workspace: Focus clone when highlighting
We don't use different hover- and focus indications for window previews,
so using keyboard navigation after hovering a clone often has surprising
results when the previous focus window wasn't the selected one. Address
this by simply moving the keyboard focus with the highlight.

https://bugzilla.gnome.org/show_bug.cgi?id=786546
2017-10-04 18:12:27 +02:00
Florian Müllner
8143f734f8 workspace: Fix tab navigation order
By default the focus chain uses the same order as the list returned
by clutter_actor_get_children(), which corresponds to the z-order.
This doesn't work well in the window picker, where clones follow
the stacking of windows to ensure a correct overview transition,
but previews are laid out purely based on space efficiency. As
a result, the order in which window previews are navigated when
tabbing around is essentially random. Fix this by providing a
focus chain implementation that is based on the visual layout
of the previews rather than the stacking.

https://bugzilla.gnome.org/show_bug.cgi?id=786546
2017-10-04 18:12:26 +02:00
Florian Müllner
156032a7ec weather: Mark conditions as significant
Otherwise the passed phenomenon/qualifier are ignored and a fallback
string is used.
2017-10-04 18:12:26 +02:00
Jonas Ådahl
5c37facc08 ui: Improve handling being headless
Don't assume there will always be a primary (logical) monitor, or any
(logical) monitor at all. This includes not allocating / layouting /
styling correctly when being headless.

The initial background loading will also be delayed until there are any
(logical) monitors connected.

https://bugzilla.gnome.org/show_bug.cgi?id=730551
2017-10-04 11:50:21 -04:00
Martin Andersson
59fc26f821 calendar: Rebuild the calendar when the time zone changes
A time zone change can cause the date to change so we need to clear
SpiderMonkey's time zone cache and rebuild the calendar.

https://bugzilla.gnome.org/show_bug.cgi?id=678507
2017-10-04 16:44:07 +02:00
Anders Jonsson
9822c4c1d6 Update Swedish translation 2017-10-02 18:49:00 +00:00
Cheng-Chia Tseng
1510640067 Update Chinese (Taiwan) translation 2017-10-01 14:27:01 +00:00
Arash Mousavi
15f0e05db4 [L10N] Update Persian translation 2017-10-01 17:05:05 +03:30
Athul R T
e2ecae466b Update Malayalam translation 2017-09-30 11:42:58 +00:00
Florian Müllner
f453b3780f tools: Remove obsolete check-for-missing script
The script was used by a distcheck hook to check for files that are
in git, but not the distributed tarball. We dropped autotools support,
so the script is no longer used - in fact, it isn't useful anymore,
as `ninja dist` generates tarballs from git itself rather than from
a separately maintained list of files ...
2017-09-30 03:18:55 +02:00
Mario Sanchez Prada
b5f5a594ba shell-app: Don't transition to STOPPED while still in the STARTING state
Similar to what it's done in _shell_app_add_window(), rely on calling
shell_app_sync_running_state() when removing windows too, to avoid
transitioning to STOPPED while it's still in the STARTING state.

This makes the logic compliant with the startup notification spec and
prevents stopping an application too early if it has a splash screen
that has been closed before the application's main window is shown.

https://bugzilla.gnome.org/show_bug.cgi?id=787905
2017-09-29 18:10:23 +01:00
Florian Müllner
6321bbb773 windowManager: Disable OSK gesture on lock screen
On the screen shield, the only possible interaction is lifting the
shield. The on-screen-keyboard is not useful for that, and the drag
gesture from the bottom may in fact conflict with dragging up the
shield, so disable it.

https://bugzilla.gnome.org/show_bug.cgi?id=788339
2017-09-29 15:59:10 +02:00
Florian Müllner
3eb80dc6c0 calendar: Make notification icons font-relative
As notification icons now align with the title, it makes sense for
them to follow the text size in case a text-scaling-factor other
than 1 is applied.

https://bugzilla.gnome.org/show_bug.cgi?id=788265
2017-09-29 15:59:10 +02:00
Mario Sanchez Prada
023b50e7a7 messageTray: Check monitor's existence before trying to update the state
Not doing this will throw a backtrace when running on headless mode and
trying to show a notification, due to Main.layoutManager.primaryMonitor
being undefined, so it's better to return early.

https://bugzilla.gnome.org/show_bug.cgi?id=730551
2017-09-28 16:32:00 +01:00
Sveinn í Felli
9a7dbfba99 Update Icelandic translation 2017-09-26 18:10:03 +00:00
Sveinn í Felli
a7021f993d Update Icelandic translation 2017-09-25 17:02:52 +00:00
Krzesimir Nowak
1ef8722c52 notificationDaemon: Guard against invalid D-Bus object paths
When making any D-Bus call through the GDBus' proxy wrapper with an
invalid D-Bus object path, gnome-shell hangs.

Supposedly FdoApplicationProxy constructor should validate the passed
D-Bus object path and throw an error if the path is invalid. Since it
does not do that, we work it around by making sure that the deduced
D-Bus object path is valid or throw an exception if the path is not.

https://bugzilla.gnome.org/show_bug.cgi?id=787902
2017-09-25 15:57:20 +01:00
Krzesimir Nowak
ce7ff27c0c notificationDaemon: Consider hyphens for app ID to object path translations
Some application IDs contain hyphens, which are not allowed in D-Bus object
paths, so we need to update the translation by converting them to something
that's a valid object path. This is consistent with what GApplication does.

https://bugzilla.gnome.org/show_bug.cgi?id=787902
2017-09-25 15:57:07 +01:00
Florian Müllner
de4c0bdca6 loginManager: Handle unset XDG_SESSION_ID more gracefully
While certain functionality won't be available when running outside a
(logind) user session, that's still better than crashing ...

https://bugzilla.gnome.org/show_bug.cgi?id=788046
2017-09-22 18:46:01 +02:00
Florian Müllner
ab0e98dfdd build: Use new mkenums_simple() function
As most libraries use the same mkenums templates, meson now added a
mkenums_simple() variant that works without providing the template.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
Florian Müllner
2ae63691e9 meson: Use build_rpath instead of custom linker args
Meson now warns when specifying the rpath in linker flags instead
of using the newly added build_rpath option - now that we already
depend on the latest release, there's no reason anyway to not use
the nicer syntax.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
Florian Müllner
9ecacdbded build: Update autotools-compat wrapper
mesontest is now deprecated in favor of the 'test' subcommand of the
main meson executable, so use that instead to wrap 'make check'.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
Florian Müllner
9d01828b5b build: Require latest meson
Meson 0.42.0 fixes a build issue on systems that use Debian-style
multiarch, so require that.

https://bugzilla.gnome.org/show_bug.cgi?id=786343
2017-09-22 17:43:54 +02:00
Florian Müllner
7f381dd2fe st-icon: Remove some dead code 2017-09-22 17:43:54 +02:00
Jakub Steiner
fcdb73752e theme: re-render with sassc
pardon, pardon!
2017-09-22 17:41:18 +02:00
Jakub Steiner
ec9b2cef7d theme: panel corner opacity
- forgot to sync the corners

https://bugzilla.gnome.org/show_bug.cgi?id=787940
2017-09-22 17:36:07 +02:00
Florian Müllner
18f36b68ee Update sass submodule to the right commit 2017-09-22 17:31:22 +02:00
Jakub Steiner
f88e963edf add missing close button states
https://bugzilla.gnome.org/show_bug.cgi?id=788003
2017-09-22 17:13:07 +02:00
Jakub Steiner
6ecbaac0a8 theme: make top bar more legible
https://bugzilla.gnome.org/show_bug.cgi?id=787940
2017-09-22 17:13:07 +02:00
Florian Müllner
7015bb2ca9 shadow: Only use correctly sized textures for shortcut
When creating a shadow for a ClutterTexture, we currently use the
underlying CoglTexture directly instead of rendering the actor to
an offscreen buffer. This assumes that the CoglTexture is directly
suitable as shadow source, which isn't necessarily the case - it
may have a very different size than what is shown and scaled up or
down by the hardware. In that case we end up with a scaled shadow
texture as well, which messes up the desired blur effect - the
result will be too light when scaling up, or too sharp when scaling
down. To fix this, only take the shortcut when a ClutterTexture's
underlying texture has the correct size and fall back to offscreen
rendering otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=788039
2017-09-22 17:11:28 +02:00
Mario Sanchez Prada
703187e996 dnd: Prevent dividing by zero when calculating the scale factor
This ensures that we snap back to the correct size when the
source actor has been scaled to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=787901
2017-09-22 15:50:07 +01:00
Arash Mousavi
d86a4dc43b Update Persian translation 2017-09-22 13:50:33 +00:00
Florian Müllner
f5a28c2f24 remoteSearch: Fix remote search providers
Commit 289f982949 broke all remote providers when adding support for
non-auto-started search providers: Whether the provider should be
auto-started needs to be known in the constructor, so setting the
property on the constructed object doesn't work.

https://bugzilla.gnome.org/show_bug.cgi?id=787986
2017-09-21 16:53:32 +02:00
Didier Roche
9f0bb526f7 Make key-above-tab in switcher more consistent
Ensure that key-above-tab for selecting window application is consistent
with the down key.
After focus an application in the switcher:
- if you press down, the window thumbnails are previewed, and first element
  is selected
- if you press key-above-tab, the window thumbnails are previewed, however
  the second element is directly selected.
Make both interactions always select the first element.

https://bugzilla.gnome.org/show_bug.cgi?id=786009
2017-09-19 20:09:20 +02:00
Florian Müllner
80151a7d64 dnd: Declare dragMonitors with var
It is used outside the DND module itself.

https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
Florian Müllner
5a414fff44 windowManager: Remove excess parameter
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
Florian Müllner
2d11b5cea0 autorunManager: Avoid access to non-existent array element
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
Florian Müllner
ecddf1fffd Fix some more undefined property warnings
https://bugzilla.gnome.org/show_bug.cgi?id=787907
2017-09-19 20:07:21 +02:00
Ray Strode
90c55e1977 gtk-embed: ensure we only listen for window-created events once
If a tray icon gets a mapped and unmapped and the mapped again
in quick succession, we can end up with multiple handlers
listening for window creation events.

This commit tries to guard against that by only listening for
window-created events when we don't  know the actor associated
with the icon.

https://bugzilla.gnome.org/show_bug.cgi?id=787361
2017-09-15 15:32:46 -04:00
Stas Solovey
8331436ab3 Update Russian translation 2017-09-14 21:43:54 +00:00
Bastien Nocera
289f982949 remoteSearch: Allow search providers not to auto-start
This would be used by search providers which only operate on data in the
running instance, such as the terminal's search provider which finds the
shell in the tab matching the search text.

https://bugzilla.gnome.org/show_bug.cgi?id=785380
2017-09-14 17:03:14 +02:00
Khaled Hosny
e914d11a5f Update Arabic translation 2017-09-14 13:31:37 +02:00
Efstathios Iosifidis
e5ed0ab60f Update Greek translation 2017-09-12 19:49:52 +00:00
Marc-Antoine Perennou
5ec0ad4e9c StEntry: fix crash when hint actor is NULL
https://bugzilla.gnome.org/show_bug.cgi?id=787580

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-09-12 21:39:30 +02:00
Florian Müllner
bddc2c0016 dateMenu: Use icon for message indicator
Using a unicode character here means it may look quite different
from the intended style (for instance with emoji fonts). Avoid
this by providing a custom icon and use that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=766368
2017-09-12 17:32:51 +02:00
Florian Müllner
56f4ce37cd dateMenu: Adjust to GWeather IAPI change
It's not exactly clear what changed - gobject-introspection, gjs - but
the newly added gweather_condition_to_string_full() API no longer works
like it used to. The replacement code does look more idiomatic anyway,
so just fix the code without investigating the reason of the breakage.

https://bugzilla.gnome.org/show_bug.cgi?id=787423
2017-09-12 17:32:51 +02:00
Florian Müllner
053b8da89c app: Work around pkexec restriction when launching
Unless automatic child reaping is disabled in GSpawnFlags, glib's
g_spawn_* functions will reparent the spawned process to init by
double-forking. Unfortunately pkexec bails out in this case[0],
which means that it no longer works in .desktop files since the
PID tracking removal in commit 01c6392c13.
Fix this by going back to manual child reaping.

[0] https://cgit.freedesktop.org/polkit/tree/src/programs/pkexec.c#n728

https://bugzilla.gnome.org/show_bug.cgi?id=763531
2017-09-12 17:32:51 +02:00
66 changed files with 7460 additions and 4677 deletions

39
NEWS
View File

@@ -1,3 +1,42 @@
3.26.2
======
* Dump javascript stack on aborts, traps and segfaults [Marco; #789237]
* Misc. bug fixes [Jonas, Florian, Alessandro; #788607, #789018, #789231,
#788542, #789103]
Contributors:
Jonas Ådahl, Alessandro Bono, Florian Müllner, Marco Trevisan (Treviño)
Translations:
Xavi Ivars [ca@valencia], Fabio Tomat [fur], Matej Urbančič [sl],
Hannie Dumoleyn [nl]
3.26.1
======
* Don't detach launched apps to not break pkexec and friends [Florian; #763531]
* Allow search providers to not autostart [Bastien, Florian; #785380, #787986]
* Fix crash when tray icons are hidden/shown in quick succession [Ray; #787361]
* Make window group switcher more consistent [Didier; #786009]
* Improve legibility of the top bar when translucent [Jakub; #787940]
* Don't crash when running outside a logind session [Florian; #788046]
* Allow to run headless [Mario, Jonas; #730551]
* Update calendar on timezone changes [Martin; #678507]
* Improve keyboard navigation of window previews [Florian; #786546]
* Run unit tests on `meson test` [Florian; #786497]
* Misc. bug fixes [Florian, Marc-Antoine, Mario, Jakub, Krzesimir; #787423,
#766368, #787580, #787907, #787901, #788039, #788003, #786343, #787902,
#788265, #788339, #787905, #788282, #787676]
Contributors:
Martin Andersson, Florian Müllner, Bastien Nocera, Krzesimir Nowak,
Marc-Antoine Perennou, Didier Roche, Mario Sanchez Prada, Jakub Steiner,
Ray Strode
Translations:
Efstathios Iosifidis [el], Khaled Hosny [ar], Stas Solovey [ru],
Arash Mousavi [fa], Sveinn í Felli [is], Athul R T [ml],
Cheng-Chia Tseng [zh_TW], Anders Jonsson [sv]
3.26.0
======
* Misc. bug fixes [Ray, Michael, Jonas; #786332] #786783, #786886, #786868]

3
configure vendored
View File

@@ -52,7 +52,6 @@ sanitycheck() {
}
sanitycheck MESON 'meson'
sanitycheck MESONTEST 'mesontest'
sanitycheck NINJA 'ninja' 'ninja-build'
enable_docs='-Denable-gtk-doc=false'
@@ -121,7 +120,7 @@ install:
DESTDIR="\$(DESTDIR)" ${NINJA} ${NINJA_OPT} install
check:
${MESONTEST} ${NINJA_OPT}
${MESON} test ${NINJA_OPT}
END
echo "Summary:"

View File

@@ -9,6 +9,8 @@
<file>checkbox-off.svg</file>
<file>checkbox.svg</file>
<file>close-window.svg</file>
<file>close-window-active.svg</file>
<file>close-window-hover.svg</file>
<file>close.svg</file>
<file>corner-ripple-ltr.png</file>
<file>corner-ripple-rtl.png</file>
@@ -18,6 +20,7 @@
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>logged-in-indicator.svg</file>
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
<file>no-events.svg</file>
<file>no-notifications.svg</file>
<file>noise-texture.png</file>

View File

@@ -78,11 +78,18 @@ install_data('50-gnome-shell-system.xml', install_dir: keysdir)
schemaconf = configuration_data()
schemaconf.set('GETTEXT_PACKAGE', meson.project_name())
configure_file(
schema = configure_file(
input: 'org.gnome.shell.gschema.xml.in',
output: 'org.gnome.shell.gschema.xml',
configuration: schemaconf,
install_dir: schemadir
)
# for unit tests - gnome.compile_schemas() only looks in srcdir
custom_target('compile-schemas',
input: schema,
output: 'gschemas.compiled',
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
build_by_default: true)
install_data('gnome-shell-overrides.convert', install_dir: convertdir)

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<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"
version="1.0"
id="Foreground"
x="0px"
y="0px"
width="32"
height="32"
viewBox="0 0 32 32"
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window-active.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><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><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1375 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z"
id="path883"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#a5c8ec;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0" /><path
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z"
inkscape:connector-curvature="0"
id="path887"
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<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"
version="1.0"
id="Foreground"
x="0px"
y="0px"
width="32"
height="32"
viewBox="0 0 32 32"
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window-hover.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><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 /></cc:Work></rdf:RDF></metadata><defs
id="defs2397"><linearGradient
id="linearGradient3173"><stop
style="stop-color:#c4c4c4;stop-opacity:1;"
offset="0"
id="stop3175" /><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="1"
id="stop3177" /></linearGradient><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1375 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssc"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#2975c4;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="path822"
d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z" /><path
sodipodi:nodetypes="ccsccccccccccccccccccccccc"
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new"
id="path826"
inkscape:connector-curvature="0"
d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z" /></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -19,7 +19,7 @@
enable-background="new 0 0 16 16"
xml:space="preserve"
sodipodi:version="0.32"
inkscape:version="0.92+devel unknown"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="close-window.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata2399"><rdf:RDF><cc:Work
@@ -39,8 +39,8 @@
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333334 : 1"
id="perspective2401" /></defs><sodipodi:namedview
inkscape:window-height="1376"
inkscape:window-width="3440"
inkscape:window-height="1106"
inkscape:window-width="1700"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10.0"
@@ -51,28 +51,27 @@
pagecolor="#797979"
id="base"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="-17.664395"
inkscape:cy="7.2420799"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:zoom="4"
inkscape:cx="28.483745"
inkscape:cy="67.714004"
inkscape:window-x="1427"
inkscape:window-y="127"
inkscape:current-layer="Foreground"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="1"
inkscape:window-maximized="0"
inkscape:document-rotation="0"><inkscape:grid
type="xygrid"
id="grid11246"
empspacing="5"
empspacing="32"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" /></sodipodi:namedview><path
clip-rule="evenodd"
d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.6072804 11.5529359,-11.6072804 6.380109,0 11.552937,5.1971594 11.552937,11.6072804 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z"
d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z"
id="path2394-32"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0" /><path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.49900004;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.74932218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; }
.tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; }
border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary {
border-radius: 0 6px 0 0; }
@@ -657,7 +657,7 @@ StScrollBar {
/* TOP BAR */
#panel {
background-color: rgba(0, 0, 0, 0.2);
background-color: rgba(0, 0, 0, 0.35);
/* transition from solid to transparent */
transition-duration: 500ms;
font-weight: bold;
@@ -668,7 +668,7 @@ StScrollBar {
spacing: 4px; }
#panel .panel-corner {
-panel-corner-radius: 6px;
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent; }
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
@@ -682,7 +682,7 @@ StScrollBar {
-minimum-hpadding: 6px;
font-weight: bold;
color: #eee;
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
transition-duration: 100ms; }
#panel .panel-button .app-menu-icon {
-st-icon-style: symbolic;
@@ -691,14 +691,14 @@ StScrollBar {
#panel .panel-button .system-status-icon,
#panel .panel-button .app-menu-icon > StIcon,
#panel .panel-button .popup-menu-arrow {
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
#panel .panel-button:hover {
color: white;
text-shadow: 0px 0px 8px black; }
text-shadow: 0px 1px 6px black; }
#panel .panel-button:hover .system-status-icon,
#panel .panel-button:hover .app-menu-icon > StIcon,
#panel .panel-button:hover .popup-menu-arrow {
icon-shadow: 0px 0px 8px black; }
icon-shadow: 0px 1px 6px black; }
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px #256ab1;
@@ -918,17 +918,17 @@ StScrollBar {
background-color: #0d0d0d; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 0.68em 0.2em 0.68em 0.68em; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 0.68em 0.68em 0.68em 0.2em; }
.message-icon-bin > StIcon {
color: #cccccc;
icon-size: 16px;
icon-size: 1.09em;
-st-icon-style: symbolic; }
.message-secondary-bin {
padding: 0 12px; }
padding: 0 0.82em; }
.message-secondary-bin > .event-time {
color: #999999;
@@ -938,7 +938,7 @@ StScrollBar {
padding-bottom: 0.13em; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
icon-size: 1.09em; }
.message-title {
color: #f2f2f2; }
@@ -1025,12 +1025,12 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
width: 32px; }
.window-close {
width: 32px;
-shell-close-overlap: 16px; }
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.window-close:hover {
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
.window-close:active {
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
/* NETWORK DIALOGS */
.nm-dialog {
@@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator {
border: 4px solid #215d9c;

View File

@@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; }
.tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; }
border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary {
border-radius: 0 6px 0 0; }
@@ -657,7 +657,7 @@ StScrollBar {
/* TOP BAR */
#panel {
background-color: rgba(0, 0, 0, 0.2);
background-color: rgba(0, 0, 0, 0.35);
/* transition from solid to transparent */
transition-duration: 500ms;
font-weight: bold;
@@ -668,7 +668,7 @@ StScrollBar {
spacing: 4px; }
#panel .panel-corner {
-panel-corner-radius: 6px;
-panel-corner-background-color: rgba(0, 0, 0, 0.2);
-panel-corner-background-color: rgba(0, 0, 0, 0.35);
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent; }
#panel .panel-corner:active, #panel .panel-corner:overview, #panel .panel-corner:focus {
@@ -682,7 +682,7 @@ StScrollBar {
-minimum-hpadding: 6px;
font-weight: bold;
color: #eee;
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9);
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9);
transition-duration: 100ms; }
#panel .panel-button .app-menu-icon {
-st-icon-style: symbolic;
@@ -691,14 +691,14 @@ StScrollBar {
#panel .panel-button .system-status-icon,
#panel .panel-button .app-menu-icon > StIcon,
#panel .panel-button .popup-menu-arrow {
icon-shadow: 0px 0px 2px rgba(0, 0, 0, 0.9); }
icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); }
#panel .panel-button:hover {
color: white;
text-shadow: 0px 0px 8px black; }
text-shadow: 0px 1px 6px black; }
#panel .panel-button:hover .system-status-icon,
#panel .panel-button:hover .app-menu-icon > StIcon,
#panel .panel-button:hover .popup-menu-arrow {
icon-shadow: 0px 0px 8px black; }
icon-shadow: 0px 1px 6px black; }
#panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0px #256ab1;
@@ -918,17 +918,17 @@ StScrollBar {
background-color: #454c4c; }
.message-icon-bin {
padding: 10px 3px 10px 10px; }
padding: 0.68em 0.2em 0.68em 0.68em; }
.message-icon-bin:rtl {
padding: 10px 10px 10px 3px; }
padding: 0.68em 0.68em 0.68em 0.2em; }
.message-icon-bin > StIcon {
color: #bebeb6;
icon-size: 16px;
icon-size: 1.09em;
-st-icon-style: symbolic; }
.message-secondary-bin {
padding: 0 12px; }
padding: 0 0.82em; }
.message-secondary-bin > .event-time {
color: #8e8e80;
@@ -938,7 +938,7 @@ StScrollBar {
padding-bottom: 0.13em; }
.message-secondary-bin > StIcon {
icon-size: 16px; }
icon-size: 1.09em; }
.message-title {
color: #e2e2df; }
@@ -1025,12 +1025,12 @@ StScrollBar {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
width: 32px; }
.window-close {
width: 32px;
-shell-close-overlap: 16px; }
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.window-close:hover {
background-image: url("resource:///org/gnome/shell/theme/close-window-hover.svg"); }
.window-close:active {
background-image: url("resource:///org/gnome/shell/theme/close-window-active.svg"); }
/* NETWORK DIALOGS */
.nm-dialog {
@@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator {
border: 4px solid #215d9c;

View File

@@ -0,0 +1,40 @@
<?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="16"
height="16"
viewBox="0 0 4.2333333 4.2333333"
version="1.1"
id="svg8">
<defs
id="defs2" />
<metadata
id="metadata5">
<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
id="layer1"
style="display:inline"
transform="translate(0,-292.76667)">
<path
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.17969394"
d="m 3.1749998,294.88333 a 1.0583333,1.0583333 0 0 1 -1.0583332,1.05833 1.0583333,1.0583333 0 0 1 -1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583332,1.05833 z"
id="path4485" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -402,6 +402,40 @@ var SessionMenuButton = new Lang.Class({
});
Signals.addSignalMethods(SessionMenuButton.prototype);
var GuestUser = new Lang.Class({
Name: 'GuestUser',
_init: function() {
this.is_loaded = true;
this.locked = false;
},
connect: function() {
},
disconnect: function() {
},
is_system_account: function() {
return false;
},
get_icon_file: function() {
return null; // FIXME: Use an icon for guest?
},
get_real_name: function() {
return 'Guest'; // FIXME: Translatable
},
get_user_name: function() {
return '*guest'; // FIXME: No a real username...
},
is_logged_in: function() {
return false; // FIXME: Can be logged in..
}
});
var LoginDialog = new Lang.Class({
Name: 'LoginDialog',
@@ -446,6 +480,8 @@ var LoginDialog = new Lang.Class({
x_fill: true,
y_fill: true });
this._guestUser = new GuestUser();
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN);
this._authPrompt.connect('prompted', Lang.bind(this, this._onPrompted));
this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
@@ -1204,6 +1240,7 @@ var LoginDialog = new Lang.Class({
for (let i = 0; i < users.length; i++) {
this._userList.addUser(users[i]);
}
this._userList.addUser(this._guestUser);
this._updateDisableUserList();

View File

@@ -423,7 +423,21 @@ var ShellUserVerifier = new Lang.Class({
_startService: function(serviceName) {
this._hold.acquire();
if (this._userName) {
if (this._userName == "*guest") {
this._userVerifier.call_begin_verification_for_guest(this._cancellable,
Lang.bind(this, function(obj, result) {
try {
obj.call_begin_verification_for_guest_finish(result);
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
return;
} catch(e) {
this._reportInitError('Failed to start verification for guest', e);
return;
}
this._hold.release();
}));
} else if (this._userName) {
this._userVerifier.call_begin_verification_for_user(serviceName,
this._userName,
this._cancellable,

View File

@@ -119,7 +119,13 @@ var LoginManagerSystemd = new Lang.Class({
return;
}
this._proxy.GetSessionRemote(GLib.getenv('XDG_SESSION_ID'), Lang.bind(this,
let sessionId = GLib.getenv('XDG_SESSION_ID');
if (!sessionId) {
log('Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session.');
return;
}
this._proxy.GetSessionRemote(sessionId, Lang.bind(this,
function(result, error) {
if (error) {
logError(error, 'Could not get a proxy for the current session');

View File

@@ -158,7 +158,10 @@ var AppSwitcherPopup = new Lang.Class({
_keyPressHandler: function(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
this._select(this._selectedIndex, this._nextWindow());
if (!this._thumbnailsFocused)
this._select(this._selectedIndex, 0);
else
this._select(this._selectedIndex, this._nextWindow());
} else if (action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
this._select(this._selectedIndex, this._previousWindow());
} else if (action == Meta.KeyBindingAction.SWITCH_APPLICATIONS) {

View File

@@ -20,7 +20,7 @@ var MSECS_IN_DAY = 24 * 60 * 60 * 1000;
var SHOW_WEEKDATE_KEY = 'show-weekdate';
var ELLIPSIS_CHAR = '\u2026';
var MESSAGE_ICON_SIZE = 16;
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
@@ -428,6 +428,13 @@ var Calendar = new Lang.Class({
this.emit('selected-date-changed', new Date(this._selectedDate));
},
updateTimeZone: function() {
// The calendar need to be rebuilt after a time zone update because
// the date might have changed.
this._rebuildCalendar();
this._update();
},
_buildHeader: function() {
let layout = this.actor.layout_manager;
let offsetCols = this._useWeekdate ? 1 : 0;

View File

@@ -255,7 +255,11 @@ var AutorunDispatcher = new Lang.Class({
if (!shouldAutorunMount(mount))
return;
let setting = this._getAutorunSettingForType(contentTypes[0]);
let setting;
if (contentTypes.length > 0)
setting = this._getAutorunSettingForType(contentTypes[0]);
else
setting = AutorunSetting.ASK;
// check at the settings for the first content type
// to see whether we should ask

View File

@@ -50,6 +50,10 @@ var DashItemContainer = new Lang.Class({
this._childScale = 0;
this._childOpacity = 0;
this.animatingOut = false;
this.connect('destroy', () => {
this.label.destroy();
});
},
vfunc_allocate: function(box, flags) {
@@ -177,16 +181,8 @@ var DashItemContainer = new Lang.Class({
});
},
destroy: function() {
if (this.label)
this.label.destroy();
this.parent();
},
animateOutAndDestroy: function() {
if (this.label)
this.label.destroy();
this.label.hide();
if (this.child == null) {
this.destroy();

View File

@@ -22,6 +22,7 @@ const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const Calendar = imports.ui.calendar;
const Weather = imports.misc.weather;
const System = imports.system;
function _isToday(date) {
let now = new Date();
@@ -131,8 +132,11 @@ var WorldClocksSection = new Lang.Class({
let world = GWeather.Location.get_world();
let clocks = settings.get_value('world-clocks').deep_unpack();
for (let i = 0; i < clocks.length; i++) {
if (!clocks[i].location)
continue;
let l = world.deserialize(clocks[i].location);
this._locations.push({ location: l });
if (l)
this._locations.push({ location: l });
}
this._locations.sort(function(a, b) {
@@ -237,12 +241,14 @@ var WeatherSection = new Lang.Class({
let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
: GWeather.FormatOptions.NO_CAPITALIZATION;
let [ok, phenom, qualifier] = info.get_value_conditions();
let [ok, phenomenon, qualifier] = info.get_value_conditions();
if (ok)
return GWeather.conditions_to_string_full(phenom, qualifier, options);
return new GWeather.Conditions({ significant: true,
phenomenon,
qualifier }).to_string_full(options);
let [, sky] = info.get_value_sky();
return GWeather.sky_to_string_full(sky, options);
return GWeather.Sky.to_string_full(sky, options);
},
_sameSummary: function(info1, info2) {
@@ -337,8 +343,10 @@ var MessagesIndicator = new Lang.Class({
Name: 'MessagesIndicator',
_init: function() {
this.actor = new St.Label({ text: '⚫', visible: false, y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor = new St.Icon({ icon_name: 'message-indicator-symbolic',
icon_size: 16,
visible: false, y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this._sources = [];
@@ -543,6 +551,7 @@ var DateMenuButton = new Lang.Class({
this._clock = new GnomeDesktop.WallClock();
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
this._clock.connect('notify::timezone', Lang.bind(this, this._updateTimeZone));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
@@ -562,6 +571,15 @@ var DateMenuButton = new Lang.Class({
this._eventSource = eventSource;
},
_updateTimeZone: function() {
// SpiderMonkey caches the time zone so we must explicitly clear it
// before we can update the calendar, see
// https://bugzilla.gnome.org/show_bug.cgi?id=678507
System.clearDateCaches();
this._calendar.updateTimeZone();
},
_sessionUpdated: function() {
let eventSource;
let showEvents = Main.sessionMode.showCalendarEvents;

View File

@@ -15,6 +15,8 @@ var Dialog = new Lang.Class({
this.parent({ layout_manager: new Clutter.BinLayout() });
this.connect('destroy', Lang.bind(this, this._onDestroy));
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._pressedKey = null;
this._buttonKeys = {};
this._createDialog();
@@ -86,6 +88,22 @@ var Dialog = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
},
_setInitialKeyFocus: function(actor) {
if (this._initialKeyFocus)
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', () => {
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
});
},
get initialKeyFocus() {
return this._initialKeyFocus || this;
},
addContent: function (actor) {
this.contentLayout.add (actor, { expand: true });
},
@@ -116,8 +134,8 @@ var Dialog = new Lang.Class({
if (isDefault)
button.add_style_pseudo_class('default');
if (!this._initialKeyFocusDestroyId)
this._initialKeyFocus = button;
if (this._initialKeyFocus == null || isDefault)
this._setInitialKeyFocus(button);
for (let i in keys)
this._buttonKeys[keys[i]] = buttonInfo;

View File

@@ -38,10 +38,10 @@ var DragDropResult = {
SUCCESS: 1,
CONTINUE: 2
};
var dragMonitors = [];
let eventHandlerActor = null;
let currentDraggable = null;
let dragMonitors = [];
function _getEventHandlerActor() {
if (!eventHandlerActor) {
@@ -94,6 +94,7 @@ var _Draggable = new Lang.Class({
this.disconnectAll();
}));
this._onEventId = null;
this._touchSequence = null;
this._restoreOnSuccess = params.restoreOnSuccess;
this._dragActorMaxSize = params.dragActorMaxSize;
@@ -530,7 +531,7 @@ var _Draggable = new Lang.Class({
// Snap the clone back to its source
[x, y] = this._dragActorSource.get_transformed_position();
let [sourceScaledWidth, sourceScaledHeight] = this._dragActorSource.get_transformed_size();
scale = this._dragActor.width / sourceScaledWidth;
scale = sourceScaledWidth ? this._dragActor.width / sourceScaledWidth : 0;
} else if (this._dragOrigParent) {
// Snap the actor back to its original position within
// its parent, adjusting for the fact that the parent

View File

@@ -129,6 +129,9 @@ var MonitorConstraint = new Lang.Class({
if (!this._primary && this._index < 0)
return;
if (!Main.layoutManager.primaryMonitor)
return;
let index;
if (this._primary)
index = Main.layoutManager.primaryIndex;
@@ -189,6 +192,7 @@ var LayoutManager = new Lang.Class({
this._topActors = [];
this._isPopupWindowVisible = false;
this._startingUp = true;
this._pendingLoadBackground = false;
// We don't want to paint the stage background color because either
// the SystemBackground we create or the MetaBackgroundActor inside
@@ -323,7 +327,9 @@ var LayoutManager = new Lang.Class({
for (let i = 0; i < nMonitors; i++)
this.monitors.push(new Monitor(i, screen.get_monitor_geometry(i)));
if (nMonitors == 1) {
if (nMonitors == 0) {
this.primaryIndex = this.bottomIndex = -1;
} else if (nMonitors == 1) {
this.primaryIndex = this.bottomIndex = 0;
} else {
// If there are monitors below the primary, then we need
@@ -337,8 +343,18 @@ var LayoutManager = new Lang.Class({
}
}
}
this.primaryMonitor = this.monitors[this.primaryIndex];
this.bottomMonitor = this.monitors[this.bottomIndex];
if (this.primaryIndex != -1) {
this.primaryMonitor = this.monitors[this.primaryIndex];
this.bottomMonitor = this.monitors[this.bottomIndex];
if (this._pendingLoadBackground) {
this._loadBackground();
this._pendingLoadBackground = false;
}
} else {
this.primaryMonitor = null;
this.bottomMonitor = null;
}
},
_updateHotCorners: function() {
@@ -458,6 +474,9 @@ var LayoutManager = new Lang.Class({
this.screenShieldGroup.set_position(0, 0);
this.screenShieldGroup.set_size(global.screen_width, global.screen_height);
if (!this.primaryMonitor)
return;
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
this.panelBox.set_size(this.primaryMonitor.width, -1);
@@ -480,6 +499,9 @@ var LayoutManager = new Lang.Class({
this._rightPanelBarrier = null;
}
if (!this.primaryMonitor)
return;
if (this.panelBox.height) {
let primary = this.primaryMonitor;
@@ -549,6 +571,10 @@ var LayoutManager = new Lang.Class({
},
_loadBackground: function() {
if (!this.primaryMonitor) {
this._pendingLoadBackground = true;
return;
}
this._systemBackground = new Background.SystemBackground();
this._systemBackground.actor.hide();

View File

@@ -122,6 +122,7 @@ function start() {
sessionMode.connect('updated', _sessionUpdated);
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
_loadDefaultStylesheet);
Gtk.IconTheme.get_default().add_resource_path('/org/gnome/shell/theme/icons');
_initializeUI();
shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus();

View File

@@ -1205,8 +1205,9 @@ var MessageTray = new Lang.Class({
// _updateState() figures out what (if anything) needs to be done
// at the present time.
_updateState: function() {
this.actor.visible = !this._bannerBlocked && this._banner != null;
if (this._bannerBlocked)
let hasMonitor = Main.layoutManager.primaryMonitor != null;
this.actor.visible = !this._bannerBlocked && hasMonitor && this._banner != null;
if (this._bannerBlocked || !hasMonitor)
return;
// If our state changes caused _updateState to be called,

View File

@@ -84,7 +84,7 @@ var ModalDialog = new Lang.Class({
}
global.focus_manager.add_group(this.dialogLayout);
this._initialKeyFocus = this.dialogLayout;
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._savedKeyFocus = null;
},
@@ -157,7 +157,7 @@ var ModalDialog = new Lang.Class({
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
this._initialKeyFocus = this.dialogLayout;
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
}));
},
@@ -237,7 +237,8 @@ var ModalDialog = new Lang.Class({
this._savedKeyFocus.grab_key_focus();
this._savedKeyFocus = null;
} else {
this._initialKeyFocus.grab_key_focus();
let focus = this._initialKeyFocus || this.dialogLayout.initialKeyFocus;
focus.grab_key_focus();
}
if (!this._shellReactive)

View File

@@ -670,7 +670,7 @@ const FdoApplicationIface = '<node> \
const FdoApplicationProxy = Gio.DBusProxy.makeProxyWrapper(FdoApplicationIface);
function objectPathFromAppId(appId) {
return '/' + appId.replace(/\./g, '/');
return '/' + appId.replace(/\./g, '/').replace(/-/g, '_');
}
function getPlatformData() {
@@ -687,6 +687,8 @@ var GtkNotificationDaemonAppSource = new Lang.Class({
_init: function(appId) {
this._appId = appId;
this._objectPath = objectPathFromAppId(appId);
if (!GLib.Variant.is_object_path(this._objectPath))
throw new InvalidAppError();
this._app = Shell.AppSystem.get_default().lookup_app(appId + '.desktop');
if (!this._app)

View File

@@ -392,6 +392,9 @@ var Overview = new Lang.Class({
// when it is next shown.
this.hide();
if (!Main.layoutManager.primaryMonitor)
return;
let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
this._coverPane.set_position(0, workArea.y);
@@ -414,7 +417,7 @@ var Overview = new Lang.Class({
beginItemDrag: function(source) {
this.emit('item-drag-begin');
this._inDrag = true;
this._inItemDrag = true;
},
cancelledItemDrag: function(source) {
@@ -422,13 +425,15 @@ var Overview = new Lang.Class({
},
endItemDrag: function(source) {
if (!this._inItemDrag)
return;
this.emit('item-drag-end');
this._inDrag = false;
this._inItemDrag = false;
},
beginWindowDrag: function(window) {
this.emit('window-drag-begin', window);
this._inDrag = true;
this._inWindowDrag = true;
},
cancelledWindowDrag: function(window) {
@@ -436,8 +441,10 @@ var Overview = new Lang.Class({
},
endWindowDrag: function(window) {
if (!this._inWindowDrag)
return;
this.emit('window-drag-end', window);
this._inDrag = false;
this._inWindowDrag = false;
},
focusSearch: function() {
@@ -481,7 +488,7 @@ var Overview = new Lang.Class({
shouldToggleByCornerOrButton: function() {
if (this.animationInProgress)
return false;
if (this._inDrag)
if (this._inItemDrag || this._inWindowDrag)
return false;
if (this._activationTime == 0 || Date.now() / 1000 - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT)
return true;

View File

@@ -839,8 +839,14 @@ var Panel = new Lang.Class({
},
_getPreferredWidth: function(actor, forHeight, alloc) {
let primaryMonitor = Main.layoutManager.primaryMonitor;
alloc.min_size = -1;
alloc.natural_size = Main.layoutManager.primaryMonitor.width;
if (primaryMonitor)
alloc.natural_size = primaryMonitor.width;
else
alloc.natural_size = -1;
},
_getPreferredHeight: function(actor, forWidth, alloc) {
@@ -859,15 +865,16 @@ var Panel = new Lang.Class({
let sideWidth, centerWidth;
centerWidth = centerNaturalWidth;
sideWidth = (allocWidth - centerWidth) / 2;
sideWidth = Math.max(0, (allocWidth - centerWidth) / 2);
let childBox = new Clutter.ActorBox();
childBox.y1 = 0;
childBox.y2 = allocHeight;
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth);
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
leftNaturalWidth),
0);
childBox.x2 = allocWidth;
} else {
childBox.x1 = 0;
@@ -889,8 +896,9 @@ var Panel = new Lang.Class({
childBox.x2 = Math.min(Math.floor(sideWidth),
rightNaturalWidth);
} else {
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
rightNaturalWidth);
childBox.x1 = Math.max(allocWidth - Math.min(Math.floor(sideWidth),
rightNaturalWidth),
0);
childBox.x2 = allocWidth;
}
this._rightBox.allocate(childBox, flags);
@@ -1044,6 +1052,9 @@ var Panel = new Lang.Class({
return;
}
if (!Main.layoutManager.primaryMonitor)
return;
/* Get all the windows in the active workspace that are in the primary monitor and visible */
let activeWorkspace = global.screen.get_active_workspace();
let windows = activeWorkspace.list_windows().filter(function(metaWindow) {
@@ -1073,8 +1084,6 @@ var Panel = new Lang.Class({
let indicator = this.statusArea[role];
if (!indicator)
continue;
if (indicator.menu)
indicator.menu.close();
indicator.container.hide();
}
},

View File

@@ -405,7 +405,7 @@ var PopupImageMenuItem = new Lang.Class({
setIcon: function(icon) {
// The 'icon' parameter can be either a Gio.Icon or a string.
if (GObject.type_is_a(icon, Gio.Icon))
if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon))
this._icon.gicon = icon;
else
this._icon.icon_name = icon;
@@ -465,6 +465,7 @@ var PopupMenuBase = new Lang.Class({
_sessionUpdated: function() {
this._setSettingsVisibility(Main.sessionMode.allowSettings);
this.close();
},
addAction: function(title, callback, icon) {

View File

@@ -98,6 +98,13 @@ function loadRemoteSearchProviders(searchSettings, callback) {
return;
}
let autoStart = true;
try {
autoStart = keyfile.get_boolean(group, 'AutoStart');
} catch(e) {
// ignore error
}
let version = '1';
try {
version = keyfile.get_string(group, 'Version');
@@ -106,9 +113,9 @@ function loadRemoteSearchProviders(searchSettings, callback) {
}
if (version >= 2)
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath);
remoteProvider = new RemoteSearchProvider2(appInfo, busName, objectPath, autoStart);
else
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath);
remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath, autoStart);
remoteProvider.defaultEnabled = true;
try {
@@ -184,17 +191,22 @@ function loadRemoteSearchProviders(searchSettings, callback) {
var RemoteSearchProvider = new Lang.Class({
Name: 'RemoteSearchProvider',
_init: function(appInfo, dbusName, dbusPath, proxyInfo) {
_init: function(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
if (!proxyInfo)
proxyInfo = SearchProviderProxyInfo;
let g_flags = Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES;
if (autoStart)
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION;
else
g_flags |= Gio.DBusProxyFlags.DO_NOT_AUTO_START;
this.proxy = new Gio.DBusProxy({ g_bus_type: Gio.BusType.SESSION,
g_name: dbusName,
g_object_path: dbusPath,
g_interface_info: proxyInfo,
g_interface_name: proxyInfo.name,
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION |
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
g_flags });
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
this.appInfo = appInfo;
@@ -307,8 +319,8 @@ var RemoteSearchProvider2 = new Lang.Class({
Name: 'RemoteSearchProvider2',
Extends: RemoteSearchProvider,
_init: function(appInfo, dbusName, dbusPath) {
this.parent(appInfo, dbusName, dbusPath, SearchProvider2ProxyInfo);
_init: function(appInfo, dbusName, dbusPath, autoStart) {
this.parent(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
this.canLaunchSearch = true;
},

View File

@@ -529,6 +529,7 @@ var InputSourceManager = new Lang.Class({
let sources = this._settings.inputSources;
let nSources = sources.length;
this._currentSource = null;
this._inputSources = {};
this._ibusSources = {};
@@ -827,6 +828,9 @@ var InputSourceIndicator = new Lang.Class({
for (let i in this._indicatorLabels)
this._indicatorLabels[i].destroy();
this._menuItems = {};
this._indicatorLabels = {};
let menuIndex = 0;
for (let i in this._inputSourceManager.inputSources) {
let is = this._inputSourceManager.inputSources[i];

View File

@@ -951,7 +951,7 @@ var NMWirelessDialog = new Lang.Class({
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
// 802.1x-enabled APs require further configuration, so they're
// handled in gnome-control-center
Util.spawn(['gnome-control-center', 'network', 'connect-8021x-wifi',
Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
this._device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = new NetworkManager.Connection();

View File

@@ -516,7 +516,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
let [dx, dy] = event.get_gesture_motion_delta(event);
let [dx, dy] = event.get_gesture_motion_delta();
this._dx += dx;
this._dy += dy;
@@ -985,7 +985,8 @@ var WindowManager = new Lang.Class({
gesture.connect('activated', Lang.bind(this, this._switchApp));
global.stage.add_action(gesture);
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, Shell.ActionMode.ALL);
let mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode);
gesture.connect('activated', Lang.bind(this, function() {
Main.keyboard.show(Main.layoutManager.bottomIndex);
}));

View File

@@ -132,6 +132,7 @@ var WindowClone = new Lang.Class({
this.actor._delegate = this;
this.slotId = 0;
this._slot = [0, 0, 0, 0];
this._dragSlot = [0, 0, 0, 0];
this._stackAbove = null;
@@ -661,6 +662,7 @@ var WindowOverlay = new Lang.Class({
if (this._hidden)
return;
this._windowClone.actor.grab_key_focus();
this._animateVisible();
this.emit('show-close-button');
},
@@ -1068,6 +1070,22 @@ function rectEqual(one, two) {
one.height == two.height);
}
const WorkspaceActor = new Lang.Class({
Name: 'WorkspaceActor',
Extends: St.Widget,
vfunc_get_focus_chain: function() {
return this.get_children().filter(c => c.visible).sort((a,b) => {
let cloneA = (a._delegate && a._delegate instanceof WindowClone) ? a._delegate: null;
let cloneB = (b._delegate && b._delegate instanceof WindowClone) ? b._delegate: null;
if (cloneA && cloneB)
return cloneA.slotId - cloneB.slotId;
return 0;
});
}
});
/**
* @metaWorkspace: a #Meta.Workspace, or null
*/
@@ -1090,6 +1108,7 @@ var Workspace = new Lang.Class({
// do some simple aspect ratio like math to fit the layout calculated
// for the full geometry into this area.
this._actualGeometry = null;
this._actualGeometryLater = 0;
this._currentLayout = null;
@@ -1099,7 +1118,7 @@ var Workspace = new Lang.Class({
// Without this the drop area will be overlapped.
this._windowOverlaysGroup.set_size(0, 0);
this.actor = new St.Widget({ style_class: 'window-picker' });
this.actor = new WorkspaceActor({ style_class: 'window-picker' });
if (monitorIndex != Main.layoutManager.primaryIndex)
this.actor.add_style_class_name('external-monitor');
this.actor.set_size(0, 0);

View File

@@ -31,6 +31,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
this._itemSpacing = 0;
this._childHeight = 0;
this._childWidth = 0;
this._timeoutId = 0;
this._list.connect('style-changed', Lang.bind(this, function() {
this._itemSpacing = this._list.get_theme_node().get_length('spacing');
}));

View File

@@ -937,7 +937,8 @@ var ThumbnailsBox = new Lang.Class({
},
addThumbnails: function(start, count) {
this._ensurePorthole();
if (!this._ensurePorthole())
return;
for (let k = start; k < start + count; k++) {
let metaWorkspace = global.screen.get_workspace_by_index(k);
let thumbnail = new WorkspaceThumbnail(metaWorkspace);
@@ -1125,7 +1126,12 @@ var ThumbnailsBox = new Lang.Class({
// the size request to our children because we know how big they are and know
// that the actors aren't depending on the virtual functions being called.
this._ensurePorthole();
if (!this._ensurePorthole()) {
alloc.min_size = -1;
alloc.natural_size = -1;
return;
}
let themeNode = this.actor.get_theme_node();
let spacing = themeNode.get_length('spacing');
@@ -1137,7 +1143,11 @@ var ThumbnailsBox = new Lang.Class({
},
_getPreferredWidth: function(actor, forHeight, alloc) {
this._ensurePorthole();
if (!this._ensurePorthole()) {
alloc.min_size = -1;
alloc.natural_size = -1;
return;
}
let themeNode = this.actor.get_theme_node();
@@ -1158,8 +1168,13 @@ var ThumbnailsBox = new Lang.Class({
// The "porthole" is the portion of the screen that we show in the
// workspaces
_ensurePorthole: function() {
if (!Main.layoutManager.primaryMonitor)
return false;
if (!this._porthole)
this._porthole = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
return true;
},
_allocate: function(actor, box, flags) {

View File

@@ -1,6 +1,6 @@
project('gnome-shell', 'c',
version: '3.26.0',
meson_version: '>= 0.41.0',
version: '3.26.2',
meson_version: '>= 0.42.0',
license: 'GPLv2+'
)

1285
po/ar.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1319,7 +1319,7 @@ msgstr "Přehled"
#. characters.
#: js/ui/overview.js:240
msgid "Type to search…"
msgstr "vyhledávejte psaním…"
msgstr "Vyhledávejte psaním…"
#: js/ui/padOsd.js:103
msgid "New shortcut…"

626
po/el.po

File diff suppressed because it is too large Load Diff

1089
po/fa.po

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: video-subtitles master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-23 17:01+0200\n"
"POT-Creation-Date: 2017-10-04 18:03+0000\n"
"PO-Revision-Date: 2017-10-11 08:34+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
@@ -659,12 +659,12 @@ msgstr "Zonte tai preferîts"
msgid "Show Details"
msgstr "Mostre Detais"
#: js/ui/appFavorites.js:140
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s al è stât zontât tai tiei preferîts."
#: js/ui/appFavorites.js:174
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s al è stât gjavât dai tiei preferîts."
@@ -753,51 +753,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: js/ui/calendar.js:442
#: js/ui/calendar.js:449
msgid "Previous month"
msgstr "Mês indaûr"
#: js/ui/calendar.js:452
#: js/ui/calendar.js:459
msgid "Next month"
msgstr "Prossim mês"
#: js/ui/calendar.js:605
#: js/ui/calendar.js:612
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:660
#: js/ui/calendar.js:667
msgid "Week %V"
msgstr "Setemane %V"
#. 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:729
#: js/ui/calendar.js:736
msgctxt "event list time"
msgid "All Day"
msgstr "Dut il dì"
#: js/ui/calendar.js:862
#: js/ui/calendar.js:869
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d di %B"
#: js/ui/calendar.js:866
#: js/ui/calendar.js:873
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d di %B dal %Y"
#: js/ui/calendar.js:1086
#: js/ui/calendar.js:1093
msgid "No Notifications"
msgstr "Nissune notifiche"
#: js/ui/calendar.js:1089
#: js/ui/calendar.js:1096
msgid "No Events"
msgstr "Nissun event"
#: js/ui/calendar.js:1117
#: js/ui/calendar.js:1124
msgid "Clear All"
msgstr "Nete dut"
@@ -831,7 +831,7 @@ msgstr "Dispositîf esterni tacât"
msgid "External drive disconnected"
msgstr "Dispositîf esterni distacât"
#: js/ui/components/autorunManager.js:354
#: js/ui/components/autorunManager.js:358
#, javascript-format
msgid "Open with %s"
msgstr "Vierç cun %s"
@@ -968,7 +968,7 @@ msgstr "Dash"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:75
#: js/ui/dateMenu.js:76
msgid "%B %e %Y"
msgstr "%e di %B dal %Y"
@@ -976,19 +976,19 @@ msgstr "%e di %B dal %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:82
#: js/ui/dateMenu.js:83
msgid "%A %B %e %Y"
msgstr "%A %e di %B dal %Y"
#: js/ui/dateMenu.js:144
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "Zonte orlois mondiâi..."
#: js/ui/dateMenu.js:145
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "Orlois mondiâi"
#: js/ui/dateMenu.js:224
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "Timp"
@@ -996,7 +996,7 @@ msgstr "Timp"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:286
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "%s dut il dì."
@@ -1005,7 +1005,7 @@ msgstr "%s dut il dì."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:292
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, plui tart %s."
@@ -1014,30 +1014,30 @@ msgstr "%s, plui tart %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:298
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, chi di un pôc %s, e plui tart %s."
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "Selezione une posizion..."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "Daûr a cjariâ..."
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "Si sint %s."
#: js/ui/dateMenu.js:321
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "Va in rêt pes informazions sul timp"
#: js/ui/dateMenu.js:323
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "Lis informazions sul timp al moment no son disponibilis"
@@ -1276,7 +1276,7 @@ msgstr "Viôt sorzint"
msgid "Web Page"
msgstr "Pagjine Web"
#: js/ui/messageTray.js:1493
#: js/ui/messageTray.js:1494
msgid "System Information"
msgstr "Informazion di sisteme"
@@ -1449,12 +1449,11 @@ msgstr "Nissun risultât."
# o ancjemò %d
#: js/ui/search.js:777
#, fuzzy, javascript-format
#| msgid "%d more"
#, javascript-format
msgid "%d more"
msgid_plural "%d more"
msgstr[0] "Ancjemò %d"
msgstr[1] "Ancjemò %d"
msgstr[0] "%d altri"
msgstr[1] "%d altris"
#: js/ui/shellEntry.js:25
msgid "Copy"

1024
po/is.po

File diff suppressed because it is too large Load Diff

3118
po/ml.po

File diff suppressed because it is too large Load Diff

575
po/nb.po

File diff suppressed because it is too large Load Diff

View File

@@ -15,8 +15,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-s"
"hell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-31 02:16+0000\n"
"PO-Revision-Date: 2017-09-01 10:25+0100\n"
"POT-Creation-Date: 2017-10-23 10:13+0000\n"
"PO-Revision-Date: 2017-10-25 10:55+0100\n"
"Last-Translator: Hannie Dumoleyn <hannie@ubuntu-nl.org>\n"
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
"Language: nl\n"
@@ -71,16 +71,16 @@ msgstr "Vensterbeheer en toepassingen starten"
#: data/org.gnome.shell.gschema.xml.in:6
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en"
" testers via Alt-F2"
"Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en "
"testers via Alt-F2"
#: data/org.gnome.shell.gschema.xml.in:9
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Geeft toegang tot interne debugging- en observatieprogramma's met behulp van"
" het Alt-F2-dialoogvenster."
"Geeft toegang tot interne debugging- en observatieprogramma's met behulp van "
"het Alt-F2-dialoogvenster."
#: data/org.gnome.shell.gschema.xml.in:16
msgid "UUIDs of extensions to enable"
@@ -107,8 +107,8 @@ msgid ""
"Disable all extensions the user has enabled without affecting the “enabled-"
"extension” setting."
msgstr ""
"Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de"
" instelling enabled-extension te wijzigen."
"Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de "
"instelling enabled-extension te wijzigen."
#: data/org.gnome.shell.gschema.xml.in:34
msgid "Disables the validation of extension version compatibility"
@@ -122,8 +122,8 @@ msgid ""
msgstr ""
"Gnome Shell zal alleen uitbreidingen laden die aangeven de huidige versie te "
"ondersteunen. Door deze optie in te schakelen wordt deze controle "
"overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die ze"
" zouden moeten ondersteunen."
"overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die "
"ze zouden moeten ondersteunen."
#: data/org.gnome.shell.gschema.xml.in:43
msgid "List of desktop file IDs for favorite applications"
@@ -134,8 +134,8 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"De toepassingen die aan deze identifiers voldoen worden in het"
" favorietengebied weergegeven."
"De toepassingen die aan deze identifiers voldoen worden in het "
"favorietengebied weergegeven."
#: data/org.gnome.shell.gschema.xml.in:51
msgid "App Picker View"
@@ -171,8 +171,8 @@ msgstr ""
msgid ""
"Whether to remember password for mounting encrypted or remote filesystems"
msgstr ""
"Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op"
" afstand onthouden moeten worden"
"Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op "
"afstand onthouden moeten worden"
#: data/org.gnome.shell.gschema.xml.in:76
msgid ""
@@ -310,8 +310,8 @@ msgstr "Deze waarde overschrijft de waarde in org.gnome.mutter in Gnome Shell."
#: data/org.gnome.shell.gschema.xml.in:206
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Vensters langs de randen positioneren bij verslepen naar de rand van het"
" scherm"
"Vensters langs de randen positioneren bij verslepen naar de rand van het "
"scherm"
#: data/org.gnome.shell.gschema.xml.in:214
msgid "Workspaces are managed dynamically"
@@ -755,51 +755,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "Z"
#: js/ui/calendar.js:442
#: js/ui/calendar.js:449
msgid "Previous month"
msgstr "Vorige maand"
#: js/ui/calendar.js:452
#: js/ui/calendar.js:459
msgid "Next month"
msgstr "Volgende maand"
#: js/ui/calendar.js:605
#: js/ui/calendar.js:612
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:660
#: js/ui/calendar.js:667
msgid "Week %V"
msgstr "Week %V"
#. 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:729
#: js/ui/calendar.js:736
msgctxt "event list time"
msgid "All Day"
msgstr "Gehele dag"
#: js/ui/calendar.js:862
#: js/ui/calendar.js:869
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%a %d %B"
#: js/ui/calendar.js:866
#: js/ui/calendar.js:873
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%a %d %B %Y"
#: js/ui/calendar.js:1086
#: js/ui/calendar.js:1093
msgid "No Notifications"
msgstr "Geen notificaties"
#: js/ui/calendar.js:1089
#: js/ui/calendar.js:1096
msgid "No Events"
msgstr "Geen gebeurtenissen"
#: js/ui/calendar.js:1117
#: js/ui/calendar.js:1124
msgid "Clear All"
msgstr "Alles wissen"
@@ -814,8 +814,8 @@ msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"U kan even wachten tot de toepassing weer reageert, of ze dwingen"
" onmiddellijk af te sluiten."
"U kan even wachten tot de toepassing weer reageert, of ze dwingen "
"onmiddellijk af te sluiten."
#: js/ui/closeDialog.js:61
msgid "Force Quit"
@@ -833,7 +833,7 @@ msgstr "Verbinding met externe schijf gemaakt"
msgid "External drive disconnected"
msgstr "Verbinding met externe schijf verbroken"
#: js/ui/components/autorunManager.js:354
#: js/ui/components/autorunManager.js:358
#, javascript-format
msgid "Open with %s"
msgstr "Openen met %s"
@@ -972,7 +972,7 @@ msgstr "Zijbalk"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:75
#: js/ui/dateMenu.js:76
msgid "%B %e %Y"
msgstr "%e %B %Y"
@@ -980,19 +980,19 @@ msgstr "%e %B %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:82
#: js/ui/dateMenu.js:83
msgid "%A %B %e %Y"
msgstr "%A %e %B %Y"
#: js/ui/dateMenu.js:144
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "Wereldklokken toevoegen…"
#: js/ui/dateMenu.js:145
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "Wereldklokken"
#: js/ui/dateMenu.js:224
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "Weer"
@@ -1000,7 +1000,7 @@ msgstr "Weer"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:286
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "De hele dag %s."
@@ -1009,7 +1009,7 @@ msgstr "De hele dag %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:292
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, daarna %s."
@@ -1018,30 +1018,30 @@ msgstr "%s, daarna %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:298
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, daarna %s, gevolgd door %s."
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "Selecteer een locatie…"
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "Laden…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "Voelt aan als %s."
#: js/ui/dateMenu.js:321
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "Ga online voor informatie over het weer"
#: js/ui/dateMenu.js:323
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "Informatie over het weer is momenteel niet beschikbaar"
@@ -1278,7 +1278,7 @@ msgstr "Broncode weergeven"
msgid "Web Page"
msgstr "Webpagina"
#: js/ui/messageTray.js:1493
#: js/ui/messageTray.js:1494
msgid "System Information"
msgstr "Systeeminformatie"
@@ -1369,7 +1369,7 @@ msgstr "Systeem"
#: js/ui/panel.js:812
msgid "Top Bar"
msgstr "Bovenbalk"
msgstr "Menubalk"
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
@@ -2042,19 +2042,19 @@ msgstr "Evolution-agenda"
msgid "evolution"
msgstr "evolution"
#: src/main.c:380
#: src/main.c:429
msgid "Print version"
msgstr "Versie weergeven"
#: src/main.c:386
#: src/main.c:435
msgid "Mode used by GDM for login screen"
msgstr "De modus die door GDM voor het aanmeldscherm gebruikt wordt"
#: src/main.c:392
#: src/main.c:441
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Specifieke modus gebruiken, bijv. “gdm” voor het aanmeldscherm"
#: src/main.c:398
#: src/main.c:447
msgid "List possible modes"
msgstr "Mogelijke modi tonen"

572
po/ru.po

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-28 19:35+0200\n"
"PO-Revision-Date: 2017-08-28 19:38+0200\n"
"PO-Revision-Date: 2017-10-14 20:09+0200\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl\n"
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.0.1\n"
"X-Generator: Poedit 2.0.4\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -363,7 +363,7 @@ msgstr "Izbor seje"
#. manually entering the username.
#: js/gdm/loginDialog.js:458
msgid "Not listed?"
msgstr "Ali je ni na seznamu?"
msgstr "Ali uporabniškega imena ni na seznamu?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
@@ -665,12 +665,12 @@ msgstr "Dodaj med priljubljene"
msgid "Show Details"
msgstr "Pokaži besedilo"
#: js/ui/appFavorites.js:140
#: js/ui/appFavorites.js:141
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "Program »%s« je dodan med priljubljeno."
#: js/ui/appFavorites.js:174
#: js/ui/appFavorites.js:175
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "Program »%s« je odstranjen iz priljubljenih."
@@ -759,51 +759,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: js/ui/calendar.js:442
#: js/ui/calendar.js:449
msgid "Previous month"
msgstr "Predhodni mesec"
#: js/ui/calendar.js:452
#: js/ui/calendar.js:459
msgid "Next month"
msgstr "Naslednji mesec"
#: js/ui/calendar.js:605
#: js/ui/calendar.js:612
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:660
#: js/ui/calendar.js:667
msgid "Week %V"
msgstr "Teden %V"
#. 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:729
#: js/ui/calendar.js:736
msgctxt "event list time"
msgid "All Day"
msgstr "Celodnevno"
#: js/ui/calendar.js:862
#: js/ui/calendar.js:869
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d. %m."
#: js/ui/calendar.js:866
#: js/ui/calendar.js:873
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y"
#: js/ui/calendar.js:1086
#: js/ui/calendar.js:1093
msgid "No Notifications"
msgstr "Ni obvestil"
#: js/ui/calendar.js:1089
#: js/ui/calendar.js:1096
msgid "No Events"
msgstr "Ni dogodkov"
#: js/ui/calendar.js:1117
#: js/ui/calendar.js:1124
msgid "Clear All"
msgstr "Počisti vse"
@@ -837,7 +837,7 @@ msgstr "Zunanji pogon je priklopljen"
msgid "External drive disconnected"
msgstr "Zunanji pogon je odklopljen"
#: js/ui/components/autorunManager.js:354
#: js/ui/components/autorunManager.js:358
#, javascript-format
msgid "Open with %s"
msgstr "Odpri s programom %s"
@@ -914,7 +914,7 @@ msgstr "Za napravo mobilnega širokopasovnega dostopa je zahtevana koda PIN."
#: js/ui/components/networkAgent.js:313
msgid "PIN: "
msgstr "PIN: "
msgstr "Koda PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
@@ -974,7 +974,7 @@ msgstr "Pregledna plošča"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:75
#: js/ui/dateMenu.js:76
msgid "%B %e %Y"
msgstr "%B %e %Y"
@@ -982,19 +982,19 @@ msgstr "%B %e %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:82
#: js/ui/dateMenu.js:83
msgid "%A %B %e %Y"
msgstr "%A %B %e %Y"
#: js/ui/dateMenu.js:144
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "Dodaj svetovni čas ..."
#: js/ui/dateMenu.js:145
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "Svetovni časi"
#: js/ui/dateMenu.js:224
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "Vreme"
@@ -1002,7 +1002,7 @@ msgstr "Vreme"
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:286
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "%s ves dan."
@@ -1011,7 +1011,7 @@ msgstr "%s ves dan."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:292
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, sledi %s."
@@ -1020,30 +1020,30 @@ msgstr "%s, sledi %s."
#. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions.
#: js/ui/dateMenu.js:298
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, sledi %s, kasneje tudi %s."
#: js/ui/dateMenu.js:309
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "Izbor mesta ..."
#: js/ui/dateMenu.js:312
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "Poteka nalaganje ..."
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "Občuti se kot %s."
#: js/ui/dateMenu.js:321
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "Preglej splet za podrobnosti o vremenu."
#: js/ui/dateMenu.js:323
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "Podatki o vremenu trenutno niso na voljo."
@@ -1293,7 +1293,7 @@ msgstr "Poglej vir"
msgid "Web Page"
msgstr "Spletna stran"
#: js/ui/messageTray.js:1493
#: js/ui/messageTray.js:1494
msgid "System Information"
msgstr "Podrobnosti sistema"
@@ -1951,7 +1951,7 @@ msgstr "Le vgrajeno"
#: js/ui/unlockDialog.js:67
msgid "Log in as another user"
msgstr "Prijava kot drug uporabnik"
msgstr "Prijavi z drugim uporabniškim imenom"
#: js/ui/unlockDialog.js:84
msgid "Unlock Window"

View File

@@ -12,16 +12,16 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-09-08 09:41+0000\n"
"PO-Revision-Date: 2017-09-09 13:07+0200\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
"POT-Creation-Date: 2017-09-09 11:09+0000\n"
"PO-Revision-Date: 2017-10-02 20:48+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.3\n"
"X-Generator: Poedit 2.0.4\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -1983,7 +1983,7 @@ msgstr "Ändra storlek"
#: js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr "Flytta titelrad på skärm"
msgstr "Flytta namnlist på skärm"
#: js/ui/windowMenu.js:70
msgid "Always on Top"

View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell 3.3.90\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-27 13:31+0800\n"
"POT-Creation-Date: 2017-08-27 05:39+0000\n"
"PO-Revision-Date: 2017-10-01 22:25+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n"
@@ -413,7 +413,6 @@ msgstr "暫停"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "suspend;sleep;暫停;睡眠"
@@ -425,7 +424,6 @@ msgstr "切換使用者"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
#| msgid "Switch User"
msgid "switch user"
msgstr "switch user;切換使用者"
@@ -524,7 +522,7 @@ msgstr "%A %H%M"
#: js/misc/util.js:246
#, no-c-format
msgid "%B %d, %H%M"
msgstr "%b%d日 %H%M"
msgstr "%b%d日 %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
@@ -532,7 +530,7 @@ msgstr "%b月%d日 %H%M"
#: js/misc/util.js:252
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%Y年%b%d日 %H:%M"
msgstr "%Y年%b%d日 %H:%M"
#. Translators: Time in 12h format
#: js/misc/util.js:257
@@ -559,7 +557,7 @@ msgstr "%A%p %l%M"
#: js/misc/util.js:275
#, no-c-format
msgid "%B %d, %l%M %p"
msgstr "%b%d日%p %l%M"
msgstr "%b%d日%p %l%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
@@ -567,7 +565,7 @@ msgstr "%b月%d日%p %l%M"
#: js/misc/util.js:281
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%Y年%b%d日%p %l%M"
msgstr "%Y年%b%d日%p %l%M"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:66
@@ -747,12 +745,12 @@ msgstr "整天"
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%b%d日%A"
msgstr "%b%d日%A"
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%Y年%b%d日%A"
msgstr "%Y年%b%d日%A"
#: js/ui/calendar.js:1086
msgid "No Notifications"
@@ -931,7 +929,7 @@ msgstr "Dash"
#.
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%Y年%b%e日"
msgstr "%Y年%b%e日"
#. Translators: This is the accessible name of the date button shown
#. * below the time in the shell; it should combine the weekday and the
@@ -939,7 +937,7 @@ msgstr "%Y年%b月%e日"
#.
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%Y年%b%e日%A"
msgstr "%Y年%b%e日%A"
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
@@ -1347,7 +1345,7 @@ msgstr "重新啟動…"
#. long format
#: js/ui/screenShield.js:88
msgid "%A, %B %d"
msgstr "%b%d日%A"
msgstr "%b%d日%A"
#: js/ui/screenShield.js:147
#, javascript-format

View File

@@ -38,14 +38,17 @@ extern GType gnome_shell_plugin_get_type (void);
static gboolean is_gdm_mode = FALSE;
static char *session_mode = NULL;
static int caught_signal = 0;
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
enum {
SHELL_DEBUG_BACKTRACE_WARNINGS = 1,
SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2,
};
static int _shell_debug;
static gboolean _tracked_signals[NSIG] = { 0 };
static void
shell_dbus_acquire_name (GDBusProxy *bus,
@@ -290,7 +293,8 @@ static void
shell_init_debug (const char *debug_env)
{
static const GDebugKey keys[] = {
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
};
_shell_debug = g_parse_debug_string (debug_env, keys,
@@ -328,6 +332,59 @@ shut_up (const char *domain,
{
}
static void
dump_gjs_stack_alarm_sigaction (int signo)
{
g_log_set_default_handler (g_log_default_handler, NULL);
g_warning ("Failed to dump Javascript stack, got stuck");
g_log_set_default_handler (default_log_handler, NULL);
raise (caught_signal);
}
static void
dump_gjs_stack_on_signal_handler (int signo)
{
struct sigaction sa = { 0 };
gsize i;
/* Ignore all the signals starting this point, a part the one we'll raise
* (which is implicitly ignored here through SA_RESETHAND), this is needed
* not to get this handler being called by other signals that we were
* tracking and that might be emitted by code called starting from now.
*/
for (i = 0; i < G_N_ELEMENTS (_tracked_signals); ++i)
{
if (_tracked_signals[i] && i != signo)
signal (i, SIG_IGN);
}
/* Waiting at least 5 seconds for the dumpstack, if it fails, we raise the error */
caught_signal = signo;
sa.sa_handler = dump_gjs_stack_alarm_sigaction;
sigemptyset (&sa.sa_mask);
sigaction (SIGALRM, &sa, NULL);
alarm (5);
gjs_dumpstack ();
alarm (0);
raise (signo);
}
static void
dump_gjs_stack_on_signal (int signo)
{
struct sigaction sa = { 0 };
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
sa.sa_handler = dump_gjs_stack_on_signal_handler;
sigemptyset (&sa.sa_mask);
sigaction (signo, &sa, NULL);
_tracked_signals[signo] = TRUE;
}
static gboolean
list_modes (const char *option_name,
const char *value,
@@ -459,6 +516,17 @@ main (int argc, char **argv)
shell_prefs_init ();
dump_gjs_stack_on_signal (SIGABRT);
dump_gjs_stack_on_signal (SIGFPE);
dump_gjs_stack_on_signal (SIGIOT);
dump_gjs_stack_on_signal (SIGTRAP);
if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
{
dump_gjs_stack_on_signal (SIGBUS);
dump_gjs_stack_on_signal (SIGSEGV);
}
ecode = meta_run ();
g_debug ("Doing final cleanup");

View File

@@ -37,7 +37,6 @@ gnome_shell_cflags = [
'-DGNOME_SHELL_PKGLIBDIR="@0@"'.format(pkglibdir)
]
rpath_link_args = ['-Wl,-rpath', mutter_typelibdir]
install_rpath = ':'.join([mutter_typelibdir, pkglibdir])
gnome_shell_deps = [
@@ -81,7 +80,7 @@ libshell_menu = library('gnome-shell-menu',
sources: libshell_menu_gir_sources + libshell_menu_no_gir_sources,
dependencies: [gio_dep, clutter_dep],
include_directories: conf_inc,
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: mutter_typelibdir,
install_dir: pkglibdir,
install: true
@@ -183,10 +182,8 @@ if enable_recorder
endif
libshell_enums = gnome.mkenums('shell-enum-types',
sources: libshell_public_headers,
c_template: 'shell-enum-types.c.in',
h_template: 'shell-enum-types.h.in'
libshell_enums = gnome.mkenums_simple('shell-enum-types',
sources: libshell_public_headers
)
libshell_gir_sources = [
@@ -214,7 +211,7 @@ libshell = library('gnome-shell',
include_directories: [conf_inc, st_inc, include_directories('tray')],
c_args: gnome_shell_cflags,
link_with: [libtray],
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: install_rpath,
install_dir: pkglibdir,
install: true
@@ -256,7 +253,7 @@ executable('gnome-shell', 'main.c',
],
dependencies: gnome_shell_deps + [libshell_dep, libst_dep, mutter_dep],
include_directories: [conf_inc, st_inc, include_directories('tray')],
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: install_rpath,
install: true
)
@@ -266,7 +263,7 @@ executable('gnome-shell-extension-prefs',
c_args: gnome_shell_cflags,
dependencies: gnome_shell_deps,
include_directories: [conf_inc],
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: install_rpath,
install: true
)
@@ -278,7 +275,7 @@ if have_networkmanager
c_args: gnome_shell_cflags,
dependencies: gnome_shell_deps,
include_directories: [conf_inc],
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: install_rpath,
install_dir: libexecdir,
install: true
@@ -288,7 +285,7 @@ endif
executable('gnome-shell-perf-helper', 'shell-perf-helper.c',
dependencies: [gtk_dep, gio_dep, m_dep],
include_directories: [conf_inc],
link_args: rpath_link_args,
build_rpath: mutter_typelibdir,
install_rpath: install_rpath,
install_dir: libexecdir,
install: true
@@ -298,5 +295,5 @@ executable('run-js-test', 'run-js-test.c',
dependencies: [mutter_dep, gio_dep, gjs_dep],
include_directories: [conf_inc],
link_with: libshell,
link_args: rpath_link_args
build_rpath: mutter_typelibdir,
)

View File

@@ -1067,16 +1067,10 @@ _shell_app_remove_window (ShellApp *app,
if (!meta_window_is_skip_taskbar (window))
app->running_state->interesting_windows--;
shell_app_sync_running_state (app);
if (app->running_state->windows == NULL)
{
g_clear_pointer (&app->running_state, unref_running_state);
shell_app_state_transition (app, SHELL_APP_STATE_STOPPED);
}
else
{
shell_app_sync_running_state (app);
}
g_clear_pointer (&app->running_state, unref_running_state);
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
}
@@ -1196,6 +1190,14 @@ app_child_setup (gpointer user_data)
}
#endif
static void
wait_pid (GDesktopAppInfo *appinfo,
GPid pid,
gpointer user_data)
{
g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL);
}
/**
* shell_app_launch:
* @timestamp: Event timestamp, or 0 for current event timestamp
@@ -1234,13 +1236,13 @@ shell_app_launch (ShellApp *app,
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
context,
G_SPAWN_SEARCH_PATH,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
#ifdef HAVE_SYSTEMD
app_child_setup, (gpointer)shell_app_get_id (app),
#else
NULL, NULL,
#endif
NULL, NULL,
wait_pid, NULL,
error);
g_object_unref (context);

View File

@@ -1,30 +0,0 @@
/*** BEGIN file-header ***/
#include "shell-enum-types.h"
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@filename@" */
#include "@filename@"
/*** END file-production ***/
/*** BEGIN value-header ***/
GType
@enum_name@_get_type(void) {
static GType enum_type_id = 0;
if (G_UNLIKELY (!enum_type_id))
{
static const G@Type@Value values[] = {
/*** END value-header ***/
/*** BEGIN value-production ***/
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
enum_type_id = g_@type@_register_static("@EnumName@", values);
}
return enum_type_id;
}
/*** END value-tail ***/

View File

@@ -1,25 +0,0 @@
/*** BEGIN file-header ***/
#ifndef __SHELL_ENUM_TYPES_H__
#define __SHELL_ENUM_TYPES_H__
#include <glib-object.h>
G_BEGIN_DECLS
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@filename@" */
/*** END file-production ***/
/*** BEGIN file-tail ***/
G_END_DECLS
#endif /* !__SHELL_ENUM_TYPES_H__ */
/*** END file-tail ***/
/*** BEGIN value-header ***/
GType @enum_name@_get_type (void) G_GNUC_CONST;
#define SHELL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
/*** END value-header ***/

View File

@@ -124,13 +124,14 @@ shell_gtk_embed_on_window_mapped (GtkWidget *object,
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
MetaDisplay *display = shell_global_get_display (shell_global_get ());
/* Listen for new windows so we can detect when Mutter has
created a MutterWindow for this window */
priv->window_created_handler =
g_signal_connect (display,
"window-created",
G_CALLBACK (shell_gtk_embed_window_created_cb),
embed);
if (priv->window_created_handler == 0 && priv->window_actor == NULL)
/* Listen for new windows so we can detect when Mutter has
created a MutterWindow for this window */
priv->window_created_handler =
g_signal_connect (display,
"window-created",
G_CALLBACK (shell_gtk_embed_window_created_cb),
embed);
}
static void

View File

@@ -82,10 +82,12 @@ st_sources = [
'st-widget.c'
]
st_enums = gnome.mkenums('st-enum-types',
st_enums = gnome.mkenums_simple('st-enum-types',
sources: st_headers,
c_template: 'st-enum-types.c.in',
h_template: 'st-enum-types.h.in'
header_prefix: '''
#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION)
#error "Only <st/st.h> can be included directly.h"
#endif'''
)
st_gir_sources = st_sources + st_private_headers + st_headers + st_enums

View File

@@ -1106,7 +1106,7 @@ st_entry_get_text (StEntry *entry)
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
priv = st_entry_get_instance_private (entry);
if (clutter_actor_is_visible (priv->hint_actor))
if (priv->hint_actor != NULL && clutter_actor_is_visible (priv->hint_actor))
return "";
else
return clutter_text_get_text (CLUTTER_TEXT (priv->entry));

View File

@@ -1,33 +0,0 @@
/*** BEGIN file-header ***/
#ifndef ST_COMPILATION
#define ST_COMPILATION
#endif
#include "st-enum-types.h"
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@filename@" */
#include "@filename@"
/*** END file-production ***/
/*** BEGIN value-header ***/
GType
@enum_name@_get_type(void) {
static GType enum_type_id = 0;
if (G_UNLIKELY (!enum_type_id))
{
static const G@Type@Value values[] = {
/*** END value-header ***/
/*** BEGIN value-production ***/
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
enum_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
}
return enum_type_id;
}
/*** END value-tail ***/

View File

@@ -1,29 +0,0 @@
/*** BEGIN file-header ***/
#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION)
#error "Only <st/st.h> can be included directly.h"
#endif
#ifndef __ST_ENUM_TYPES_H__
#define __ST_ENUM_TYPES_H__
#include <glib-object.h>
G_BEGIN_DECLS
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@filename@" */
/*** END file-production ***/
/*** BEGIN file-tail ***/
G_END_DECLS
#endif /* !__ST_ENUM_TYPES_H__ */
/*** END file-tail ***/
/*** BEGIN value-header ***/
GType @enum_name@_get_type (void) G_GNUC_CONST;
#define ST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
/*** END value-header ***/

View File

@@ -275,14 +275,7 @@ st_icon_update_shadow_pipeline (StIcon *icon)
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
if (priv->shadow_spec)
{
gint width, height;
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
&width, &height);
priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
}
priv->shadow_pipeline = _st_create_shadow_pipeline_from_actor (priv->shadow_spec, priv->icon_texture);
}
static void

View File

@@ -414,31 +414,34 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
ClutterActor *actor)
{
CoglPipeline *shadow_pipeline = NULL;
ClutterActorBox box;
float width, height;
clutter_actor_get_allocation_box (actor, &box);
clutter_actor_box_get_size (&box, &width, &height);
if (width == 0 || height == 0)
return NULL;
if (CLUTTER_IS_TEXTURE (actor))
{
CoglTexture *texture;
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
if (texture)
if (texture &&
cogl_texture_get_width (texture) == width &&
cogl_texture_get_height (texture) == height)
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, texture);
}
else
if (shadow_pipeline == NULL)
{
CoglTexture *buffer;
CoglOffscreen *offscreen;
CoglFramebuffer *fb;
ClutterActorBox box;
CoglColor clear_color;
float width, height;
CoglError *catch_error = NULL;
clutter_actor_get_allocation_box (actor, &box);
clutter_actor_box_get_size (&box, &width, &height);
if (width == 0 || height == 0)
return NULL;
buffer = cogl_texture_new_with_size (width,
height,
COGL_TEXTURE_NO_SLICING,

View File

@@ -1,8 +1,18 @@
testconf = configuration_data()
testconf.set('MUTTER_TYPELIB_DIR', mutter_typelibdir)
testconf.set('srcdir', meson.current_source_dir())
configure_file(
run_test = configure_file(
input: 'run-test.sh.in',
output: 'run-test.sh',
configuration: testconf
)
testenv = environment()
testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
foreach test : ['insertSorted', 'jsParse', 'markup', 'url']
test(test, run_test,
args: 'unit/@0@.js'.format(test),
env: testenv,
workdir: meson.current_source_dir())
endforeach

View File

@@ -176,7 +176,7 @@ for (let i = 0; i < testsModifyScope.length; i++) {
let matches = text.match(/(.*)\.(.*)/);
if (matches) {
[expr, base, attrHead] = matches;
let [expr, base, attrHead] = matches;
if (!JsParse.isUnsafeExpression(base)) {
with (obj) {

View File

@@ -1,26 +0,0 @@
#!/usr/bin/python3
#
# This is a simple script that we use to check for files in git
# and not in the distribution. It was previously written in shell
# and inlined in the Makefile.am, but 'git ls-files --exclude=<pattern>'
# was changed to no longer do anything useful, which made that
# too challenging to be worthwhile.
import fnmatch, os, subprocess, sys
srcdir=sys.argv[1]
distdir=sys.argv[2]
excludes=sys.argv[3:]
cwd=os.getcwd()
os.chdir(srcdir)
status=0
for f in subprocess.Popen(["git", "ls-files"], stdout=subprocess.PIPE).stdout:
f = f.decode('utf-8').strip()
if (not os.path.exists(os.path.join(cwd, distdir, f)) and
not any((fnmatch.fnmatch(f, p) for p in excludes))):
print("File missing from distribution:", f)
status=1
sys.exit(status)