requestActivate() doesn't raise the window. The same had been done in PanelView but not
for DesktopView. This way a minimized config dialog (e.g. you want look at the wallpaper
in its full glory) will be raised if you open it again through the applet/desktop context menu.
CHANGELOG: A minimized config dialog on the desktop (e.g. wallpaper settings) will now be un-minimized when trying to open it multiple times
Reviewed-By: David Edmundson
Use iterators and their key() and value() methods.
This codepath is hit 200+ times on plasmashell startup for me
Before: 420,000 ns
After: 200,000 ns
Differential Revision: https://phabricator.kde.org/D4349
Summary:
isOutputRedundant badly failed when two screens had
the exact same geometry (that should be, the base
case for "cloning" screens.
now the logic is:
a screen is redundant if:
* its geometry is contained in another one
* if their resolutions are different, the "biggest" one wins
* if they have the same geometry, the one with the lowest id wins (arbitrary, but gives reproducible behavior and makes the primary
BUG:375507
Test Plan:
tested with two screens:
* overlapping, same resolution: the lowest id (0, the primary) wins, the other one doesn't get a view
* overlapping, different resolutions: the biggest one wins
* not overlapping: both get a view
Reviewers: sebas, #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4309
Summary:
isOutputRedundant badly failed when two screens had
the exact same geometry (that should be, the base
case for "cloning" screens.
now the logic is:
a screen is redundant if:
* its geometry is contained in another one
* if their resolutions are different, the "biggest" one wins
* if they have the same geometry, the one with the lowest id wins (arbitrary, but gives reproducible behavior and makes the primary
BUG:375507
Test Plan:
tested with two screens:
* overlapping, same resolution: the lowest id (0, the primary) wins, the other one doesn't get a view
* overlapping, different resolutions: the biggest one wins
* not overlapping: both get a view
Reviewers: sebas, #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4309
Summary:
isOutputRedundant badly failed when two screens had
the exact same geometry (that should be, the base
case for "cloning" screens.
now the logic is:
a screen is redundant if:
* its geometry is contained in another one
* if their resolutions are different, the "biggest" one wins
* if they have the same geometry, the one with the lowest id wins (arbitrary, but gives reproducible behavior and makes the primary
BUG:375507
Test Plan:
tested with two screens:
* overlapping, same resolution: the lowest id (0, the primary) wins, the other one doesn't get a view
* overlapping, different resolutions: the biggest one wins
* not overlapping: both get a view
Reviewers: sebas, #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4309
Summary:
ContainmentConfigView has a special code path for wallpaper configs
where, if you change wallpaper type, it will create a temporary config
ConfigPropertyMap, then copy it over to the real config when the
containment actually changes.
ConfigPropertyMap does not call valueChanged() on insertion (See
QQmlPropertyMap), and we only write the value into the actual
KConfigSkeleton on valueChange.
BUG: 375532
Test Plan:
Start plasma with image wallpaper
Set to colour wallpaper and save colour
Hit apply
Close plasma
Start plasma
Before the correct colour wouldn't be loaded. Now it is.
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4285
when the screen is resized, emit
screenGeometryChanged
availableScreenRegionChanged
availableScreenRectChanged
to notify all the applets
reviewd-by: Eike Hein
Summary:
If we changed containment with the config open, relaunch the config
dialog but for the new containment.
This provides a somewhat seamless changing desktop types.
BUG: 355642
Test Plan:
Opened config, changed type, hit apply -> dialog was replaced
Opened config, changed activity -> Dialog was replaced
Opened config, Closed Config, changed activity -> Nothing happened
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4086
Summary:
panel size and position in pixel is dependent from screen resolution,
this saved in different config groups, as it should.
but two properies of panelview shouldn't change between resolution,
that are visibility and alignment, otherwise the panel changes
behavior in an unpredictable way when resolution changes.
BUG:372064
Test Plan:
started plasmashell with old config, values have been correctly
migrated to the parent group that's common for all resolutions
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4087
Summary:
due to old multiscreen bugs, sometimes the appletsrc file
gets polluted with a lot of containments with same activity id
and lastScreen, in some cases even hundreds
(see https://bugs.kde.org/show_bug.cgi?id=371858)
in that case we can't be 100% sure what containment will be loaded
at startup, leading to an herratical behavior.
it was trying to clean up duplicates but wasn't really effective
now base upon lastScreen (so we catch other activities as well)
and manually remove the destroyed containment from
m_desktopContainments (which may sole some multiscreen
related bug, such as 371991)
BUG:371858
CCBUG:371991
Test Plan:
started a session with the corrupted appletsrc from the bugreport,
file gets cleaned out of duplicates
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3981
Summary:
due to old multiscreen bugs, sometimes the appletsrc file
gets polluted with a lot of containments with same activity id
and lastScreen, in some cases even hundreds
(see https://bugs.kde.org/show_bug.cgi?id=371858)
in that case we can't be 100% sure what containment will be loaded
at startup, leading to an herratical behavior.
it was trying to clean up duplicates but wasn't really effective
now base upon lastScreen (so we catch other activities as well)
and manually remove the destroyed containment from
m_desktopContainments (which may sole some multiscreen
related bug, such as 371991)
BUG:371858
CCBUG:371991
Test Plan:
started a session with the corrupted appletsrc from the bugreport,
file gets cleaned out of duplicates
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3981
Summary:
It's exported and we're including the include path in our cmake so we
had two paths to the same thing included.
Test Plan: Compiled
Reviewers: #plasma, markg
Reviewed By: markg
Subscribers: markg, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D4030
Summary:
It's not used, and it doesn't even have any docs saying what it's
supposedly for.
Removing.
Test Plan: Compiles and checked it's not exported.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3945
Test Plan:
Now get a populated Panel's menu
(this doesn't answer why Marco and Kai said it worked for them though?)
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3944
Summary:
Both when exporting and importing plasma layout to json
consider the panel visibility as well together the other
properties
BUG:374226
Test Plan: tried an exported layout with autohide panel
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3852
Summary:
this replaces the approach with the expose event in
20b439a4f4 by directly monitoring the xcb screen change
notify native event
Test Plan:
attaching and detaching the external screen on a laptop
configured to deactivate the internal screen upon connection
same behavior as D3777
Reviewers: sebas, davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: pmuralidharan, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3822
Summary:
this replaces the approach with the expose event in
20b439a4f4 by directly monitoring the xcb screen change
notify native event
Test Plan:
attaching and detaching the external screen on a laptop
configured to deactivate the internal screen upon connection
same behavior as D3777
Reviewers: sebas, davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: pmuralidharan, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3822
Summary:
in a corner case that is used a lot, the internal laptop screen
gets automatically disabled when an external screen is connected.
the only QScreen* available from the QGuiApp gets recycled for the
new screen and there is no signal this switch occurred.
To work around this, as all the view get an expose event when this happen,
monitor the rename of the desktopview's qscreen and manage this separatedly
in the shell.
BUG:373880
Test Plan:
connection and disconnecting an external screen to the laptop
both in the case of internal screen enabled or disabled
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3777
Summary:
in a corner case that is used a lot, the internal laptop screen
gets automatically disabled when an external screen is connected.
the only QScreen* available from the QGuiApp gets recycled for the
new screen and there is no signal this switch occurred.
To work around this, as all the view get an expose event when this happen,
monitor the rename of the desktopview's qscreen and manage this separatedly
in the shell.
BUG:373880
Test Plan:
connection and disconnecting an external screen to the laptop
both in the case of internal screen enabled or disabled
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3777
Summary:
--shows/hides the WidgetExplorer through dbus
Test Plani: trigger widget explorer from command line
Reviewers: mart, davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3754
Summary: We need old id of new primary screen. After we update primary screen in screenpool, it will always return id = 0. It causes invalid m_desktopViewforId mapping and panel doesn't move next time when we change primary screen.
Test Plan:
Preconditions:
Computer with 1 display, running plasmashell
Test steps:
1. Connect one external screen (first screen is primary)
2. Change primary screen to second screen
3. Change primary screen back to first screen
4. Unplug second screen
Expected:
In step 3 panel moves to first screen
In step 4 plasmashell keeps running
Actual (before change):
In step 3 panel remains on second display
In step 4 plasmashell crashes
BUG: 372963
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3519
It registers global shortcuts Meta+1 through 9 and 0 and will ask the first task manager
it finds* to activate the task at the given index.
*) It searches all panels on the primary screen for an applet that provides "multitasking"
(ie. task manager, icon task, window list) and invokes said method. If there is none, it
will then search all panels. This will fit the 90% usecase and avoids an overly complex
configuration workflow.
Differential Revision: https://phabricator.kde.org/D3581
Summary:
Instead of making PanelViewConfig manipulate the visibiltyMode of
PanelView, make PanelView force the view to be visible whilst the
config
is open.
This is cleaner as it doesn't alter the original config, and
resolves a
bug that opening configure with an autohide panel would shift
contents
about.
Test Plan:
With panel as autohide opened config
Moused away from panel, panel stayed visible
With panel as autohide, plugged in a USB pen - panel appeared - and
closed when I hid the dialog
Changed mode in panel config, panel didn't immediately change - but did
on close.
Tested with all modes.
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: mart, plasma-devel
Tags: #plasma
BUG: 372248
Differential Revision: https://phabricator.kde.org/D3408
Summary:
This patch adds a variable called "backgroundHints"
which can be used with (NoBackground) through qml
in order to enable/disable the KWin effects for
a specific panel and the panel shadows in case the
effects are disabled.
Currently these effects are (Blur and Background Contrast)
Reviewers: #plasma, #davidedmundson
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3282
FEATURE: 368384
Summary:
Otherwise we have a gap during load (waiting querying kactivities))
between screen pool being created and us connecting to the screen
changed signals, which in turn are used to update screen pool.
In particular the primary screen can get out of sync between the current
state and the screen pool.
Test Plan: Based on Christopher Feck's research and initial patch
Reviewers: #plasma
Subscribers: mart, rwooninck, fvogt, cfeck, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3319
CCBUG:372099
CCBUG:371858
CBUG:371991
CCBUG:371819
CCBUG:371734
Summary:
load() can be called multiple times; either from setShell or
loadLookAndFeelDefaultLayout. We still only want addOutput once when a
screen is added
Reviewers: #plasma, apol
Reviewed By: apol
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3320
CCBUG:372099
CCBUG:371858
CBUG:371991
CCBUG:371819
CCBUG:371734
at startup, if a screen id is missing from the screenpool mapping
containment::screen() will return -1 for a moment in the startup
phase even if it has a valid lastScreen
populate mappings of eventual missing stuff at screenpool ctor
make sure destroyed containments don't get assigned a view
reviewed-by: David Edmundson
CCBUG:372099
CCBUG:371858
CCBUG:371991
CCBUG:371819
CCBUG:371734
Summary:
layout.js used to be run before any containments were added. This was
broken in a697d291 which creates desktop containments for that activity
first.
However, some scripts rely on being able to alter global configuration
before any containments are loaded.
In order to allow the same functionality we need to provide a new hook
for whatever these scripts may need to do.
BUG: 371704
Test Plan: Not done yet.
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: apol, mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3220
Summary:
Setting the screenpool primary screen changes the mapping of ID ->
connector. We need this to be done before the
DesktopView::setScreenToFollow is called because otherwise it will save
lastScreen with the wrong ID.
CCBUG: 370711
Test Plan:
Hot swapped primary, both things swapped.
Restarted Plasma
Things restored as I think they should be.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3098
when a screen goes away, screenToFollow can die for a short instant,
the view will be shortly killed but we don't want to access screenToFollow()
in the meantime
we don't want
BUG:371201