This is means two things:
- icon sizes have moved from theme.iconSizes.* to units.iconSizes.*,
will provide porting script and update docs
- we can kill PlasmaCore's ThemeProxy now. Icon sizing and dpi handling
is kept outside of Plasma::Theme for now, as it pulls in too many
deps.
This change does two things:
- it increases the gridUnit to 11 pixel on 102DPI, 18 on 170DPI. This
means on the one hand larger sizing, but aligns gridUnit and
theme.largeSpacing consistently, and thus makes these types work
together better.
- it scales the gridUnit with the DPI. The width of the font's bounding
box doesn't change on the displays I've tried, the height does.
As a result, gridUnit now scales linearly with the DPI setting.
The outputOnly property allows to specify that the dialog should not
accept any input. Thus it's an output only window which supports click
through. This is obviously platform specific and so far it is only
implemented for the X11 platform using the shape extension.
The input shape needs to be set once the window is visible and thus
the functionality is bound to the visible changed signal. The code
ensures that the required shape extension version is present and only
fetches it once.
REVIEW: 115139
The QQmlPropertyMap isn't moved with this commit, this needs a bit more
changing, so we do a separate one for that, once the more trivial stuff
is moved out.
ToolTipArea.containsMouse allows the use to update the tooltip way
before it's shown, or when the contents of the tooltip should change
within an open dialog.
dismiss() and keepalive() allow handing over the tooltip dialog to
another item, in order to allow for a smoother handover when a new item
recycles the tooltipdialog. This avoids flickering when the tooltip
moves from one item to another.
- Derive from MouseEventListener as to let input through
- react to target changes: reparent the MEL accordingly
- kill a bunch of warnings
This "helps" a bit, but still filters out input events since the MEL
only passes events down to children, but the tooltip's target becomes
its parent.
Reparenting the target crashes, and it seems a pretty ugly thing to do,
anyway, since we don't want to mess with the scenegraph structure just
to filter events out for tooltips. Grmblz.
Delete KDeclarativeMouseEvent when emitted
Do not leak KDeclarativeMouseEvent press and hold events when the mouse
moves.
Do not create KDeclarativeMouseEvent when the mouse is hovered. It's
pointless.
The larger headings are a bit softened, to make their stick out less,
the font is meant to take care of this. Result: visually more consistent
colouring, strangely. Human eyes are beautifully complex things.
Since we are checking if the width() is out of bounds we should also use
width() to correct the position.
Other cases might need change as well, but I think we better go in a case
by case bases to fix all possible issues.
- We would only check for the available screen, but not for the location
when applying borders. Fix that.
- Cache dialog geometry when going fullscreen, so we can restore it when
we're not fullscreen anymore.
- Remove temporary var l, we have m_location for that.
This is a needless duplication of the property, and it causes bugs.
Removing it, and porting all users to the flags property from QWindow
magically makes layering and resizability bugs vanish.
One problem is left: the dialog dismisses too easily, it should not
dismiss when being resized, moved or when a child dialog or QMenu opens
from it.
Interestingly, this hack yields the correct behaviour in my system. We
quickly set the always on top hint once we're supposed to hide, so the
window stays on top for the duration of the animation -- without
apparent side effects on the positioning and resizability.
CCMAIL:mgraesslin@kde.org
This property is meant to bring back the functionality provided by
PopupApplet. If the property is set to true the dialog gets hidden
when it loses focus.
REVIEW: 114378
Reason for this change: a QIcon might not contain the disabled pixmaps.
Using the icon effect allows to get also the disabled state for such
icons.
REVIEW: 114334
KLocale is now kde4support and we have QLocale QML bindings. This patch
removes the KLocale bindings from plasma-framework (they are not used
anywhere anyway).
If we miss something from KLocale in QLocale, we should upstream it.
REVIEW: 114150
These methods are in the middle of other together-related methods, for
no reason. Looks like corn flakes in the middle of beer. Sure, you can
do that, but why would you. Actually I should try that.
Some CLDR (locale) data used by Qt have standalone month names
starting with lower-case letters. So if we want to provide consistent
look across locales, we need to capitalize it ourselves
See https://bugreports.qt-project.org/browse/QTBUG-35100
Also rename startDay property to firstDayOfWeek property so it's more
clear what it does. Handling the first day of week is changed a bit too
as QML uses 0 for Sunday while QDate uses 7 for Sunday, so the
getter/setter is accomodated to that fact and converts from 0 to 7 on
setting and vice-versa in the getter.
REVIEW: 114099
Stop using classes from kde4support:
- KComponentData is deprecated, it will be using QCoreApplication::
applicationName() and QCoreApplication::applicationVersion(). Of course,
this means that the existing shells will have to be ported. I have no
problem with doing that port myself, if I'm told where to look into.
- Drop usage of KLocale, ported to QLocale
- Drop usage of KStandardDirs, ported to QStandardPaths
- Drop usage of KIcon, ported to QIcon
Furthermore, there's a module in src/declarativeimports/locale that IIUC
exposes KLocale bindings to QML. A specific plan to port it should happen
as well.
REVIEW: 113920
This allows us to keep minimal API, since the calendar view and import
really belong together. Also makes it a lot easier to provide a separate
Calendar Plasmoid.
Accessors to allow centralized control of spacing in a DPI-friendly way.
Will be used to unify spacing across default widget to make them look
more consistent.
Currently, smallSpacing is font height / 10, large is font height / 2.
Calling DialogShadows::self()->addWindow(...) will create the low level window.
If this is called before the property windowFlags is evaluated the window flag
X11BypassWindowManagerHint has no effect as that one must be present when the
window is created through the low level xcb call.
This was breaking declarative KWin scripts as KWin's windows need to have the
X11BypassWindowManagerHint.
REVIEW: 113700
Removes the find_package(Qt5Transitional) and does the proper
find_package(Qt5) with the list of modules.
Most of the porting is about using the Qt5:: targets.
REVIEW: 113345
This is in line with the frameworks naming policy, camelcasing. Up until
now, libplasma was the only library being KF5::plasma, that is now
KF5::Plasma.
Recursive window thumbnails would look awesome on the screen, but reality
is that X/OpenGL or $DEITY doesn't like it at all and decided to just
freeze the view.
So let's delay all the redirecting till the WindowThumbnail has been
added to its QQuickWindow and if the window id is the one of the own
window we just render the icon instead.
New qquick item in PlasmaCore to render a live updating window
thumbnail. The implementation uses XCB to redirect the specified
window using the composite extension. This means a running compositor
is not required. Through the damage extension the item tracks changes
to the window and triggers updates of the texture. Furthermore the
item tracks geometry changes of the window to recreate the window
pixmap.
If the pixmap of the window is valid, a texture is generated from it
using the glx texture from pixmap extension. For this a new optional
dependency for glx is added. On platform where glx is not available
(e.g. Windows, Linux with OpenGL ES) this will not get compiled and
the window's icon is used instead as a fallback.
REVIEW: 112142
Uses the new components syntax of FindXCB. So far plasma frameworks
only need the XCB component and that one is optional just like XLib.
The find xcb is moved to the toplevel CMakeLists.txt together with
the find x11 and HAVE_X11 gets set only if both X11 and XCB are found.
REVIEW: 112499
This commit fixes the button label overlapping over the button borders
when the button height is manually set to a value bigger than the
icon's smallsize.
Review done by notmart on IRC.
MouseEventListener listens to both child events and events passing
through itself; child events are recorded so the handler for the
latter can perform a comparison and avoid emitting signals for the
same event again. However, this comparison could fail because the
member used to record the last child event would also be updated
for events we were not actually interested in.
A real-world example of this is opening a popup menu in repsonse to
a Press event. This causes an Ungrab event on the child, which would
cause the comparison to fail and mousePressEvent to announce the same
press yet again.
CCBUG:323067
Property windowId was according to the comments only provided because
KWin needed it. KWin's usecase was to know the window Id of the window
where a given item is rendered to. In QtQuick a QQuickItem provides a
pointer to the QQuickWindow holding the item. This means this hack is no
longer needed.
REVIEW: 112033
The implementation now specifically tries to support byte arrays
being passed in, which is what the base class speaks. To try and
retain the previous behavior anything else is attempted to be
converted to a string and failing that, silently dropped.
REVIEW:111748
CCBUG:322567
both the applet and its compact representation can now export minimumWidth,implicitWidth etc and those are exported to the root graphics item.
the minimum width of the applet is used to collapse in popup
emit click if the cursor is still in the area regardless of the
distance travelled
this because MouseEventListener doesn't start drags
BUG:320893
FIXED-IN:4.11
cherry-picked from ac9592832893cd6562dc0747f8afc1d7f89442c8 in
kde-runtime
This way, we can cover string and QIcon assignments transparently,
another backwards compatibility fix, and easier thing in Plasma2: Now
the user doesn't have to worry about creating QIcons, but can just
assign the icon name, and it will get loaded from the theme. Models that
provide QIcons (such as QStandardItems) now work correctly with
PlasmaCore.MenuItems.
The mainItem is now a Component, which gets created on demand and passed
to the tooltip dialog.
Positioning is a bit off now, but it basically seems to work as we'd
like it to.
Let's try to share more code with dialog -- especially sizing, frame
painting and positioning with dialog. This means a bit of rewiring, but
should result in more lazy-loaded, shared objects.
The idea is to have at most one window, which is recycled for all
tooltips, making it possible to animate transitions.
This implementation deviates a bit from the Plasma 1 tooltips:
- image is now a string
- tooltips align to the parent by default, or the visualParent set
Otherwise, the changes should be fairly transparant.
A crude basic featureset works.
ToolTipProxy is now a QQuickWindow and renamed to ToolTipWindow.
This is done in C++.
ToolTip itself is a QML file, which internally uses tooltipwindow to
display the attached item.
Basic showing / hiding and embedding an Item works, positioning,
margins, etc are not implemented yet. Neither are special windowmanager
hints and flags.
In MenuItem, we can't inherit QAction anymore (our MenuItem has to be a
QQuickItem), so we need to aggregate, which means adding glue API.
Positioning code is disabled, icons broken, but a QMenu with our items
inside shows up and is works.
This patch changes the version numbers of the plugins to 2.0. This
includes the previously 0.1 plasmacomponents, extras and
qtextracomponents. DragandDrop, which was at 1.0 is now also at 2.0.
Also, all the QML code has been changed to import the 2.0 plugins.
As a side-effect, we now share a version number with QtQuick 2.0 now.
- events need to be accepted, otherwise they don't have effect on the
drag, and it doesn't get released
- slightly more intelligent starting of drag, saves quite some cycles
and is way more correct this way
The "attach pixmap of dragged item" is still disabled. This probably
needs to be rethought entirely. One option would be to ditch this class
in favour of QtQuick 2's Drag, DragEvent and DropArea. Food for API
discussion.
- default top TopEdge
- Swap edges if specified
- shift on non-specified edges
- all borders, edge-cases (ha!) are confirmed working
- cleaned up some cruft
Not taken care of yet:
- framesvg border disabling
- sliding effect w/ kwin
- smarter resolution of visualParent
It now inherits from QQuickWindow.
setting the mainItem is not reparenting it right now, this will probably
break, so needs fixing. For now, it works though as long as the mainItem
has the Dialog as parent already. WindowFlags and sizing seems to work.
This commit enables the build of PlasmaCore.Dialog. Most of the code is
disabled, as it's quite wired up with QGraphicsWidgets. The remaining
pieces are actually able to bring up a window, but don't display
anything.
- remove call to closeSoftwareInputPanel before calling it, it's removed
from TextInput in commit
3721de405e
I suppose it now "just works", but will test. The API is not there,
anyway, so it's safe to remove.
- clearbutton only shows when enabled
- clearbutton rightmargin
Small, likely irrelevant API changes:
* removed: bool useTranscript(...)
* removed: QString translateQt(...)
has been removed in kdelibs as well, and is
removeAccelerator now uses KLocalizedString, and is expected to fully
work, so is isApplicationTranslatedInto().
Another module fully ported. :)
This enables, ports where necessary, the rest of the DataEngine classes,
ServiceJob handling, and RunnerManager.
Now, more or less only Dialog and ToolTip are unported. Those will need
reimplementations for QtQuick2.
All those signals work, I'm not quite sure what the eventFilter is used
for, the Item seems to work just fine without it. I've left it disabled
for now, maybe we can kill this code?
CCMAIL:mart@kde.org
All cpp code moves into the src/ subdirectory, as the Frameworks policy
suggests.
Directory structure should now be in line with other, future frameworks.