14645 Commits (d2a3a10802a5be6e7816c36123fea3bcb2306de8)
 

Author SHA1 Message Date
Martin Gräßlin d2a3a10802 Split ScreenLockerWatcher into dedicated source files
Being able to monitor whether the screen is locked is useful not only
to the effects system but overall in KWin. Thus to make it possible to
use it from more locations as a first step it's moved into dedicated
source files.
8 years ago
Martin Gräßlin 03f66b02c3 [autotest/integration] Add pointer axis events to ModifiersOnlyShortcutTest
If a pointer axis is scrolled while a modifier is hold, the modifier only
shortcuts should not trigger. The user wanted to use the modifier for the
pointer axis.

This is not implemented yet, thus all is QEXPECT_FAIL.
8 years ago
Martin Gräßlin 280663fede [autotest/integration] Add pointer button events to ModifiersOnlyShortcutTest
If a pointer button is pressed or gets pressed while a modifier is
hold, the modifier only shortcuts should not trigger. The user wanted
to use the modifier for the pointer button.

This is not implemented yet, thus all is QEXPECT_FAIL.
8 years ago
Martin Gräßlin fcd9a15186 [autotest/integration] Add a test case for modifier only shortcuts
This test verifies the functionality of modifier only shortcut
activation. The base test case uses a helper object which is exported
to DBus and has a slot which can get triggered.

The test configures the individual modifiers to call that DBus method
when the shortcut is triggered. It simulates pressing the modifier and
verifies the DBus method was invoked or not.
8 years ago
Martin Gräßlin 83d8181675 [libkwinglutils] Revert version hack for Qualcomm Adreno on libhybris
The idea to set proper version is good, but it results in epoxy
thinking it does not have the entry points and terminating KWin.
8 years ago
David Edmundson 6c8f0e6cc0 Include setOnActivity in the test 8 years ago
David Edmundson 628fe79d3e Fix activites_test check
client->isOnActivity("foo") will return true if the client is on no
activities, as that's the equivalent of saying we are on all activities.

In our case we do want to check activities() shows the right thing.
8 years ago
David Edmundson 0dd927c4a4 Validate activities in setOnActivities
Summary:
This fixes a bug I had where Session Management restored a window on an
activity that didn't exist that, meaning I was unable to access it.

setOnActivity() already has this check

BUG: 362620

Test Plan:
Using my broken session, restored and got my ghost process back
on all activities

Added a window to activity 2, checked it came back there and
only there.

Reviewers: #plasma, graesslin

Subscribers: ivan, luebking, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D1982
8 years ago
Martin Gräßlin b14618994b [autotests/integration] Add a first test case for activities
Verifies the condition from D1982 with expected_fail. That is sets
a Client on non existing activities and expects that it should be on
all activities.
8 years ago
Martin Gräßlin 5ea88effee Implement addDamage in Unmanaged
For Xwayland Unmanaged needs to override the addDamage method and
update the repaints_region accordingly, otherwise the repaint is not
triggered for the Unmanaged window.

Reviewed-By: bshah
8 years ago
Martin Gräßlin b4c6b4b35d [libkwinglutils] hasGLVersion uses GLPlatform for verison check
Summary: No need to parse the OpenGL version twice with different algorithms.

Reviewers: #kwin, bshah

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2414
8 years ago
Martin Gräßlin a5c8356d40 [libkwineffects] Add detection code for Qualcomm Adreno to GLPlatform
Summary:
The Qualcom Adreno classes are recognized and a version detection
workaround is added for libhybris which only announces GLES version 2
although GLES version 3 is supported. KWin at least used to work with
GLES version 3 which gives us e.g. framebuffer blit.

Reviewers: #kwin, bshah

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2415
8 years ago
Martin Gräßlin 79641df928 [autotests/libkwineffects] Add test data for Adreno 330
This is the device used in Nexus 5 and reference for Plasma Mobile.
The output is with using libhybris on top of hwcomposer backend.
8 years ago
Martin Gräßlin 7586394b81 [autotests] Don't try to load StartupFeedbackEffect on GL compositor
The test terminated cleanly as it tried to load a shader which obviously
fails.
8 years ago
Martin Gräßlin ec596519c6 [autotests/integration] Add test case for minimizing active ShellClient
When minimizing an active ShellClient it should become inactive.
This is not the case as the test case shows through expected failures.

CCBUG: 366634
8 years ago
Martin Gräßlin cd6d82fcbc [libinput] Add device configuration for tap-drag-lock
From libinput documentation:
Also optional is a feature called "drag lock". With drag lock disabled,
lifting the finger will stop any drag process. When enabled, libinput
will ignore a finger up event during a drag process, provided the finger
is set down again within a implementation-specific timeout.
8 years ago
Martin Gräßlin 02cf9e8a64 [libinput] Add support for tap and drag
From libinput documentation:
A tap immediately followed by a finger down and that finger being held
down emulates a button press. Moving the finger around can thus drag
the selected item on the screen.
8 years ago
Martin Gräßlin 00f3f990d6 [libinput] Use macro for the standard boolean config setters
Less code duplication
8 years ago
Martin Gräßlin e18e2eb57c [libinput] Rename Device::tapEnabledByDefault to tapToClickEnabledByDefault
Slightly more descriptive name what the feature is about.
8 years ago
Martin Gräßlin 2f7298bed5 [libinput] Add support for tapToClick configuration
New property added to Device which allows reading and setting the
tap to click configuration.
8 years ago
Martin Gräßlin 079095beea Adding more frameless hints
The internal window can be decorated really broke a few things...
8 years ago
Martin Gräßlin 4a16bbbe46 Support triggering application launcher through screenedge
Summary:
Now that we have a dedicated dbus call to show the application launcher
we can also expose it through the screenedges.

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2394
8 years ago
Martin Gräßlin 7bca270f97 Force windows of type desktop to be opaque
Summary:
Plasmashell's desktop windows are RGBA which forces the compositor to
perform blending and render the background. That is absolutely pointless
as there is no window behind the desktop window it could blend to. All it
does is destroying KWin's more optimized code path and forcing additional
rendering which will never be visible (including shader push/pop).

With this change KWin forces desktop windows (both X11 and Wayland) to
be considered as opaque by setting the depth to 24. Thus blending is
disabled and the background is not rendered.

Test Plan:
Verified with apitrace that KWin goes in the opaque rendering
path for desktop windows.

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2382
8 years ago
Martin Gräßlin 9b30cfef1d Launch Plasma's launcher menu on meta modifier only shortcut by default
Summary: Invokes org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.activateLauncherMenu.

Reviewers: #plasma, #kwin, hein

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2357
8 years ago
Martin Gräßlin eed4bf32ae Cache the clientSize in DecoratedClientImpl
Summary:
So far whenever the window geometry changed the widthChanged and
heightChanged signals were emitted even if they did not change.
E.g. while moving a window this resulted in the signal being emitted
after every step, although from decoration point of view nothing
changed.

The decoration performed costly tasks like re-layout the window buttons.

With this change the client size is cached and the widthChanged signal
is only emitted if the width actually changed. Same for heightChanged.

This results in the decoration only re-layouting the buttons if the
window is resized horizontally. All other geometry changes no longer
result in a re-layout.

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2389
8 years ago
Martin Gräßlin 089059aba3 Don't trigger decoration repaint when ShellClient geometry changes
The geometry change will trigger an update through the signals on the
decoration anyway. Thus a dedicated repaint is not needed.
8 years ago
Martin Gräßlin 09ba49e401 Only focusToNull when activating a ShellClient
ShellClient::doSetActive calls into focusToNull to deactivate active
windows on X11. But this should only be done when activating a
ShellClient. When deactivating a ShellClient the focusToNull can
result in an activated X-client to lose activation.

Thus this change ensures that focusToNull is only performed for a
now active ShellClient.

Reviewed-By: bshah
8 years ago
Martin Gräßlin dad7004dbb Add an OpenGL information tab to Debug Console
Summary:
The new tab shows the information from GLPlatform similar to how it is
shown in the supportInformation. In addition it also lists all available
openGL and EGL/GLX extensions. For that kwinglutils is extended by
functions to return the lists of extensions.

Reviewers: #kwin, #plasma, bshah

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D2385
8 years ago
Martin Gräßlin 915af29886 [qml/outline] Outline shall be a frameless window
Was missing the hint. Caused kwin_wayland to crash.
8 years ago
Martin Gräßlin b3d41ee0f3 Add missing break in virtualkeyboard.cpp 8 years ago
Martin Gräßlin 19b5c2e418 Make virtualkeyboard a frameless window
We don't want that KWin tries to add a window decoration to it.
8 years ago
Martin Gräßlin c789ce808b [effects] Disable Blur and BackgroundContrast on software emulation
On llvmpipe it's better to have them disabled.

Reviewed-By: Marco Martin
8 years ago
l10n daemon script 8f4f7e6eb0 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
8 years ago
Martin Gräßlin 4cdb078376 [autotest/libkwineffects] Add more test data for glplatformtest 8 years ago
Martin Gräßlin 1e13c5ad8f [autotests/libkwineffects] Test GLPlatform::driverToString and chipClassToString 8 years ago
Martin Gräßlin 0778cab42d [autotest/libkwineffects] Add more test data for the glplatform test
Example data harvested from bugs.kde.org: open bugs against kwin with
a comment containing supportInformation.

We can see that especially detecting modern radeon gpus is not working.
8 years ago
Martin Gräßlin a79dc5585a [libkwineffects] Fix includes in kwingltexture.h
The header used GL types like GLenum without including gl through
epoxy.
8 years ago
Martin Gräßlin 14730d1f7c [wayland] Place transient windows every time they are shown
The parent window might have moved, they should always be placed
according to their placement hint.

Reviewed-By: bshah
8 years ago
Martin Gräßlin 981b312323 [Wayland] Make it possible to have internal windows decorated
Summary:
With this change KWin can create window decorations for internal windows.
Thus it's also possible to move internal windows and resize them which is
especially important for the debug console.

Reviewers: #kwin, #plasma_on_wayland, sebas

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2371
8 years ago
Martin Gräßlin 18397c1028 Merge branch 'Plasma/5.7' 8 years ago
Martin Gräßlin 921e27257c [wayland] Ensure that pointer enter event carries the correct coordinates
So far KWin's pointer surface enter handling was:
1. update fouced surface
2. update the global position

On client side this resulted in:
1. Enter with incorrect coordinates
2. move event to correct coordinate

With QtWayland this results in the case of multiple surfaces in one
application that Qt doesn't properly process the enter event and the
Window never getting pointer focus and not reacting on any pointer
input events.

The root problem is that the KWayland server API is not ideal for
supporting this situation. There is an API call for setting the global
position (which causes a pointer motion for the focused surface) and
an API call to update the focused surface. But a combination for both
is (still) missing.

This change addresses the problem by first unsetting the entered surface,
then updating the global position and afterwards setting the new surface.
Thus the position is correct. While this needs to be made better in
KWayland, this is an urgency bug fix to get the behavior correct and thus
first working around the API deficit and not first extending in KWayland.

Reviewed-By: bshah
8 years ago
Martin Gräßlin f31989f701 [autotest/intergration] Wait for pointer enter before simulating button press
The test LockScreenTest::testPointerButton and testPointerAxis both
fail on Neon's CI infrastructure. In order to make the test more reliable
the tests first wait for the pointer enter after unlock before simulating
another button press.
8 years ago
Martin Gräßlin a1490905e9 [autotest/intergration] Wait for pointer enter before simulating button press
The test LockScreenTest::testPointerButton and testPointerAxis both
fail on Neon's CI infrastructure. In order to make the test more reliable
the tests first wait for the pointer enter after unlock before simulating
another button press.
8 years ago
Martin Gräßlin 23bfa05f46 [autotests/integration] Try hardening destroyWaylandConnection
Destroying the connection is threaded. Only wait if the signal was
not already caught.
8 years ago
Martin Gräßlin a902ba8ea3 [platforms/x11] Support output removal in nested setup
Summary:
When closing a nested window kwin_wayland only terminates if the closed
window is the last output window. In a simulated multi-screen setup
closing a window results in the output being removed.

Test Plan: Closed windows, verified with xrandr

Reviewers: #kwin, #plasma_on_wayland

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2234
8 years ago
Martin Gräßlin e88a709f03 Raise minimum libinput version to 1.2
Now provided on build.kde.org, thus let's properly depend on it and
remove the ifdef.
8 years ago
Martin Gräßlin 8a83a6fef5 [libinput] Add support for gesture events
Summary:
Gesture events are swipe or pinch events on a touch pad.

This change implements basic support by:
 * wrapping them in LibInput::Event
 * processing them in LibInput::Connection and emitting
   dedicated signals
 * Forwarding them in InputRedirection to PointerInputRedirection
 * Support them in the internal input event filter
 * Printing debug information in DebugConsole

Further handling is not yet done. In future the following should be
implemented:
 * activating e.g. zoom and present windows on pinch/swipe gesture
 * forwarding non global gestures to KWayland

Note that forwarding to KWayland is not yet useful as QtWayland does
not yet have support for the unstable protocol. No Qt application could
make use of it yet. So for the moment just global gestures is the best
we can get.

Test Plan: Looked at output of DebugConsole when triggering gestures

Reviewers: #kwin, #plasma_on_wayland

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2359
8 years ago
l10n daemon script 88bd746694 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
8 years ago
l10n daemon script 50571b7921 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
8 years ago
Martin Gräßlin 44e37aacdf Set initial count of screens before calling Screens::init
Screens::init sets up a Qt::QueuedConnection connect from countChanged
to changed. This means that when first setting up the connection a
changed signal will be delivered in the next event cycle. This can mess
with other code. E.g. WaylandServer recreating outputs which can make
Xwayland crash or KWin internally crash.

To solve this problem we just need to make sure to set the output count
to the initial value before performing the init.

Reviewed-By: bshah
8 years ago