401 Commits

Author SHA1 Message Date
Kai Uwe Broulik
3ad4798ca6 [AppletQuickItem] Only set QtQuick Controls 1 style once per engine
The style is global per engine, there's no need to set it for every applet created
as the engines are shared.
Since this entire thing is just a hack, just setting a dynamic property to identify
that we've set a style is valid imho.
Also turn it into a plain QtObject since we don't need a fully-fledged Item.

Differential Revision: https://phabricator.kde.org/D4362
2017-12-05 23:35:07 +01:00
Eike Hein
78f83f5c77 Don't set a window icon in Plasma::Dialog
Summary:
Setting a window icon is costly enough to be worth avoiding when it's
not actually needed.

This is a resurrection of David's old patch:

https://git.reviewboard.kde.org/r/128484/

The concerns in the old discussion that led to its rejection are no
longer valid today: In the meantime we implemented a way for apps to
announce their .desktop file in a window hint, which KWin (and libtm)
will fall back to to look up an icon if not set. As plasmashell does
this, we can drop the setIcon call here and won't regress.

Test Plan:
The pinned systray popup dialog still gets the Plasma icon in the
Present Windows effect.

Reviewers: #plasma, #frameworks, davidedmundson, graesslin

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9209
2017-12-06 02:28:47 +09:00
Aleix Pol
1f9b5ed657 Performance
Summary:
Remove splitting + joining of a string just to remove the beginning of a
string.
Remove double look-up.
Solves Clazy warnings

Reviewers: #frameworks, #plasma, hein

Reviewed By: #plasma, hein

Subscribers: hein, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9109
2017-12-02 16:22:03 +01:00
Aleix Pol
b8b8a69fd1 Remove implicit string casting
Summary: Follow the KF5 guidelines

Test Plan: Plasma shell starts

Reviewers: #plasma, #frameworks, sebas

Reviewed By: #plasma, sebas

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D9108
2017-12-02 15:44:14 +01:00
Kai Uwe Broulik
cfcf8a61d5 [Dialog] Use KWindowSystem::isPlatformX11()
Rather than doing a string comparison and doing it every time

Differential Revision: https://phabricator.kde.org/D9105
2017-12-02 12:54:48 +01:00
Kai Uwe Broulik
b6b81c67b3 Use setSize() instead of setProperty width and height
We know we have a QQuickItem so we can just use its methods directly and then also use setSize
which does both at once, saving intermediate signal emission and potential re-layouting

Differential Revision: https://phabricator.kde.org/D9068
2017-11-30 14:18:06 +01:00
Montel Laurent
5d9aa6816f We depend against 5.7 2017-11-29 21:10:48 +01:00
David Faure
1d01cd4393 API docs: add deprecation notice found in the git log 2017-11-23 21:48:41 +01:00
Bhushan Shah
0f0b544992 Fix the cmake configuration
It should use find_dependency and not find_package.
2017-11-23 20:29:52 +05:30
Jonathan Riddell
945124d6d4 find Plasma config before using it, neon lintcmake https://build.neon.kde.org/job/xenial_unstable_frameworks_plasma-framework_lintcmake/99/testReport/libkf5plasma-dev/KF5PlasmaQuick/find_package/ 2017-11-23 13:25:42 +00:00
Martin Flöser
ecd00a565a Don't position a Dialog if it's of type OSD
Summary:
The OSDs are positioned by the Wayland compositor. This fixed the issue
found in D8268.

Reviewers: #frameworks, #plasma

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D8304
2017-10-15 10:09:19 +02:00
Kai Uwe Broulik
a3b61706a7 [ConfigModel] Guard against adding a null ConfigCategory
Previously this method wasn't accessible from QML but now it is, so let's not crash then.
2017-08-31 14:32:33 +02:00
Kai Uwe Broulik
11e416bea6 [ConfigModel] Allow programmatically adding and removing ConfigCategory
The appendCategory(ConfigCategory*) allows to add a category created by e.g. an Instantiator
that can use bindings rather than fixed arguments.
The removeCategory methods allow to remove a category when e.g. the model in an Instantiator resets.

CCBUG: 372090

Differential Revision: https://phabricator.kde.org/D7602
2017-08-31 14:29:05 +02:00
Marco Martin
ac24340877 Force Plasma style for QQC2 in applets
Summary:
using the qml url interceptor, rewrite imports in order
to load always the plasma styled qqc2 controls in plasmoids
and plasma views. As is per-engine, is possible to load
controls with qstyle theme in configuration dialogs
and plasma style in plasmoids.

Note: this replaces just the style org.kde.desktop
to Plasma and not every style (so with Material
set as QT_QUICK_CONTROLS_STYLE environment variable
plasma would load controls with material style) because
we can control both org.kde.desktop and Plasma styles:
they must have the same subdirectories as unlike files,
their existence is checked before the rewrite (in our case,
 "private"), so in order to work they must exist in both
styles

Test Plan:
a qqc2 button in a plasmoid has the plasma style, in
a config dialog has the qwidget style. rewrite works
only from org.kde.desktop to Plasma and not from other
styles, due to the existence of the "private" subdirectory

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6964
2017-08-25 11:36:55 +02:00
David Edmundson
a968892ba9 Guard failed testItem creation
Summary: createObjectFromSource can return a null on error. This needs guarding.

Reviewers: #plasma, mart

Reviewed By: #plasma, mart

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D7532
2017-08-25 10:26:15 +01:00
Marco Martin
47a9cd23b3 fix check 2017-08-07 17:18:45 +02:00
Marco Martin
0c27df529d ignore spurious resize events to empty sizes
Summary:
on multiscreen systems, the notification dialog gets resized to 0x0
right after componentcomplete by someone else (either kwin, notification
 applet  or Qt code) causing 382340, resizing a window to a null size is not correct anyways
and should never happen.
with this, all other resize events are correct and notifications are ok on multiscreen
systems

BUG:382340

Test Plan:
system with primary monitor and panel in the external monitor
at the right of a panel, notifications are fine

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, broulik, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D7127
2017-08-07 16:06:04 +02:00
David Edmundson
a0e5bb3ea7 Don't perform wayland specific fixes when on X
Summary:
fd2e850156ac7aa9c9dc2cf46652b2a1f1fc3a07 introduces some behaviour
changes that affect X even though they should be only Wayland related.

BUG: 381130

Reviewers: #plasma

Subscribers: graesslin, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6776
2017-07-19 15:22:18 +01:00
Kai Uwe Broulik
a19701c252 [Plasma Dialog] Fix flag conditions
The code wants to check whether we're not a tooltip. This wasn't done properly and didn't work
when other flags were present.

Differential Revision: https://phabricator.kde.org/D6554
2017-07-10 11:55:27 +02:00
Luca Beltrame
cf79873de6 Revert "Don't list KF5::WindowSystem in public libraries"
PlasmaQuick::Dialog::WindowType uses KWindowSystem's API, so removing
it from the list of the public libraries causes compilation issues in
projects that depend on plasma-framework (such as plasma-desktop) which
no longer find KWindowSystem's includes.

This reverts commit f8de13c67421e0fec216e9d471266d26be94b22e.

CCMAIL: kde@davidedmundson.co.uk
2017-07-05 09:18:49 +02:00
David Edmundson
f8de13c674 Don't list KF5::WindowSystem in public libraries
Summary: We don't use it in public API

Reviewers: #plasma

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6495
2017-07-04 07:57:08 +01:00
Marco Martin
f0cc90e45d fix apidocs 2017-07-03 16:20:46 +02:00
Bhushan Shah
f43938f4c2 Use #if instead of #ifdef
Fixes previous attempt to unbreak the build on Windows
2017-06-25 10:39:53 +05:30
Bhushan Shah
e3ffa8d8fe Fix the build without wayland/kwayland
This fixes the build of plasma-framework on KDE CI. Without this it will
error out as,

dialog.cpp(309): error C2065: 'shellSurface': undeclared identifier
dialog.cpp(310): error C2065: 'shellSurface': undeclared identifier
dialog.cpp(310): error C2227: left of '->setPosition' must point to
class/struct/union/generic type

Signed-off-by: Bhushan Shah <bhush94@gmail.com>
2017-06-25 10:29:28 +05:30
Marco Martin
eab4aa9909 Make sure size is final after showEvent
Summary:
* make sure after a showevent the size is final and the
dialog can be safely repositioned.
* set mainItem visible in :setVisible() so that is executed before showEvent:
   resizing windows in their show event is definitely not enough, causes events to arrive to
   reset to the old geometry in race with the setgeometry done there, don't know yet
   if it's the qpa, qwindow, or the windowmanager
* make synctomaintem and updatelayoutparameters working even if
the dialog is not visible as we need to resize beforehand
* move the plasmasurface window also in the show event as if there was no moveevent
  after an hide/show, its position would be resetted to 0,0

Test Plan:
current dialog users behave the same (like pre-D6216 notifications applet), tests still pass
notifications applet reworked to use this works as expected

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: sebas, hein, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6215
2017-06-21 13:29:26 +02:00
David Edmundson
4a525f68bd Revert "Make every applet its own focus scope"
Even though this change is probably technically correct, it breaks
things in workspace which aren't really setting focus properly.

Better to revert now and merge again later when things work.

This reverts commit e65d7b98be3fbf0db148ded1cdf57a007e83c665.
2017-06-12 21:43:52 +01:00
David Edmundson
b0e8ea29fa Set Containments to have focus within the view
Summary:
Now that applets are their own focus scope (which makes sense) we've
also made containments their own focus scope.

We therefore need to also say the containment FocusScope has the focus
within the view.

BUG: 381124

Test Plan:
Renamed something in folderview
Used cursor nav

Reviewers: #plasma

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6192
2017-06-12 15:22:36 +01:00
David Edmundson
e65d7b98be Make every applet its own focus scope
Summary:
Like Loaders an applet should be a focus scope. It allows an applet to
set an item to have focus which will then have activeFocus when that
applet gets focus.

Also makes it easy to test if any item within the plasmoid has
activeFocus.

Test Plan:
Keyboard nav in kicker/klipper still work
Added opacity: Plasmoid.activeFocus ? 1 : 0 in an applet and it worked
as expected

Reviewers: #plasma

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6152
2017-06-08 11:27:52 +01:00
Aleix Pol
563011436d Port a bunch of classes away from Plasma::Package
Summary: Ported away some classes, removes many unneeded casts that happen when starting.

Test Plan: Tests still pass, plasma starts properly

Reviewers: #frameworks, #plasma, mart

Reviewed By: #plasma, mart

Subscribers: davidedmundson, mart, plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D6041
2017-06-06 15:11:25 +02:00
Allen Winter
6c03c15c08 src/plasmaquick/dialog.cpp - fix build without kwayland 2017-06-05 10:02:44 -04:00
Friedrich W. H. Kossebau
68ed01638c API dox: Use doxygen notation to have comments used 2017-05-26 19:55:25 +02:00
Marco Martin
32e67a591e minimize dialog resizes/moves
Summary:
take into account size hints also when adjusting with synctomainitemsize
which sometimes has to be executed right before adjusting from the layout
hints, giving one wrong resize

introduce geometryUpdatesBlocked, which stops the dialog
from syncing which is useful when both visual parent and item
contents gets updated in one go (the tooltip) it is not
yet exported to qml and it shouldn't as is dangerous, but
kicker may make use of it between changing the submenu model and
the visualparent

alternative implementations may be:
* a method that takes both main item and visual parent
* delaying with a timer setGeometry (ouch)
this part can also be left behind for now and see if the rest is good enough

Test Plan:
no visual glitches visible anymore in wayland when moving the tooltip
in the taskbar, x11 ok too

Reviewers: #plasma, hein, davidedmundson

Reviewed By: #plasma, hein, davidedmundson

Subscribers: broulik, davidedmundson, plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D5912
2017-05-25 11:21:50 +02:00
Marco Martin
fd2e850156 recreate plasmashellsurf on exposed, destoy on hidden
Summary:
every time the window gets shown the wayland surfaces
get created, when hidden, they get destroyed

showevent is too early for it as they aren't there yet,
use :Exposed instead, but only the first time when the surface
isn't there yet

Test Plan:
popup applets always have correct blur in a wayland
session

Reviewers: #plasma, #plasma_on_wayland, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel, #frameworks

Tags: #frameworks, #plasma_on_wayland

Differential Revision: https://phabricator.kde.org/D5745
2017-05-12 16:58:21 +02:00
Kai Uwe Broulik
dfbf2c1c30 Port away from setRoleNames where easily possible
It is deprecated. Instead re-implement roleNames().
Done in places where only static roles were used.

Differential Revision: https://phabricator.kde.org/D4891
2017-03-06 13:36:17 +01:00
Aleix Pol
3a9fc22724 Small cleanups
Summary: Move implementation to cpp file, port away from deprecated API.

Reviewers: #frameworks, #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: plasma-devel

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4931
2017-03-06 00:07:52 +01:00
Marco Martin
b99a87a320 set default hints when repr doesn't export Layout.*
when we go from full to compact repr, if the compact
doesn't export a Layout attached property, the hints shouldn't
remain those of the full repr, so reset to default values

BUG:377153
Reviewed-by:Eike Hein
2017-03-03 17:52:41 +01:00
Marco Martin
fba9e9e151 possible to set expanded=false for a containment
Summary:
it will still have no visible effect, but
is possible to read and write the property if
containments make use of it (the systray uses it for
opening/closing its popup)

Test Plan: setting expanded : false to containments doesn't break them

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4866
2017-03-03 14:31:07 +01:00
Kai Uwe Broulik
1934475e48 [ConfigView] Honor KIOSK Control Module restrictions
Differential Revision: https://phabricator.kde.org/D4679
2017-02-24 12:01:06 +01:00
Kai Uwe Broulik
5becf5bc11 [ConfigModel] Emit dataChanged when a ConfigCategory changes
Differential Revision: https://phabricator.kde.org/D4543
2017-02-10 12:24:59 +01:00
David Rosca
d2c7435b1b Dialog: Hide when focus changes to ConfigView with hideOnWindowDeactivate
Differential Revision: https://phabricator.kde.org/D4282
2017-01-26 15:25:14 +01:00
Kevin Funk
f8a7b418d5 Prefer nullptr over Q_NULLPTR 2017-01-16 18:17:34 +01:00
Albert Astals Cid
5c46e32993 Q_ENUMS -> Q_ENUM and Q_FLAGS -> Q_FLAG
REVIEW: 129826
2017-01-14 01:06:28 +01:00
Kai Uwe Broulik
57d58e371d Break from loop once we've found a Layout
There's no point in going on.
I already fixed that in Applet a while ago but forgot that in Dialog and ConfigView.

Differential Revision: https://phabricator.kde.org/D4017
2017-01-09 17:10:27 +01:00
David Edmundson
dcd81c6be8 Don't register ConfigModel twice
Test Plan: Opened config

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: plasma-devel, #frameworks

Tags: #plasma, #frameworks

Differential Revision: https://phabricator.kde.org/D4010
2017-01-08 20:22:29 +00:00
Kai Uwe Broulik
4b55493568 [Dialog] Use setPosition / setSize instead of setting everything individually
Reduces the amount of unneccessary layouting done.

Differential Revision: https://phabricator.kde.org/D4009
2017-01-08 16:14:38 +01:00
Sven Brauch
c6132f87c4 GIT_SILENT Fix ECM warning: use CMakePackageConfigHelpers instead of ECM variant 2017-01-03 16:23:41 +01:00
Michail Vourlakos
6aedda94b2 Fix #374127 misplacement of popups from dock wins
--the dialogs shown from dock type windows when
the dock uses masking are placed far from the
the element that triggered them. This patch
fixes this bug and provide also an auto test.
2016-12-30 01:07:43 +02:00
David Edmundson
2affb1ab56 Recheck which representation we should using in setPreferredRepresentation
Summary:
Appmenu quite neatly has a config option for which should be the
preferred representation, which is needed as both things are quite
viable in a panel and can't be done automatically.

AppletQuickItem needs to update which representation to use when this is
set at runtime. We already check on every single geometry change, so
one extra check won't have a huge impact.

Test Plan:
Appmenu changes dynamically
All other applets (both compact and normal) still seem fine

Reviewers: #plasma, mart

Reviewed By: mart

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3794
2016-12-23 13:28:32 +00:00
Kai Uwe Broulik
eb81b3f162 [AppletQuickItem] Support launch error message
Now that we can have C++ applet we can make use of setLaunchErrorMessage
to communicate a fatal error in the applet initialization.

Differential Revision: https://phabricator.kde.org/D3725
2016-12-19 13:48:52 +01:00
Marco Martin
62b0865492 make sure OSD doesn't have Dialog flag
an OSD can't be a Dialog, as qt xcb would attempt to set a
transient parent for it, same as panels, which in turn will
make for invisible osd on autohide panels

Change-Id: I5afea6d4bfa0bfee8b3453e78a1c214a3a0894ec
reviewed-by: Martin Graesslin <mgraesslin@kde.org>
CCMAIL:distributions@kde.org
BUG:370433
2016-11-02 11:56:40 +01:00