| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately XKeysymToKeycode() falls short in that it coalesces keysyms
into keycodes pertaining to the first level (i.e. lowercase). Add a
ClutterKeymapX11 method (much alike its GdkKeymap counterpart) to look up
all matches for the given keysym.
Two other helper methods have been added so the virtual device can fetch
the current keyboard group, and latch modifiers for key emission. Combining
all this, the virtual device is now able to handle keycodes in further
levels.
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/135
|
|
|
|
|
| |
It is certainly able to visualize preedit text inline, so it must
announce itself as such.
|
|
|
|
|
|
| |
A just focused ClutterInputFocus must set itself up correctly on
all situations. Refactor this into a function, so it can be used
for the case where a ClutterText gets editable while focused.
|
|
|
|
|
|
|
|
|
|
|
|
| |
`ClutterText` painting for editable single_line_mode actors like `StEntry`
is always clipped by:
`cogl_framebuffer_push_rectangle_clip (fb, 0, 0, alloc_width, alloc_height)`
So it's difficult to get the rectangle wrong. However in cases where the
target framebuffer has changed (`cogl_push_framebuffer`) such as when
updating `ClutterOffscreenEffect` we had the wrong old value of `fb`. And
so would be clipping the wrong framebuffer, effectively not clipping at all.
|
|
|
|
| |
Detect auto-repeated key events using the XIKeyRepeat flag.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Sending button events to a ClutterVirtualInputDevice, the API expects
button codes to be of the internal clutter type. The evdev
implementation incorrectly assumed it was already prepared evdev event
codes, which was not the case. Fix the evdev implementation to translate
from the internal representation to evdev before passing it along to
ClutterSeatEvdev.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/190
|
|
|
|
|
|
|
| |
Children added to a parent after that parent (or its ancestors)
have already been cloned now inherit the clone branch depth of
the parent. Otherwise `clutter_actor_is_in_clone_paint` on the child
could return FALSE when it should have been returning TRUE.
|
|
|
|
|
|
|
|
|
| |
The function is intentionally provided as macro to not require a
cast. Recently the macro was improved to check that the passed in
pointer matches the free function, so the cast to GDestroyNotify
is now even harmful.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
|
|
|
|
|
|
|
| |
It is now deprecated in favor of the G_ADD_PRIVATE() macro (usually
called via G_DEFINE_WITH_PRIVATE()).
https://gitlab.gnome.org/GNOME/mutter/merge_requests/176
|
|
|
|
|
|
|
| |
Cuts down approximately all paint volume calculations when there's
windows that redraw frequently, but don't move.
https://bugzilla.gnome.org/show_bug.cgi?id=782344
|
| |
|
|
|
|
|
|
|
|
| |
`modelview` is uninitialized and the `apply` function just multiplies it.
What we really want is to initialize `modelview` so replace `apply` with
`get`.
Who knows what bugs this may have caused...
|
|
|
|
|
|
| |
Treat the main seat as other seats, so we don't have to handle it differently
in specific places. This was already the case before when a real device
was plugged before the startup, but not applied when hotplugging a device.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When no input devices are available on startup the device manager might be fast
enough to be constructed so that no default stage is set yet, and thus when
main seat virtual devices are created they won't have a proper stage set.
If then we plug a real device, the events that an input manager could generate
won't be associated to any stage and thus won't be processed.
We need then ensure that when we update the stage for the device manager we
(un)associate it also to the main seat devices.
|
|
|
|
|
|
|
|
|
|
| |
In devices such as ARM boards there could be no input devices connected on
startup, leading to a crash when we try to process artificial events that
could be queued (as gnome-shell does when syncing pointer).
Those events still should refer to a device and, in case we don't have one
provided by libinput we should still return the core devices defined in the
main seat.
|
| |
|
|
|
|
|
|
|
| |
Cally is built into clutter itself rather than exposed as a separate
library.
https://bugzilla.gnome.org/show_bug.cgi?id=781471
|
|
|
|
|
| |
clutter_stage_manager_list_stages() returns a copied list, which
should be freed.
|
|
|
|
|
|
|
|
| |
The fix is twofold. On one hand, it makes sense not to relate IM (nor
any other) generated events to a HW device. On the other hand, if we
are unfortunate that an IM event is in flight when we are switching
to another TTY, it may arrive at a time when the source device is no
longer existent.
|
|
|
|
|
|
|
|
| |
Mark CAPS lock as a modifier (as it should) so that when using XKB
options to change the default behaviour of CAPS lock, the new assigned
key can by used as a sticky key as well.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/112
|
|
|
|
|
|
|
| |
Input method can inject key events, which leads to multiple reported key
press/release events for a single user action.
Ignore those events as this confuses keyboard accessibility.
|
|
|
|
|
|
|
|
|
|
| |
And make the ClutterText-level properties independent from the input
focus, as those properties can be set anytime, not just when the
ClutterText actor is focused.
https://gitlab.gnome.org/GNOME/mutter/issues/66
Closes: #66
|
|
|
|
|
|
| |
We can save an unnecessary relayout if the required size to fully draw the text
is equal to the currently allocated size after the underlying text buffer or
attributes that only affect the PangoLayout have changed.
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=792717
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/mutter/merge_requests/45
|
|
|
|
|
|
|
|
|
|
| |
Actor keybindings were dispatched in an earlier return path, which means
the IM doesn't get to see certain key events. Flip the order around so the
IM has an opportunity to handle all keypresses.
https://gitlab.gnome.org/GNOME/mutter/issues/65
Closes: #65
|
|
|
|
|
|
|
|
| |
So we can trigger actions for the right mode.
https://gitlab.gnome.org/GNOME/mutter/issues/48
Closes: #48
|
|
|
|
|
|
|
|
|
| |
Use libwacom to be able to find out modes, groups and button roles on
pad devices.
https://gitlab.gnome.org/GNOME/mutter/issues/48
Closes: #48
|
| |
|
|
|
|
|
| |
This is needed so that mutter can let applications using the remote
desktop API to know whether touch screens are supported.
|
|
|
|
|
| |
As the other virtual input event delivery mechanisms, this also uses
the XTEST protocol.
|
|
|
|
|
| |
So far only implemented on the evdev backend,as X11 doesn't support touch
devices nor smooth scrolling via XTEST.
|
|
|
|
|
|
| |
IF two touch devices have colliding touch point IDs they'd interfere on
the seat. To avoid this, always allocate a seat wide slot for each
device wide slot, but don't use device slots directly in the seat.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Checking correct state is responsibility of the ClutterInputFocus user, and
it is indeed possible to get a focused ClutterText while its
ClutterInputFocus didn't get itself focused (eg. lack of IM).
https://gitlab.gnome.org/GNOME/mutter/issues/36
Closes: #36
|
|
|
|
|
| |
More concretely, ensure preedit text goes away after commit/focus_out,
and update cursor position right after focus_in.
|
|
|
|
|
|
|
| |
Clutter doesn't handle it anyway, and mutter now creates the
CoglRenderer object itself so we don't need this API anymore.
https://bugzilla.gnome.org/show_bug.cgi?id=739178
|
|
|
|
|
|
|
|
|
| |
BTN_STYLUS3 is defined by the Linux 4.15 kernel and is sent when the
third button on a stylus is pressed. At the moment, only Wacom's "Pro
Pen 3D" has three stylus buttons. Pressing this button triggers a button
8 event to be sent under X11, so we use the same mapping here.
https://bugzilla.gnome.org/show_bug.cgi?id=790033
|
|
|
|
|
|
|
|
|
|
| |
clutter_set_viewport always operates on the draw fb, but
mutter sometimes has an offscreen fb it uses instead.
This commit uses the non-deprecated, clutter_framebuffer_set_viewport
function, which takes an explicit fb argument.
Closes: https://gitlab.gnome.org/GNOME/mutter/merge_requests/2
|
|
|
|
| |
So gnome-shell is able to show the OSK for it.
|
|
|
|
|
|
| |
This function returns TRUE if there is any preedit going on. This method
will be useful in gnome-shell where similar checks are performed on
StIMText actors.
|
|
|
|
| |
So those properties can be changed or queried within shell UI.
|
|
|
|
|
| |
This only applies when the actor is editable. This object will allow
editable ClutterText instances to interact with the input method.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ClutterInputFocus is an abstract object to be subclassed by UI actors and
the wayland interface and represents the user of an input method. It
represents the current focus of the input method, so all emitted signals
and public API hooks are expected to be called when the input method is
currently interfacing with the input focus.
ClutterInputMethod is an abstract class (to be implemented in the upper
layers) that represents the input method itself. Besides focus management
itself, all public API calls that would be called by the subclasses are
delivered through the current input focus.
|
|
|
|
|
| |
The input method will be global to Clutter and shared between all the
IM aware foci. These methods allow querying it and setting one up.
|
|
|
|
|
| |
This will be useful to let Clutter know whether those should be or have
already been dispatched through an input method.
|
|
|
|
|
|
|
|
| |
Libinput shall report those as having slot=-1, which gets mistakenly
translated into the special "NULL" ClutterEventSequence. Making those
events get a non-NULL sequence will make single touch devices work.
https://bugzilla.gnome.org/show_bug.cgi?id=792005
|