Commit Graph

11953 Commits

Author SHA1 Message Date
Ray Strode
5f571b8531 background: refresh background on gl-video-memory-purged signal
Right now we refresh the background when resuming and when NVIDIA.
But mutter has a signal to tell us specifically when to refresh,
and the signal is only emitted for NVIDIA, so use that instead.
2019-02-17 12:28:08 -05:00
Ray Strode
f4fd379bd6 st-texture-cache: purge on resume
With the proprietary nvidia driver, textures get garbled on suspend,
so the texture cache needs to evict all textures in that situation.
2019-02-17 12:28:07 -05:00
Ray Strode
b9a4340bc8 background: rebuild background, not just animation on resume
Previously, we would only refresh the animation on resume
(to handle clock skew).

But we actually need to rebuild the background, too, on nvidia,
so we should just do a full background change.
2019-02-17 12:28:07 -05:00
Ray Strode
63b622ccea background: refresh after suspend on wayland
At the moment we only refresh after suspend on Xorg.

We need to do it on wayland, too.
2019-02-17 12:28:07 -05:00
Carlos Garnacho
0ad02321de inputMethod: Use forward_key() method to forward key events
ClutterVirtualInputDevice has the limitation that event flags won't be
made to contain CLUTTER_EVENT_FLAG_INPUT_METHOD, possibly causing feedback
loops.

As the event gets injected up the platform dependent bits, we can avoid
care on not pressing the same key twice, we still expect coherence between
key presses and releases from the IM though.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/531
2019-02-17 12:28:07 -05:00
Florian Müllner
e55aacaa10 inputMethod: Fix setting surrounding text
The underlying ibus method expects an object of type IBusText rather
than a plain string.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/228
2019-02-17 12:28:07 -05:00
Andrea Azzarone
ed1a8c582d inputMethod: Add a null-check for text in vfunc_set_surrounding.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/579
2019-02-17 12:28:07 -05:00
Takao Fujiwara
99b40d8eaa inputMethod: Fix to hide preedit text
ibus_engine_update_preedit_text() should hide the pre-edit text
when visible == false.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/431
2019-02-17 12:28:07 -05:00
Carlos Garnacho
fd36bbbc10 inputMethod: Handle IBusInputContext::forward-key-press
The input method may hint that certain keycodes should be pressed/released
besides the textual information in ::commit. An example is hitting space
in some IMs to commit text, where both ::commit happens, and an space is
visibly inserted. In order to handle this properly, we must honor
::forward-key-press.

In order to cater for the case that a keypress is forwarded while handling
that same keypress in a physical keyboard, check the current event being
handled and just forward it as-is if it matches. This is necessary to
prevent state from being doubly set, and the second event silenced away.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/275

Closes: #275
2019-02-17 12:28:07 -05:00
Florian Müllner
b301d0582a keyboard: Handle no-window case in FocusTracker
For windows, the cursor location needs to be adjusted by the frame
offsets. However we cannot assume that there is a window, as the
shell itself can have the key focus.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/414

(cherry picked from commit 0dee82fb9f)
2019-02-17 12:28:07 -05:00
Carlos Garnacho
26589af153 keyboardManager: Avoid idempotent calls to meta_backend_set_keymap()
But still try to apply the keymap whenever the input sources changed. This
is a different approach to gnome-shell#240 that still avoid redundant
changes to the current keymap, but actually trigger one when input sources
are added.

https://bugzilla.redhat.com/show_bug.cgi?id=1637418

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/691
2019-02-17 12:28:07 -05:00
Florian Müllner
15aaf1a455 osdWindow: Disconnect signals on destroy
Since we started to show OSD windows on all monitors, OSD windows are
destroyed when the corresponding monitor is disconnected. We shouldn't
leave any signal handlers around in that case - they prevent the object
from being garbage collected, and trigger warnings for accessing proper-
ties of invalidated GObjects.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/602
2019-02-17 12:28:06 -05:00
Marco Trevisan (Treviño)
c227be4325 tweener: Save handlers on target and remove them on destroy
Saving handlers we had using the wrapper as a property of the object and delete
them when resetting the object state.
Without doing this an handler could be called on a destroyed target when this
happens on the onComplete callback.

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2019-02-17 12:28:06 -05:00
Florian Müllner
6622fae6bd calendar: chain up to parent on _onDestroy 2019-02-17 12:28:06 -05:00
Marco Trevisan (Treviño)
2f24e0701e automountManager: remove allowAutorun expire timeout on volume removal
If the volume is removed before AUTORUN_EXPIRE_TIMEOUT_SECS seconds, we can stop
the timeout earlier as there's nothing to unset, while the volume instance
won't be valid anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2019-02-17 12:28:06 -05:00
Marco Trevisan (Treviño)
72e2936f20 messageList: stop syncing if closeButton has been destroyed
The _sync function for Message only updates the close button visibility,
so we can safely stop doing that if the close button get get destroyed earlier
(as it happens when clicking on it).

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2019-02-17 12:28:06 -05:00
Jonas Ådahl
a77b7447d7 dnd: Repick target actor if destroyed mid iteration
The picked target actor may be destroyed (e.g. hover style change
resulting in the ClutterTexture to be destroyed). If we don't handle
this, GJS will abort when it sees the exception caused by Javascript
code trying to access the destroyed target actor.

To handle it, listen on the 'destroy' signal on the target actor, and
repick, so a valid actor is passed to the next motion callback.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/632
2019-02-17 12:28:06 -05:00
Marco Trevisan (Treviño)
b5e7e91c78 dnd: Nullify _dragActor after we've destroyed it, and avoid invalid access
We need to avoid that we use the _dragActor instance after that it has
been destroyed or we'll get errors. We now set it to null when this
happens, protecting any access to that.

Add a DragState enum-like object to keep track of the state
instead of using booleans.

Remove duplicated handler on 'destroy' and just use a generic one.

https://bugzilla.gnome.org/show_bug.cgi?id=791233
2019-02-17 12:28:06 -05:00
Olivier Fourdan
8331a68ae3 introspect: Add GetWindows method
The `GetWindows` method gives access to the list of windows for each
application with some of their properties, so utilities such as dogtail
can pick the window of their choice to interfere with using the provided
window id.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/326
(cherry picked from commit 0f45b438e2b956d3cf52622db875dedab45e49b9)
2019-02-17 12:28:06 -05:00
Jonas Ådahl
bb2764dc69 Add app introspection API
Add a D-Bus API that allows the API user to introspect the application
state of the shell. Currently the only exposed information is list of
running applications and which one is active (i.e. has focus).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/326
(cherry picked from commit 10c68c6b952959d105c3126fc61f22a199e8e848)
2019-02-17 12:28:06 -05:00
Jonas Ådahl
0e7c424e50 remoteAccess: Make indicator orange
Make the indicator for active remote access use the warning color, to
indicate the severity of allowing remote access.

This only makes the indicator icon orange; the icon in the system menu
is still white.
2019-02-17 12:28:06 -05:00
Jonas Ådahl
219adb4510 Add remote access indication and control
Add an indicator for when there is something access the display server
remotely. This could be 1) remote desktop, 2) screen cast or 3) remote
control, but all effectively applications using
org.freedesktop.portal.ScreenCast or org.gnome.portal.RemoteDesktop as
well as gnome-remote-desktop using the corresponding org.gnome.Mutter
APIs directly.

As it is now, it'll simply show a single icon for when anything is
having an active session, and a single action "Turn off" that'll close
every active session.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/160
2019-02-17 12:28:05 -05:00
Florian Müllner
3f221c28a1 closeDialog: Untrack chrome when window loses focus
On X11, reactive chrome must be added to the input region in order
to work as expected. However that region works independently from
any window stacking, with the result that the unresponsive-app dialog
currently blocks all input in the "covered" area, even in windows
stacked above the unresponsive window.

The correct fix would be to track the unobscured parts of the dialog
and set the input region from that, but that's quite cumbersome. So
instead, only track chrome when the corresponding window is focused
(or the dialog itself of course).

https://gitlab.gnome.org/GNOME/gnome-shell/issues/273
2019-02-17 12:28:05 -05:00
Florian Müllner
2effcfcc7d closeDialog: Periodically check for window to become responsive again
The close dialog for non-responding windows is closed automatically
when we detect that the window is responding again. However as we
currently only ping the window in response to certain user actions
(like focusing the window or opening the window menu), this can
easily go undetected.

Address this by periodically pinging the window while the close
dialog is shown.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/298
2019-02-17 12:28:05 -05:00
Florian Müllner
deb2e8bc39 closeDialog: Disable unredirection while showing
The dialog won't be visible when unredirection is in place (for example
while a fullscreen window is focused), so disable unredirection while
the dialog is up.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/298
2019-02-17 12:28:05 -05:00
Florian Müllner
608937cb98 app: Close all closable windows from quit()
There's no relation between a window being hidden from overview/taskbars
and a window not being closable - currently we effectively disable the
fallback quit action for any application with open transients, which
simply doesn't make sense.

Instead, only exclude windows for which the close action has been
explicitly disabled.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/217
2019-02-17 12:28:05 -05:00
Florian Müllner
d727fe3eeb appDisplay: Show full app name on hover 2019-02-17 12:28:05 -05:00
Florian Müllner
a52390187b altSwitcher: Fix error when all alternatives are disabled
While we do consider the case that we don't have a child to show for the
visibility, we are still trying to move the click action unconditionally.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/783
2019-02-17 12:28:05 -05:00
Florian Müllner
d376b829b4 global: Allow overriding the override schema 2019-02-17 12:28:05 -05:00
Florian Müllner
e11404d1cf windowMenu: Bring back workspaces submenu for static workspaces
When the titlebar context menu was moved to the shell, the submenu for
moving to a specific workspace was intentionally left out; some people
are quite attached to it though, so bring it back when static workspaces
are used.
2019-02-17 12:28:04 -05:00
Florian Müllner
585cf9c17d app: Fall back to window title instead of WM_CLASS
It's a bad fallback as it's clearly window-specific (rather than
app-specific), but it likely looks prettier when we fail to associate
a .desktop file ...
2019-02-17 12:28:04 -05:00
Ray Strode
503a9d729c panel: add an icon to the ActivitiesButton
Requested by brand
2019-02-17 12:28:04 -05:00
Florian Müllner
04ea89d683 extensionSystem: Notify about extension issues on update 2019-02-17 12:28:04 -05:00
Rui Matos
1220e0124a extensions: Add a SESSION_MODE extension type
This allows e.g. gnome-tweak-tool to present these extensions in a
different way since they can't be disabled.
2019-02-17 12:28:04 -05:00
Rui Matos
7d9a39c72c shellDBus: Add a DBus method to load a single extension
This allows e.g. gnome-tweak-tool to install an extension from a zip
file and load it into the running shell.
2019-02-17 12:28:03 -05:00
Ray Strode
b474ea0b7c gdmUtil: enable support for GDM's ChoiceList PAM extension
This commit hooks up support for GDM's ChoiceList PAM extension.
2019-02-17 12:28:03 -05:00
Ray Strode
d4b211bd23 gdm: add AuthList control
Ultimately, we want to add support for GDM's new ChoiceList
PAM extension.  That extension allows PAM modules to present
a list of choices to the user. Before we can support that
extension, however, we need to have a list control in the
login-screen/unlock screen.  This commit adds that control.

For the most part, it's a copy-and-paste of the gdm userlist,
but with less features.  It lacks API specific to the users,
lacks the built in timed login indicator, etc. It does feature
a label heading.
2019-02-17 12:28:03 -05:00
Ray Strode
98e4af9712 loginDialog: make info messages themed
They were lacking a definition before leading them to
show up invisible.
2019-02-17 12:28:03 -05:00
Ray Strode
c7665b87a6 data: install process-working.svg to filesystem
This helps prevent unlock failure on inplace upgrades between
7.3 and 7.4
2019-02-17 12:28:03 -05:00
Ray Strode
f7b47666b2 loginDialog: allow timed login with disabled user list
At the moment the timed login feature is implemented in the user list.
If there's no user list, we don't show the indicator anywhere and
don't proceed with timed login.

This commit allows timed login to work when the user list is disabled.
It accomplishes this by putting the timed login indicator on the
auth prompt, in that scenario.
2019-02-17 12:28:02 -05:00
Ray Strode
241585479b authPrompt: stop accepting preemptive answer if user stops typing
We only want to allow the user to type the preemptive password in
one smooth motion.  If they start to type, and then stop typing,
we should discard their preemptive password as expired.

Typing ahead the password is just a convenience for users who don't
want to manually lift the shift before typing their passwords, after
all.
2019-02-17 12:28:02 -05:00
Ray Strode
31612927b2 authPrompt: don't spin unless answering question 2019-02-17 12:28:02 -05:00
Ray Strode
65229b6299 authPrompt: don't fade out auth messages if user types password up front
Right now we fade out any stale auth messages as soon as the user starts
typing. This behavior doesn't really make sense if the user is typing up
front, before a password is asked.
2019-02-17 12:28:02 -05:00
Ray Strode
53f1d46fb5 gdm: update default service when smartcard inserted
Early on at start up we may not know if a smartcard is
available.  Make sure we reupdate the default service
after we get a smartcard insertion event.
2019-02-17 12:28:02 -05:00
Ray Strode
04d526e9f5 gdm: only unlock with smartcard, if smartcard used for login
If a smartcard is used for login, we need to make sure the smartcard
gets used for unlock, too.
2019-02-17 12:28:02 -05:00
Ray Strode
8593532801 smartcardManager: add way to detect if user logged using (any) token
If a user uses a token at login time, we need to make sure they continue
to use the token at unlock time.

As a prerequisite for addressing that problem we need to know up front
if a user logged in with a token at all.

This commit adds the necessary api to detect that case.
2019-02-17 12:28:02 -05:00
Ray Strode
1e0ec69c41 screenShield: unblank when inserting smartcard
If a user inserts the smartcard when the screen is locked/blanked
we should ask them their pin right away.

At the moment they have to wiggle the mouse or do some other
action to get the screen to unblank.
2019-02-17 12:28:02 -05:00
Florian Müllner
9a6054b6b7 appFavorites: Add terminal 2019-02-17 12:28:02 -05:00
Florian Müllner
54633cb1f6 Add 'yelp' to default favorites
Help should be easily available, so add it to the default favorites.
2019-02-17 12:28:02 -05:00
Ray Strode
a506d86139 gnome-shell-favourite-apps-firefox.patch 2019-02-17 12:28:01 -05:00