- 02 Jul, 2018 4 commits
-
-
Vlad Zahorodnii authored
Summary: Most likely, someone forgot to add `qAsConst`. Reviewers: #kwin, broulik Reviewed By: broulik Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13830
-
Vlad Zahorodnii authored
Test Plan: Ran `qdbus org.kde.KWin /KWin supportInformation` Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13837
-
Vlad Zahorodnii authored
Summary: Currently, type of the rotationDuration is std::chrono::milliseconds. std::chrono::milliseconds is an unregistered datatype so we can't really use it with Q_PROPERTY. Test Plan: Ran `qdbus org.kde.KWin /KWin supportInformation`. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13839
-
Vlad Zahorodnii authored
Reviewers: #kwin, mart Reviewed By: #kwin, mart Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13835
-
- 01 Jul, 2018 3 commits
-
-
Vlad Zahorodnii authored
Summary: Don't use raw loops, instead, use appropriate algorithm from STL to map a list of toplevels to a list of EffectWindow. Test Plan: Tested Cover switch, Flip switch, Dialog parent, and Dim inactive effect. They all still work. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13821
-
Vlad Zahorodnii authored
Summary: qDeleteAll can be used to delete values in QMap or QHash. Please notice that qDeleteAll calls `delete` only for values, not keys. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13822
-
Vlad Zahorodnii authored
Summary: Depends on D13740 Test Plan: Switched between virtual desktops, slide animation is still there. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13764
-
- 30 Jun, 2018 4 commits
-
-
Vlad Zahorodnii authored
Summary: Depends on D13740 Test Plan: "Activated" the desktop cube, animations still work. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13765
-
Vlad Zahorodnii authored
Summary: Depends on D13740 Test Plan: Minimized/Unminimized System Setting window, still works. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13761
-
Vlad Zahorodnii authored
Summary: Depends on D13740 Test Plan: Minimized/Unminimized System Setting window, still works. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13762
-
Vlad Zahorodnii authored
Summary: Most effects use QTimeLine in the following manner ```lang=cpp if (...) { m_timeline->setCurrentTime(m_timeline->currentTime() + time); } else { m_timeline->setCurrentTime(m_timeline->currentTime() - time); } ``` Because effects do not rely on a timer that QTimeLine has, they can't toggle direction of the QTimeLine, which makes somewhat harder to write effects. In some cases that's obvious what condition to use to figure out whether to add or subtract `time`, but there are cases when it's not. In addition to that, setCurrentTime allows to have negative currentTime, which in some cases causes bugs. And overall, the way effects use QTimeLine is really hack-ish. It makes more sense just to use an integer accumulator(like the Fall Apart effect is doing) than to use QTimeLine. Another problem with QTimeLine is that it's a QObject and some effects do ```lang=cpp class WindowInfo { public: ~WindowInfo(); QTimeLine *timeLine; }; WindowInfo::~WindowInfo() { delete timeLine; } // ... QHash<EffectWindow*, WindowInfo> m_windows; ``` which is unsafe. This change adds the TimeLine class. The TimeLine class is a timeline helper that designed specifically for needs of effects. Demo ```lang=cpp TimeLine timeLine(1000, TimeLine::Forward); timeLine.setEasingCurve(QEasingCurve::Linear); timeLine.value(); // 0.0 timeLine.running(); // false timeLine.done(); // false timeLine.update(420); timeLine.value(); // 0.42 timeLine.running(); // true timeLine.done(); // false timeLine.toggleDirection(); timeLine.value(); // 0.42 timeLine.running(); // true timeLine.done(); // false timeLine.update(100); timeLine.value(); // 0.32 timeLine.running(); // true timeLine.done(); // false timeLine.update(1000); timeLine.value(); // 0.0 timeLine.running(); // false timeLine.done(); // true ``` Test Plan: Ran tests. Reviewers: #kwin, davidedmundson, graesslin Reviewed By: #kwin, davidedmundson, graesslin Subscribers: romangg, graesslin, anthonyfieroni, davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13740
-
- 29 Jun, 2018 2 commits
-
-
Friedrich W. H. Kossebau authored
* QT_USE_FAST_OPERATOR_PLUS is subset of toplevel-set QT_USE_QSTRINGBUILDER * QT_USE_FAST_CONCATENATION got dropped pre-Qt5
-
Script Kiddy authored
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"
-
- 26 Jun, 2018 2 commits
-
-
Roman Gilg authored
Summary: This patch changes KWin's pointer constraining behavior by only allowing constraints if the surface has keyboard focus. In case the client activation state changes, it rechecks it. Test Plan: Manually with the pointer constraints test application and opening the launcher by pressing meta. Also amended autotest. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, davidedmundson, kwin Tags: #kwin Maniphest Tasks: T8923 Differential Revision: https://phabricator.kde.org/D13492
-
Script Kiddy authored
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"
-
- 24 Jun, 2018 6 commits
-
-
Vlad Zahorodnii authored
Summary: When windowClosed signal is emitted, effects can't distinguish managed windows from unmanaged windows(e.g. combo box popups, popup menus, etc). This leads to dirty hacks like IsXXXWindow. Also, there's a big chance that such hack can introduce more bugs and overall this makes harder to write/maintain effects. This change proposes to save value of managed property during construction of EffectWindow. So, its value is preserved with Deleted. Test Plan: Manually. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13690
-
Vlad Zahorodnii authored
Summary: Behaviour of some effects depends on presence of active fullscreen effect. For example, Dim Inactive effect brightens windows if there is an active fullscreen effect. If active fullscreen effect has been changed, these effects might need to do some setup work, e.g. schedule repainting, toggle direction of a timeline, etc. For what it's worth, because the Dim Inactive effect doesn't schedule repainting after leaving Desktop Grid, windows aren't dimmed back. One need to move mouse to trigger dimming. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13701
-
David Edmundson authored
-
David Edmundson authored
This reverts commit 275b7ee0. BUG: 395732
-
Script Kiddy authored
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"
-
Script Kiddy authored
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"
-
- 23 Jun, 2018 6 commits
-
-
David Edmundson authored
Test Plan: Hovered over decoration Looked super crystal clear Same physical size as when I hover over window contents (which had a buffer scale of 1) Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13608
-
David Edmundson authored
Summary: It will then be renderered appropriately when painting to the output buffer. Test Plan: Updated unit test, plus used with other relevant patches Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13606
-
David Edmundson authored
Summary: It's not a concept that makes sense with proper scaling. Cursor should be the big if you chose a big size, small if you choose a small size, regardless of what output it happens to be on. Test Plan: Set size to 0 Ran kwin Cursor size was fine Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13607
-
David Edmundson authored
Summary: We pass the buffer scale of the cursor through QImage::devicePixelRatio. When copying the cursor with QPainter use Qt's in-built functionality to handle resizing the cursor pixmap as necessary to match the screen. As we're now resizing the cursor, the hotspot needs translating from logical to device co-ordinates. Test Plan: Used with associated patches Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13605
-
David Edmundson authored
Test Plan: Ran kwin_wayland --windowed --scale2 Hovered over deco. Got massive and detailed cursor Hovered over a wayland client (Qt 5.11 not dev) Got a massive, but slightly blocky cursor Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13642
-
Vlad Zahorodnii authored
Summary: D9638 made docks to slide to "fix" the problem when switching to a virtual desktop that has a window in full screen mode: {F5615542} As it turns out, people don't like this kind of behaviour. Another problem with sliding of docks is that pager goes away. This change disables sliding of docks by default. One can enable sliding of docks by checking "Slide docks" checkbox in slide effect KCM. Yet, transition to/from virtual desktop with a window in full screen mode doesn't look great but that's somewhat acceptable: {F5915681} //(we don't see issues that are present in the video above because the new slide effect elevates docks if sliding of docks is disabled)// Test Plan: Switched between virtual desktops, the default panel didn't slide. Reviewers: #kwin, #plasma, #vdg, ngraham, graesslin Reviewed By: #kwin, #plasma, #vdg, ngraham, graesslin Subscribers: ngraham, graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13566
-
- 22 Jun, 2018 2 commits
-
-
Vlad Zahorodnii authored
Summary: EffectWindow has keepAbove property, but not keepBelow. This change adds keepBelow property as a counterpart to keepAbove. Test Plan: Manually. Reviewers: #kwin, mart Reviewed By: #kwin, mart Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13650
-
Vlad Zahorodnii authored
Summary: ### keepAbove Some effects(e.g. Dim Inactive) can take keep above state of a window into account when they are making decision whether to operate on it. Because Deleted doesn't expose keepAbove property, it will be always `true`, which is wrong. ### keepBelow This property was added as a counterpart to keepAbove. ### caption That's mostly for debugging purposes, e.g. ```lang=cpp void CoolEffect::windowClosed(EffectWindow *w) { qDebug() << w->caption() << "has been closed"; qDebug() << "keep above:" << w->keepAbove(); } ``` Test Plan: Manually. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13649
-
- 21 Jun, 2018 2 commits
-
-
Script Kiddy authored
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"
-
David Edmundson authored
-
- 20 Jun, 2018 1 commit
-
-
David Edmundson authored
Summary: Workaround QtBug-68997 Deleting of a RenderControl/render controlled window triggers deletion of other queued deleted items, putting KWin in a corrupt state. See Qt bug report. Deleting this queued means we know we don't have anything else going on in the stack which should make this somewhat safe. BUG: 395346 Test Plan: Couldn't reproduce original crash. Based purely on the incomplete backtrace and code reading Set an Aurorae theme. Closed some windows. Things still worked as before Reviewers: #kwin, #plasma, mart Reviewed By: #kwin, #plasma, mart Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13614
-
- 19 Jun, 2018 4 commits
-
-
Vlad Zahorodnii authored
Summary: Currently, effects like Maximize, Slide Back have problems with setting WindowForceBlurRole. They store previous state of WindowForceBlurRole. This is wrong. Instead they should either ignore previous state of WindowForceBlur or refcount forced role. There's no need for refcounting right now. For example, if several effects force blur or background contrast, they are most likely in a conflict. Please notice that the Desktop Grid effect uses the Present Windows effect only to calculate transformations. Some other problems with the code that sets WindowForceBlurRole: * Maximize effect stores previous state of WindowForceBlurRole only for one window. It ignores the fact that there could be several active maximize animations; * Desktop Grid/Present Windows/Slide back don't clean after themselves. So, after using those effects for good amount of times, memory usage will bump. Test Plan: * Enabled blur for Konsole * Maximized Konsole * Activated Present Windows * Activated Desktop Grid * Raised another window(to trigger Slide Back) Reviewers: #kwin, fredrik Reviewed By: fredrik Subscribers: fredrik, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13479
-
Jonathan Esk-Riddell authored
GIT_SILENT
-
Vlad Zahorodnii authored
Summary: Some people may not like the sliding of desktop background. Add corresponding option to disable the sliding of desktop background. By disabling the sliding of desktop background and docks, one can get old slide effect. {F5912713, layout=center, size=full} Test Plan: * Unchecked "Slide desktop background" checkbox, switched desktop; * Checked "Slide desktop background" checkbox, switched desktop. Reviewers: #kwin, #plasma, #vdg, mart Reviewed By: #kwin, #plasma, #vdg, mart Subscribers: romangg, abetts, ngraham, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13542
-
Script Kiddy authored
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"
-
- 18 Jun, 2018 4 commits
-
-
[libkwineffects/kwinglutils] Calculate correct srcY0 and srcY1 in GLRenderTarget::blitFromFramebuffer Summary: There are several spaces that have to be considered in `GLRenderTarget::blitFromFramebuffer`: * KWin logical space: the origin is located at the global top-left corner * display space: the origin is located at the top-left corner of monitor/display * OpenGL screen space: the origin is located at the bottom-left corner of monitor/display Given `s`, which is in the KWin logical space, we have to transform it to the display space, then to the OpenGL screen space: * KWin logical space -> display space: `y' = s.y() - s_virtualScreenGeometry.y()` * display space -> OpenGL screen space: `y'' = s_virtualScreenGeometry.height() - y'` Overall, `srcY0` and `srcY1` should be written as follows: ``` srcY0 = s_virtualScreenGeometry.height() - (s.y() - s_virtualScreenGeometry.y() + s.height()) srcY1 = s_virtualScreenGeometry.height() - (s.y() - s_virtualScreenGeometry.y()) ``` Test Plan: Tweak background contrast effect to use GLRenderTarget::blitFromFramebuffer ``` diff --git a/effects/backgroundcontrast/contrast.cpp b/effects/backgroundcontrast/contrast.cpp index f920fcd88..5247d83b8 100644 --- a/effects/backgroundcontrast/contrast.cpp +++ b/effects/backgroundcontrast/contrast.cpp @@ -447,11 +447,10 @@ void ContrastEffect::doContrast(EffectWindow *w, const QRegion& shape, const QRe GLTexture scratch(GL_RGBA8, r.width() * scale, r.height() * scale); scratch.setFilter(GL_LINEAR); scratch.setWrapMode(GL_CLAMP_TO_EDGE); - scratch.bind(); - const QRect sg = GLRenderTarget::virtualScreenGeometry(); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, (r.x() - sg.x()) * scale, (sg.height() - sg.y() - r.y() - r.height()) * scale, - scratch.width(), scratch.height()); + GLRenderTarget scratchTarget(scratch); + scratchTarget.blitFromFramebuffer(r); + scratch.bind(); // Draw the texture on the offscreen framebuffer object, while blurring it horizontally ``` GLRenderTarget::blitFromFramebuffer without this change: {F5817883, layout=center, size=full} Reviewers: #kwin, fredrik, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kpiwowarski, davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D12452
-
Summary: On wayland blur on secondary monitor would not render correctly. BUG: 393723 Depends on D12452 Test Plan: - use more than one output - log in in a wayland session - open a transparent window (for example: Konsole with transparent and blur enabled profile) - drag the window to another screen - blurs the content under the window corretly Reviewers: #kwin, graesslin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: apol, zzag, davidedmundson, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D12678
-
David Edmundson authored
-
Summary: In D12678 blur was changed to use `blitFromFramebuffer()` instead of `glCopyTexSubImage2D()` Now it checks if the GPU supports it. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D13246
-