Basically splits the Calendar::m_startDate into 'today' and
'displayedDate', where displayedDate is the date that is displayed (it
controls the days model etc) and can be manipulated by the user by eg.
changing months in the plasmoid, and today is the current day, populated
by our dataengine (which means it auto-updates with no need for a
timer).
This allows for greater flexibility and things like "Go back to today"
when eg. the plasmoid is hidden or when the user have browsed too far in
the calendar and just wants to get back to today (the button to do that
pending).
Also this fixes a problem where the time dataengine is being polled
every 30secs for the clock and would reset the calendar view as the
startDate is currently bound to the dataengine and the view resets on
that change.
REVIEW: 118668
CCBUG: 336304
This enables and disabled menuitems with a timer, so we can see whether
dynamically updating these properties are propagated to the QMenu in the
proxy.
CCBUG:336281
* trigger an update after the animation finished as the IconItem needs to
switch to SVGTextureNode again
* Don't connect needlessly to a lambda slot
* FadingMaterialShader had the texture bind swapped
* Fix virtual method hidden warning in FadingMaterialShader
* Use dynamic_cast instead of static_cast to convert to SVGTextureNode
or FadingNode.
REVIEW: 118251
experiment in dynamic repacement of Text and Background
colors, in order to be able to generate icons of different colors
based on where they are (for instance if the normal background
is dark and the button background is light
at the moment supported an option to invert colors, one
to use the "highlight" color (if we want colored icons
on mouse over)
Currently we have 3 applets using the calendar grid and all of them put
the extra heading to the calendar. We also offer ways to change the
displayed month so we should also show /which/ month is the current one
displayed, implicitly.
REVIEW: 118328
BUG: 334147
This introduces new property on MonthView - "today". This property is
updated by dataengine (or can be a timer too, but we already get signals
from dataengine every 30 seconds to update the clock) and is never
updated by the code itself.
Furthermore, the DayDelegate is now bound to it, so when "today"
changes, the selection rectangle in the calendar should also change.
And finally, the selected item in the grid is cleared if MonthView's
date property is cleared (which is second part of this patch, to the
applet itself).
REVIEW: 118277
Removing eliding in Toolbutton, this causes a binding loop as the
sizeHint is dependent on the paintedSize, which will change if you
elide.
In all cases we are trying to make toolbuttons fit the contents, so this
actually got in the way of that.
Otherwise the label can get out of the button boundaries. Tested with
RTL text too, it's elided properly as the elipsis switches to Left on
its own.
Reviewed-by: Marco Martin
BUG: 334867
ToolTipAreas are often the critical path for mouse handling, since
hover events are not filterable from below in the item hierarchy.
When disabling tooltips also stops updating containsMouse code has
no way to adapt, since there's no API to read the pref from within
QML. This changes the implementation of the pref to only prevent
tooltips from being shown, but still continue to handle hover events.
We need to use a GLXFBConfig which matches the depth of the window
pixmap's depth. So far it used the GLXFBConfig of the GL context.
This worked fine for RGBA windows, but failed for RGB windows on e.g.
some NVIDIA drivers.
After this change the FBConfig of the context is completely ignored,
instead it tries to find a good FBConfig for a given depth.
Whenever a FBConfig for a given depth is found it's inserted in a
cache shared between all WindowThumbnails so that we don't have the
X roundtrips all the time.
BUG: 334241
REVIEW: 118110
The WindowThumbnail needs XCB_EVENT_MASK_STRUCTURE_NOTIFY on the window.
For this it needs to change the window attributes. But it needs to keep
the existing event mask to not break other code. Also it cannot remove
the event mask again, as there is no chance to know whether another
component requires STRUCTURE_NOTIFY.
This fixes the not updating items in the tasks applet as the event mask
needed for KWindowSystem got overwritten.
BUG: 331956
REVIEW: 118137
Port IconItem to native QSGTexture including the animation.
This will save constantly uploading a new texture to OpenGL throughout the animation.
REVIEW: 116024
If the window holding the WindowThumbnail item goes away the texture hold
by the node is destroyed but our bound window pixmap is not yet freed.
This results in incorrect state the next time the WindowThumbnail is
shown.
To get back into a clean state discardPixmap() is called if there is no
texture but a bound low level pixmap.
BUG: 333482
REVIEW: 117824
viewTextColor is wrong here, we have to use buttonTextColor. This
follows Plasma 1, and makes texts in fields and areas in white-on-black
themes work.
BUG:333837
At the moment, we could say that plasma is co-installable by chance,
it's only working because KF5 dropped the apps relative directory.
This change introduces a PLASMA_RELATIVE_DATA_INSTALL_DIR that will
be available to know where in share the components are and
PLASMA_DATA_INSTALL_DIR to know where data has to be installed to.
Reviewed by David Edmundson
CCMAIL: plasma-devel@kde.org
The documentation was copy-pasted and was wrong.
The property name started with m_, which is odd and I don't see a reason
for it. Also I didn't find any code that uses it.
REVIEW: 117760
Drop dependency to QtWidgets from this file. We can start assuming that it
might not be that functional in some platforms.
Use QGuiApplication counterparts, based mostly on QScreen, which could make
it more powerful in the future.
REVIEW: 117161
This messes up the fontmetrics needed to size the tab button. Before,
the labels would be elided no matter what.
This is more a band-aid than a real fix, we'll need to investigate how
we can make the sizing work correctly, but at least it "unscrews" the
layout of all of our tabbars.
Introduces a new optional dependency to EGL. If EGL is found the
WindowThumbnail gets compiled with EGL support. The EGL support is
unlike Qt's XCB plugin not mutual exclusive to the GLX backend, thus
it's possible to compile with EGL and GLX at the same time.
By that this implementation is prepared for the case that Qt supports
EGL or GLX through runtime selection.
In practice EGL support is only useful if Qt is compiled with GLESv2.
In that case the corebindingsplugin gets linked against Qt5::Gui_GLESv2
to get the dependency to GLES.
The implementation makes use of the EGL_KHR_image extension
(or EGL_KHR_image_base and EGL_KHR_Image_pixmap) and
the GL_OES_EGL_image extension to bind the X pixmap to an EGLImageKHR.
REVIEW: 116627
Qt's xcb plugin updates _NET_WM_STATE and ignores anything we set,
thus we need to ensure that our additional states are set after Qt
set the state. Luckily KWindowSystem does not remove the state which
is already set.
Reviewed-By: Marco Martin
it makes the tabbar eventually vertical and appearing oriented differently towards the content
possible values:
Qt.TopEdge (default)
Qt.LeftEdge
Qt.RightEdge
Qt.BottomEdge
ToolTipDialog is not a Q_GLOBAL_STATIC because QQuickwindows as global static
are deleted too later after some stuff in the qml runtime has already been deleted,
causing a crash on exit
Only link against OpenGL if Qt links against OpenGL. This ensures
that we don't run into issues if Qt links GLES and plasma links
GL because that's found.
REVIEW: 115990
if more than one dialog is shown in a loop, causes requestActivate called to different windows too fast, this causes 100% cpu usage both in the application and in the windowmanager (not kwin specific)
This way we only call the expensive syncToMainItemSize once we have all
the information to accurately position the window.
Using the timer to limit the calls doesn't work entirely (according to
qDebug) especially with the multiple threads to compile things.
Seems to prevent the dialog ever jumping around on load.
REVIEW: 115709
* X11 is optional dependency
* XCB is optional dependency
* Qt::X11Extras is only found if both X11 and XCB are found
* switch to HAVE_X11 instead of X11_FOUND in CMakeLists
* remove/fix custom added definitions
* use #if HAVE_X11 instead of #ifdef HAVE_X11 (that is always true)
REVIEW: 115698
This is useful to be able to disable tooltips when a dialog exists.
We don't use the QQuickItem::enabled property as this propagates onto
children and has side effects.
REVIEW: 115623
The minimumWidth of a plasma button is based on the paintedWidth
of the text item. There is no way to work out the correct width it
should be if we set the text to elide.
(except for the hack of using a hidden fake text item)
We should always fit contents. This won't cause any problems unless a
developer has a broken layout, at which point that should be fixed
REVIEW: 115500
This patch makes two changes:
1) don't rely on window()->screen() it's rubbish.
2) if the dialog is parented to a desktop, we want to position
inside the parent, not outside the parent object
REVIEW: 115448
BUG: 330546
This reads the global animation duration value from plasmarc, and gets
notified of changes: change the file, all animations are updated
automatically.
Put this into your plasmarc to disable animations globally:
[Units]
longDuration=0
As you might guess, other values will work as well.
shortDuration will always be 1/5 of this. (For now.)
This may sound a bit weird, but we can't just switch off everything, as
in some cases, the animation is not just eye-candy, but carries
important semantics of the UI -- examples are BusyIndicator and
ProgressBar. Behaviour for those is restored.
These centralize the duration of animations, currently set to 250 and 50
milliseconds. They're notifiable since we want to be able to switch off
animations at runtime.
CCMAIL:plasma-devel@kde.org
For the WidgetExplorer we want to show the tooltips to the right of the
scrollbar in the view, not to the right of the delegate the tooltip is
for.
This patch checks if the visualParent is in a dock. If so the popup is
positioned outside
I have also introduced a manual test for Dialog Positioning, and
includied some fixes in the original logic.
REVIEW: 115393
QWindow::screen() never ever changes if the window is moved across
virtual screens (normal two screens with X), this seems to be
intentional as it's explicitly mentioned in the docs.
Until that's changed or some more proper way of howto get the current
QScreen for given QWindow is found, we simply iterate over the virtual
screens and pick the one our QWindow says it's at.
This also fixes the OSD having proper shadows in multiscreen environment