summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* clutter: Make ClutterText request toggling the input panelwip/carlosg/text-inputCarlos Garnacho2017-12-221-0/+1
| | | | So gnome-shell is able to show the OSK for it.
* clutter: Add clutter_text_has_preedit()Carlos Garnacho2017-12-222-0/+11
| | | | This function returns TRUE if there is any preedit going on.
* clutter: Add input-purpose/hint properties to ClutterTextCarlos Garnacho2017-12-222-0/+70
| | | | So those properties can be changed or queried within shell UI.
* wayland: Bolt MetaWaylandTextInput in.Carlos Garnacho2017-12-223-0/+14
| | | | | | Offer the text-input interface global, so it can be used by clients. The MetaWaylandSeat will also let MetaWaylandTextInput intercept key events before the keyboard interface handles those.
* wayland: Let IM-processed key events go through MetaWaylandKeyboardCarlos Garnacho2017-12-221-2/+4
| | | | | Those have the "synthetic" flag as set by Clutter guts, but should be processed anyway. Perhaps a "key-repeat" flat would make sense...
* wayland: Implement text input protocolCarlos Garnacho2017-12-224-0/+689
|
* protocol: Add internal text input protocolCarlos Garnacho2017-12-222-0/+306
|
* clutter: Make ClutterText implement ClutterInputFocusCarlos Garnacho2017-12-221-2/+129
| | | | | This only applies when the actor is editable. Implementing this interface will allow it to interact with the input method.
* clutter: Add ClutterBackend IM setter/getterCarlos Garnacho2017-12-223-0/+37
| | | | | The input method will be global to Clutter, these methods allow setting one up.
* clutter: Add ClutterInputMethod and ClutterInputFocusCarlos Garnacho2017-12-228-0/+807
|
* Clutter: Add special event flag for events that went through an IMCarlos Garnacho2017-12-221-2/+3
| | | | | This will be useful to let Clutter know whether those should be or have already been dispatched through an input method.
* wayland: Only send full sequences of touch events to clientsCarlos Garnacho2017-12-211-6/+12
| | | | | | | | | | | | If input happens to be grabbed somewhere along the shell, and ungrabbed while a touch operation is ongoing, the wayland bits will happily start sending wl_touch.update events from an undeterminate point, without clients having ever received wl_touch.down for that id. Consider those touches grabbed for the entirety of their lifetime, if wl_touch.down wasn't received by the client, no other events will. https://bugzilla.gnome.org/show_bug.cgi?id=776220
* keybindings: Super should be inhibitableOlivier Fourdan2017-12-211-0/+9
| | | | | | | | When a Wayland client issues a shortcut inhibit request which is granted by the user, the Super key should be passed to the surface instead of being handled by the compositor. https://bugzilla.gnome.org/show_bug.cgi?id=790627
* Updated Spanish translationDaniel Mustieles2017-12-201-33/+47
|
* stage: Push framebuffer before setting up viewportMarco Trevisan (Treviño)2017-12-201-2/+2
| | | | | | | | | When capture_view* functions are called with the paint flag set to TRUE, we need to setup the framebuffer, however this was happening after setting up the viewport, while the viewport needs the framebuffer to be valid when calling cogl_set_viewport. https://bugzilla.gnome.org/show_bug.cgi?id=791809
* wayland/keyboard: preserve layout indexOlivier Fourdan2017-12-203-7/+14
| | | | | | | | | | | | | | | | | On VT switch, the xkb state layout index is lost and reset to the first group, so if the first layout is not the last one being used, the xkb state used in both meta-wayland-keyboard.c and clutter/evdev will be desynchronized with the keyboard source indicator in the gnome-shell UI. Save the effective layout chosen along with the seat so it can be restored when reclaiming devices. Use the saved layout index from the clutter/evdev's seat to restore the layout in meta-wayland-keyboard, so that switching VT doesn't reset the layout and causes further discrepancies with the layout indicator in the gnome-shell UI. https://bugzilla.gnome.org/show_bug.cgi?id=791383
* keybindings: Only add multiple keycodes from the same levelJonas Ådahl2017-12-201-1/+3
| | | | | | | | | | | | | | | | | | | | | | The reason why multiple keycodes could be mapped to a single keysym was to support having both KEY_FAVORITES and KEY_BOOKMARK map to XF86Favorites. However, iterating through all layout levels adding all key codes has severe consequences on layouts with levels that map things like numbers and arrow. The result is that keybindings that should only have been added for keycodes from the first level, are replaced by some unexpected keycode where the same keysym was found on another level. An example of this is the up-arrow key and l symbol. Normally you'd find both the up-arrow symbol and the l symbol on the first level and be done with it. However, on the German Neo-2 layout, layout level 4 maps the KEY_E to the l symbol, while layout level 4 maps KEY_E to up-arrow. Which ever gets to take priority is arbitrary, but for this particular case KEY_E incorrectly mapped to up-arrow instead of the l symbol, causing the keyboard shortcut Super+l, which would normally lock the screen, to trigger the workspace-up (Super+up-arrow) key binding. https://bugzilla.gnome.org/show_bug.cgi?id=789300
* Use Unicode quotation marks in new translatable stringsPiotr Drąg2017-12-181-6/+6
| | | | | | See https://developer.gnome.org/hig/stable/typography.html https://bugzilla.gnome.org/show_bug.cgi?id=772218
* wayland: Add Xwayland grab keyboard supportOlivier Fourdan2017-12-186-0/+401
| | | | | | | | | | | | | | | | | This protocol is limited to Xwayland only and is not visible/usable by any other client. Mutter uses the following mechanisms to determine if an X11 client should be granted a grab: - is "xwayland-allow-grabs" set? - if set, is the client blacklisted? - otherwise, has the client set the X11 window property _XWAYLAND_MAY_GRAB_KEYBOARD on the window using a client message? - if not, is it a client white-listed either via the default system list or the settings "xwayland-grab-access-rules"? https://bugzilla.gnome.org/show_bug.cgi?id=783342
* settings: Add xwayland grab settingsOlivier Fourdan2017-12-185-0/+187
| | | | | | | Add new settings to control which X11 windows are allowed to issue Xwayland grabs. https://bugzilla.gnome.org/show_bug.cgi?id=783342
* xwayland: add _XWAYLAND_MAY_GRAB_KEYBOARD propertyOlivier Fourdan2017-12-184-0/+76
| | | | | | | | | | | | | | | | | | Add a new client message "_XWAYLAND_MAY_GRAB_KEYBOARD" that X11 clients can use to tell mutter this is a well behaving X11 client so it may grant the keyboard grabs when requested. An X11 client wishing to be granted Xwayland grabs by gnome-shell/mutter must send a ClientMessage to the root window with: - message_type set to "_XWAYLAND_MAY_GRAB_KEYBOARD" - window set to the xid of the window on which the grab is to be issued - data.l[0] to a non-zero value Note: Sending this client message when running a plain native X11 environment would have no effect. https://bugzilla.gnome.org/show_bug.cgi?id=783342
* xwayland: Add MetaWindowXwaylandOlivier Fourdan2017-12-187-6/+115
| | | | | | | | MetaWindowXwayland derives from MetaWindowX11 to allow for some Xwayland specific vfunc that wouldn't apply to plain X11 windows, such as shortcut inhibit routines. https://bugzilla.gnome.org/show_bug.cgi?id=783342
* wayland-outputs: Delay wl_output destructionRui Matos2017-12-151-1/+22
| | | | | | | | This tries to avoid wayland clients getting disconnected for binding to a wl_output that we already destroyed which is a known protocol race condition, see https://phabricator.freedesktop.org/T7722 . https://bugzilla.gnome.org/show_bug.cgi?id=789070
* wayland: Add xdg-output supportOlivier Fourdan2017-12-156-6/+203
| | | | | | | | | | | | | | | | | | The xdg-output protocol aims at describing outputs in way which is more in line with the concept of an output on desktop oriented systems. For now it just features the position and logical size which describe the output position and size in the global compositor space. This is however much useful for Xwayland to advertise the output size and position to X11 clients which need this to configure their surfaces in the global compositor space as the compositor may apply a different scale from what is advertised by the output scaling property (to achieve fractional scaling, for example). This was added in wayland-protocols 1.10. https://bugzilla.gnome.org/show_bug.cgi?id=787363
* Update Indonesian translationKukuh Syafaat2017-12-031-13/+17
|
* window-actor: rename destroy function in queue_destroyMarco Trevisan (Treviño)2017-11-303-3/+3
| | | | | | | Since this might delay the destruction after animation has succeeded, it's just better to rename this accordingly. https://bugzilla.gnome.org/show_bug.cgi?id=791006
* compositor: reset top_window_actor and remove it from windows when destroyedMarco Trevisan (Treviño)2017-11-301-3/+20
| | | | | | | | | | | When the top window actor is destroyed, we need to make sure that all its references are removed or it could be picked again in next windows sync, causing crashes. Since the window might or might not be destroyed when removed (depending weather animations are in progress over it or not), it's just safer to wait it to be destroyed before cleaning up any of its reference. https://bugzilla.gnome.org/show_bug.cgi?id=791006
* backends: Fix ClutterRect initialisationsPhilip Withnall2017-11-301-2/+2
| | | | | | | | With Clang, these initialisations were warning about missing brackets. Signed-off-by: Philip Withnall <withnall@endlessm.com> https://bugzilla.gnome.org/show_bug.cgi?id=791022
* monitor-unit-tests: Check config loading on lid switchesJonas Ådahl2017-11-301-0/+199
| | | | | | | Check that we apply the correct stored configuration when the lid is opend and closed while an external monitor is connected. https://bugzilla.gnome.org/show_bug.cgi?id=788915
* monitor-unit-tests: Always reset CRTC transform abilityJonas Ådahl2017-11-301-0/+6
| | | | | | | | | Changing the test monitor managers ability to rotate CRTCs in one test affected the next test. Avoid leaking such state by resetting it before each test. To continue passing, some tests needed to be updated regarding to still pass. https://bugzilla.gnome.org/show_bug.cgi?id=788915
* monitor-unit-tests: Add test for lid toggle after hot unplugJonas Ådahl2017-11-301-0/+64
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=788915
* monitor-unit-tests: Add test for lid closed after hot plugJonas Ådahl2017-11-301-0/+170
| | | | | | | | Add a test case that checks that we don't try to revert to a laptop-panel-only configuration after closing the lid after an external monitor is connected. https://bugzilla.gnome.org/show_bug.cgi?id=788915
* monitor-manager: Compare keys when checking whether a config is completeJonas Ådahl2017-11-303-29/+16
| | | | | | | | | | | | | | | | | | | | | | We only counted configured monitors and whether the config was applicable (could be assigned), howeverwe didn't include disabled monitors when comparing. This could caused incorrect configurations to be applied when trying to use the previous configuration. One scenario where this happened was one a system with one laptop screen and one external monitor that was hot plugged some point after start up. When the laptop lid was closed, the 'previous configuration' being the configuration where only the laptop panel was enabled, passed 'is-complete' check as the number of configured monitors were correct, and the configuration was applicable. Avoid this issue by simply comparing the configuration key of the previous configuration and the configuration key of the current state. This correctly identifies a laptop panel with the lid closed as inaccessible, thus doesn't incorrectly revert to the previous configuration. https://bugzilla.gnome.org/show_bug.cgi?id=788915
* monitor-config-manager: Don't include closed laptop panel in config keyJonas Ådahl2017-11-301-0/+4
| | | | | | | | | | | | | When deriving the list of disabled monitors when creating new monitors configs, don't include the laptop panel if the lid is currently closed, as we consider the laptop panel nonexistent when the laptop lid is closed when it comes to configuration. The laptop panel connector(s) will either way be appropriately disabled anyway, as the field listing disabled monitors in the configuration do not affect actual CRTC/connector assignments. https://bugzilla.gnome.org/show_bug.cgi?id=788915
* wayland/xdg-shell: Dismiss a popup on map if parent already dismissedJonas Ådahl2017-11-301-0/+6
| | | | | | | | | | If a parent doesn't have a window, it means it could have been dismissed (for example due to a input serial race), but the more recent popup might win the input serial race and try to map anyway. This would result in a crash later on when trying to process the placement rule, as the parent already has no window. https://bugzilla.gnome.org/show_bug.cgi?id=790358
* wayland/xdg-shell: Check popup parent type when assigningJonas Ådahl2017-11-301-0/+8
| | | | | | | We only allow mapping popups on top of surfaces with a xdg_surface based role. Add a check and fail clients that doesn't follow this rule. https://bugzilla.gnome.org/show_bug.cgi?id=790358
* wayland/xdg-shell: Fix top-most check when grabbingJonas Ådahl2017-11-301-16/+14
| | | | | | | | | | | | | Move the top-most-popup correctness check to the finish_popup_setup() function after checking the serial. If we pass the serial check, we should have reached a state that if there are any popups they should be the one from the same client. Also avoid failing a client that correctly set the top-most popup at map time, but where at the time of processing the top most popup have already been dismissed by the compositor for some arbitrary reason. https://bugzilla.gnome.org/show_bug.cgi?id=790358
* Updated Hebrew translationYosef Or Boczko2017-11-261-45/+88
|
* Update Nepali translationPawan Chitrakar2017-11-261-1012/+810
| | | | (cherry picked from commit 789d740add5338bc728619d65b7cfc1063bacf15)
* monitor-manager: Refuse to activate closed laptop panelsRui Matos2017-11-221-0/+7
| | | | | | | There's no good reason to allow this and it allows g-c-c to properly show that such a configuration doesn't work. https://bugzilla.gnome.org/show_bug.cgi?id=790336
* backends: Do NULL checks before disconnecting/connecting signalsCarlos Garnacho2017-11-201-5/+14
| | | | | | The displayed cursor may be NULL. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* backends: Do not set up the root cursor on invisible window pointersCarlos Garnacho2017-11-201-7/+4
| | | | | | | | | | | Commit b1a0bf891 broke the previous logic that we would only fallback to the root cursor if 1) windows are not interactable or 2) no window cursor is currently set (i.e. not hovering over any window). Now it will set up the root cursor if it's NULL, which breaks clients explicitly setting an invisible cursor. This commit restaurates the previous behavior. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* backends: Protect from reentrancy in meta_cursor_sprite_load_from_themeCarlos Garnacho2017-11-171-2/+2
| | | | | | | | | | This function is supposedly not failable, so just move the theme_dirty flag clearing to the beginning of the function. Protects against cases where requesting a cursor image may result in it being loaded and set as a texture, which emits ::texture-changed, which may end up requesting the cursor image again. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* backends: Trigger MetaCursorTracker::cursor-changed on texture changesCarlos Garnacho2017-11-171-0/+12
| | | | | | | So we allow gnome-shell's magnifier to update fake cursors while it's turned on. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* backends: Add MetaCursorSprite::texture-changed signalCarlos Garnacho2017-11-171-0/+14
| | | | | | | | | | | | | As wayland implements the cursor role, it consists of a persistent MetaCursorSprite that gets the backing texture changed. This is inconvenient for the places using MetaCursorTracker to track cursor changes, as they actually track MetaCursorSprites. This signal will be used to trigger emission of MetaCursorTracker::cursor-changed, which will make users able to update accordingly. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* backends: Dissociate visibility from current cursor spriteCarlos Garnacho2017-11-172-22/+40
| | | | | | | | | | | | | | Just like X11/XFixes behaves, the current cursor is not affected by its visibility, so it can be queried while invisible (possibly to be replaced). For this, keep an extra effective_cursor pointer that will be either equal to displayed_cursor (maybe a bit of a misnomer now) or NULL if the cursor is invisible. The MetaCursorRenderer management is tied to the former, and the ::cursor-changed signal emission to the latter. https://bugzilla.gnome.org/show_bug.cgi?id=754806
* compositor: Fix buildCarlos Garnacho2017-11-171-1/+0
| | | | | Unused variable definition. The fixup didn't make it to the previous commit.
* compositor: End MetaDnd grab on plugin grab endCarlos Garnacho2017-11-173-13/+29
| | | | | | | | | We must emit ::dnd-leave to pair the ::dnd-enter that shall be emitted whenever the plugin grab begins, otherwise we leave listeners unable to clean up if the plugin begins and ends a grab while there is an ongoing DnD operation. https://bugzilla.gnome.org/show_bug.cgi?id=784545
* Update Italian translationMilo Casagrande2017-11-171-13/+17
| | | | (cherry picked from commit 32a151094d08dcdd257ef68a04c096abb6f23757)
* clutter/x11: Configure XKB accessibilityOlivier Fourdan2017-11-162-0/+10
| | | | | | | Configure XKB accessibility features from the x11 and xi2 clutter input device managers, offloading this feature from gnome-settings-daemon. https://bugzilla.gnome.org/show_bug.cgi?id=788564