358 Commits

Author SHA1 Message Date
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
Roman Gilg
65706d3878 New bool to use activated signal as toggle of expanded
The launcher applets couldn't be closed with Meta alone and on Wayland
in general by any global shortcut, since we used for that the focusOutEvent
triggered only on X and only on global shortcuts (on default Alt+F1).

This patch introduces the new bool activationTogglesExpanded, which allowes
QML applets to decide if they wish to use the activated signal also to end
their expanded state.

The default value is false, in order to not break any legacy applets.

REVIEW: 129204
BUG: 367685
2016-10-19 18:51:15 +02:00
Eike Hein
91eb0749ed Revert "port all output to QCDebug/QCWarning"
This reverts commit acd7ab7815a2a1f9a65f1dbf2cb53123c86da58b.

This broke the build for me and on CI:
/home/jenkins/sources/plasma-framework/kf5-qt5/src/declarativeimports/core/datamodel.cpp:214:9:
error: 'LOG_PLASMACORE' was not declared in this scope

CCMAIL:notmart@gmail.com
2016-10-19 03:16:16 +09:00
Marco Martin
acd7ab7815 port all output to QCDebug/QCWarning
port every terminal output to appropriate QCdebug/QCwarning,
each different binary has its own logging category now, so
it's possible to enable/disable them selectively.
this should also make plasmashell a bit more quiet on
terminal by default

Change-Id: Ic0b26364f988935e990c6988f8f9375b7c9bf838
REVIEW:129210
2016-10-17 18:18:04 +02:00
Marco Martin
2b68e07658 make it actually build without kwayland
Change-Id: I864c771a2db7f3cdfb124729c5ae8739d2eec310
2016-10-17 14:25:50 +02:00
Aleix Pol Gonzalez
9e54853ac8 Use less deprecated API
Makes it easier to look at the compilation output.

REVIEW: 129150
2016-10-17 13:36:51 +02:00
Marco Martin
b0a5bc09ef use kwayland for shadows and dialog positioning
use plasmashell interface for moving the dialog,
use kwayland as well for shadows.

this is supposed to replace the waylanddialogfilter
hack in plasmashell.

REVIEW:129148
2016-10-11 17:21:57 +02:00
Aleix Pol
ba9a8a16ab Fix loading plasmoids by absolute path
We were not looking into the plugin directory when figuring out the applet
path.
Fixes configmodeltest

REVIEW: 129143
2016-10-11 15:22:41 +02:00
Marco Martin
014979d8bf Revert "Fix loading plasmoids by absolute path"
This reverts commit 2ed819f37dd44cc6c4a24624f76938347ceb8e95.

panel loading was completely broken, the patch idea was fine,
but has to be redone and tested better.

CCMAIL:aleixpol@kde.org
2016-10-10 23:31:37 +02:00
Aleix Pol
2ed819f37d Fix loading plasmoids by absolute path
We were not looking into the plugin directory when figuring out the applet
path when it's load from an absolute path.
Fixes configmodeltest

REVIEW: 129101
2016-10-10 21:30:02 +02:00
Aleix Pol Gonzalez
4a9d5cff2a Port some few remaining uses of pluginInfo to pluginMetaData
I forgot to do it in the previous RR.

REVIEW: 129100
2016-10-10 18:02:20 +02:00
Aleix Pol
bd970141ce Simplify plugin construction by relying exclusively on KPluginMetaData
REVIEW: 129057
2016-10-04 23:56:17 +02:00
Marco Martin
8f10b73cc1 resize the view just after setting the containment
when the view is in SizeRootObjectToView mode, the root
object is resized in the event handler, that is too late at startup.
resize the root object right after having announced
the new containment, so the view subclass can have
the view resized to the proper size beforehand,
removing an useless containment graphicsobject resize.

REVIEW:128915
2016-09-15 13:05:24 +02:00
Christophe Giboudeaux
8f980541f5 Don't install files twice. 2016-09-10 14:14:43 +02:00
Kai Uwe Broulik
dd5d07afec [AppletQuickItem] Break from loop when we found a layout
There's no point in going on once we found a layout.

REVIEW: 128851
2016-09-06 20:43:54 +02:00
Kai Uwe Broulik
1d66098e50 [ContainmentView] Show panels when UI becomes ready
The code already had logic in there but since UI ready is usually emitted later
the client (in this case plasmashell) had to manually show the panels and would
usually show them when they're not ready yet leading to visual glitches on startup.

REVIEW: 128708
2016-08-18 13:43:29 +02:00
Marco Martin
f1699fe543 use QQuickViewSharedEngine::setTranslationDomain
setting the domain by just using kdeclarative would lead to
setting the domain on the wrong QQmlContext,
sometimes overwriting it on the global context, causing
unexpected crashes deep in qml
BUG:361513
reviewed-by: Ivan Čukić <ivan.cukic@kde.org>
2016-08-18 12:39:35 +02:00
Aleix Pol
3ba6efa44c Fix build in build.kde.org 2016-08-04 21:26:52 +02:00
Aleix Pol
67d882037c Define Plasma PackageStructure as regular KPackage PackageStructure plugins
This way we can use kpackagetool5 against them (see RR 128590).

REVIEW: 128596
2016-08-04 19:23:59 +02:00
Eike Hein
433b6794fe Add Qt::Dialog to default flags to make QXcbWindow::isTransient() happy.
Panel popup dialogs along with other applications of Plasma::Dialog
(e.g. Kicker's submenus) currently don't correctly set WM_TRANSIENT_FOR
to the id of their parent window on X11. This causes them to interact
badly with auto-hide panels which do not set struts, e.g. Kicker's
submenus open behind the panel.

Internally, Dialog makes calls to QWindow::setFlags when its window
type is "Normal" (the default) and otherwise uses KWindowSystem's
setType. (Kicker's subclass, SubMenu, does an additional
KWindowSystem::setType call for NET::Menu). Neither CompactApplet
nor Kicker change their Dialog's 'type' property to anything else,
so their dialogs are "Normal", thus going the setFlags route with
no setType calls.

Dialog also sets its transient parent to the window the visualParent
item is inside of.

Now here is where things break down: QXcbWindow will update
WM_TRANSIENT_PARENT for in show(), but only when an inline function
called isTransient returns true. isTransient decides this based on
window type, which is determined from the flags set with
QWindow::setFlags. Calls to KWindowSystem::setType would have no
bearing on this; there seems to be no mapping back from external
state. This is why setting Dialog.type to e.g. "DialogWindow" does
nothing.

This patch takes the route of adding Qt::Dialog to the starting
flags - after all Dialog is a dialog. That means isTransient()
will consider the window to be a transient and those
setTransientParent calls Dialog does will not be ignored. In the
case of CompactApplet, no further calls to KWS::setType are done;
Kicker continues to call it with NET::Menu to get desired window
manager behavior.

In light testing everything still seems too work, with the added
benefit of fixing:
BUG:366278

That said, the weird mess of setFlags and setType and state in the
windowing system vs. Qt is horrible and sad.

REVIEW:128571
2016-08-02 19:20:33 +09:00
Eike Hein
2c6dacea38 Fix the infamous 'dialogs show up on the Task Manager' bug once more.
- Initially set state (and type, and flags) in response to PlatformSurfaceCreated.
  We know reliably this will run before the window is mapped.

- Drop the comment about removing setState() form showEvent handler, as
  we need it to avoid state loss in this scenario:
  <mgraesslin> the window gets mapped first time: everything is fine
  <mgraesslin> window gets unmapped: kwin removes the state as per spec
  <mgraesslin> qt gets change event and removes the states it doesn't care about
  <mgraesslin> qt maps window again and sets states
  <mgraesslin> we lost the state
  <mgraesslin> which means we need to set the state again from our side before(!) Qt sets it
  <mgraesslin> and before Qt maps the window
2016-07-15 19:40:37 +09:00
David Edmundson
fb3e8d5fc5 Make use of QQuickItem::setSize
Even though QQuickItem only has a width and height accessor there is a
usable public setSize method.

This gets rid of a lot of potential re-evaluation as internal geometry
is updated before widthChanged is emitted.

REVIEW: 128316
2016-07-04 11:06:44 +01:00
Marco Martin
746f57713c guard against invalid applets
an applet can be present but being one that failed to load
therefore with an invalid kplugininfo, which can cause asserts around

BUG:364281
2016-06-15 12:44:04 +02:00
Kai Uwe Broulik
e159643ec4 [DialogShadows] Cache access to QX11Info::display()
It's called several times and even in a loop.

REVIEW: 127893
2016-05-11 19:58:55 +02:00
David Rosca
f336f80039 ConfigModel: Don't try to resolve empty source path from package
ConfigModel may contain ConfigCategory for both QML pages and KCM pages.
The source property will be empty for KCM pages.  This fixes correctly
returning empty source for KCM pages.
Also return the same value from get().

REVIEW: 127702
2016-05-04 17:34:02 +02:00
Ivan Čukić
8d3ec9589c Properly guarding against a null applet
- The code used applet and d->applet which pointed to the same thing
- Some places checked dereferening of applet, while the last one did not
2016-04-05 09:49:56 +02:00
David Rosca
28b4400da8 Dialog: Set SkipTaskbar/Pager states before showing window
This sets the states before showing the window and is a proper fix
for the linked bug.

Needs e4cea305ed2ba3c9f580bf9d16c59a1048af0e8a from qtbase - Qt 5.6.1

CCBUG: 332024
REVIEW: 127422
2016-03-19 09:02:43 +01:00
Aleix Pol
0e9976afb1 Make sure PlasmaQuick export file is properly found
Uses the subdirectories structure as exported by the project.

REVIEW: 127405
2016-03-17 13:33:19 +01:00
Aleix Pol
c23f2415bb Make it possible for an applet to offer a test object
Makes it possible for plasmoids to test themselves in the different shells
by providing API to extract the object that will test the plasmoid
instance.

REVIEW: 127345
2016-03-16 12:32:25 +01:00
David Edmundson
23d020c797 Redo workaround for plasma dialogs flickering
Reviewed-by: David Rosca
2016-03-15 16:48:39 +00:00
David Edmundson
a9c1427eb1 Revert "Fix taskbar flicking when opening Plasma popups"
Causes a problem I missed.
2016-03-15 16:16:14 +00:00
David Edmundson
42e924e7f6 Fix taskbar flicking when opening Plasma popups
When we show a Qt window it resets all wm_states, including the
SKIP_TASKBAR state that Qt doesn't support see
QXcbWindow::setNetWmStates

In order to set the flag we need to do it after Qt has mapped the
window.

This was previously done using ExposeEvent which will happen after show,
but by it being a separate event the task manager will get notified in
the meantime.

By merging into the same event we can make sure the flag is set before
the task manager processes it.

BUG: 332024
REVIEW: 127374
2016-03-15 14:34:20 +00:00
Marco Martin
12ea79b341 Merge branch 'mart/customShell'
Conflicts:
	examples/CMakeLists.txt
	src/plasma/pluginloader.cpp
2016-03-08 15:38:31 +01:00
Eike Hein
ce4f7c1b79 Fix logic. 2016-03-01 17:41:03 +09:00
Eike Hein
3358c9eb9a Don't wipe window mask on every geometry change when compositing is active and no mask has been set.
Avoids an extra full repaint.
2016-03-01 17:27:33 +09:00
Aleix Pol
9f62532674 Fix most of Clazy warnings in plasma-framework
REVIEW: 126672
2016-02-29 00:13:41 +01:00
David Rosca
82e172cc9e AppletQuickItem: Fix finding own attached layout
Regression from 344dbeb938

BUG: 358849
REVIEW: 127073
2016-02-19 13:23:26 +01:00
Marco Martin
3ee612c2c7 remove the legacy applets filter
this list was done because some applets broke with
the new shared engine stuff.

since it's many workspace releases ago, unconditionally
use the single engine now.

REVIEW:126918
2016-02-09 11:06:30 +01:00
Marco Martin
1b2c1caf39 don't assume we find a corona
BUG:359026
Change-Id: Idfb18a02f6e1ae35b0b1722c24a784345438003d
2016-02-08 11:59:58 +01:00
David Rosca
f688c904a8 AppletQuickItem: Don't try to set initial size bigger than parent size
Trying to set initial size bigger than parent size only results
to item being resized down to fit in parent later.

REVIEW: 126822
BUG: 358200
2016-01-21 15:35:19 +01:00
David Rosca
11937533e8 Ignore check if just one part of size is zero in compactRepresentationCheck
When debugging the linked bug, it looks like when item's geometry change
eg. from 0x0 to 100x100, geometryChanged may be called twice, first with 100x0
and then finally with 100x100.
This was not issue before, because we used timer to call compactRepresentationCheck.
This changes compactRepresentationCheck so that it early returns also when just
one part of item's size is zero.

Fixes regression from 344dbeb938

REVIEW: 126778
BUG: 358039
2016-01-17 18:02:36 +01:00
Martin Klapetek
311cde3ba5 [plasmaquick/dialog] Don't use KWindowEffects for Notification window type
REVIEW: 126727
2016-01-13 14:36:16 -05:00
Kevin Ottens
46c555838c Deal properly with symlinks in path to packages
We receive the URL with all symlinks resolved, but internally the
pkgRoot kept unresolved symlinks preventing matches if there was a
symlink somewhere to get to the package.

REVIEW: 126562
2015-12-29 17:31:16 +01:00
David Rosca
344dbeb938 AppletQuickItem: Drop timer to create full representation
The timer only added 250ms delay before creating the full representation,
sometimes resulting in showing empty popup for a moment.

REVIEW: 126468
2015-12-22 15:46:00 +01:00