Review Request 126216: Do not produce negative struts on switching screens

Jan Kundrát jkt at kde.org
Wed Dec 2 10:52:41 UTC 2015



> On Dec. 1, 2015, 11:30 p.m., Aleix Pol Gonzalez wrote:
> > Looking at the documentation, it seems like it should never return invalid (at least if ::geometry also isn't invalid).
> > 
> > I'll add some debug locally and try to reproduce the issue. Thanks for looking into this!

For the record, this is with qtbase a5f470240f31d35e694a40fe837fc4f49bc32072. I see that the screen changing changed once again in the dev (5.6) branch (yeah, I know you wrote these patches).


- Jan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126216/#review89014
-----------------------------------------------------------


On Dec. 1, 2015, 6:45 p.m., Jan Kundrát wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/126216/
> -----------------------------------------------------------
> 
> (Updated Dec. 1, 2015, 6:45 p.m.)
> 
> 
> Review request for Plasma and Martin Gräßlin.
> 
> 
> Repository: plasma-workspace
> 
> 
> Description
> -------
> 
> Turns out that this method is sometimes called at the time where the
> virtualGeometry() is invalid. Rather than producing values which are
> surely invalid, try to come up with something which might be incorrect
> on some multiscreen setups (right?), but which at least happens to work
> on my setup.
> 
> 
> Diffs
> -----
> 
>   shell/panelview.cpp 34075013b22995d81c98d933db596dff520bd812 
> 
> Diff: https://git.reviewboard.kde.org/r/126216/diff/
> 
> 
> Testing
> -------
> 
> Here's how the stack traces look like BTW:
> 
> 389     /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp: No such file or directory.
> (gdb) bt
> #0  PanelView::positionPanel (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:389
> #1  0x000055555559e6a9 in PanelView::containmentChanged (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:1036
> #2  0x000055555559fdf5 in PanelView::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
>     at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999_build/shell/moc_panelview.cpp:224
> #3  0x00007ffff2bbbf79 in QMetaObject::activate (sender=0x555558162660, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=2, argv=argv at entry=0x0)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3713
> #4  0x00007ffff2bbc6d5 in QMetaObject::activate (sender=<optimized out>, m=m at entry=0x7ffff7bd0600 <PlasmaQuick::ContainmentView::staticMetaObject>, 
>     local_signal_index=local_signal_index at entry=2, argv=argv at entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3578
> #5  0x00007ffff79ab309 in PlasmaQuick::ContainmentView::containmentChanged (this=<optimized out>)
>     at /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999_build/src/plasmaquick/moc_containmentview.cpp:257
> #6  0x00007ffff79abdf0 in PlasmaQuick::ContainmentViewPrivate::setContainment (this=0x555558225fb0, cont=0x555555da3270)
>     at /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999/src/plasmaquick/containmentview.cpp:96
> #7  0x00007ffff79ac5df in PlasmaQuick::ContainmentView::setContainment (this=this at entry=0x555558162660, cont=<optimized out>)
>     at /var/tmp/portage/kde-frameworks/plasma-9999/work/plasma-9999/src/plasmaquick/containmentview.cpp:246
> #8  0x00005555555b08ab in ShellCorona::createWaitingPanels (this=0x5555558c6790) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/shellcorona.cpp:1023
> #9  0x00007ffff2bbba00 in call (a=0x7fffffffce10, r=0x5555558c6790, this=0x5555558df440) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qobject_impl.h:124
> #10 QMetaObject::activate (sender=sender at entry=0x5555558c6840, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x0)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3698
> #11 0x00007ffff2bbc6d5 in QMetaObject::activate (sender=sender at entry=0x5555558c6840, m=m at entry=0x7ffff2dd84a0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index at entry=0, 
>     argv=argv at entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3578
> #12 0x00007ffff2c47016 in QTimer::timeout (this=this at entry=0x5555558c6840) at .moc/moc_qtimer.cpp:197
> #13 0x00007ffff2bca552 in QTimer::timerEvent (this=0x5555558c6840, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimer.cpp:247
> #14 0x00007ffff2bbd2b4 in QObject::event (this=0x5555558c6840, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:1220
> #15 0x00007ffff3672c1c in QApplicationPrivate::notify_helper (this=this at entry=0x555555810f70, receiver=receiver at entry=0x5555558c6840, e=e at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3716
> #16 0x00007ffff367847a in QApplication::notify (this=0x7fffffffd670, receiver=0x5555558c6840, e=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3499
> #17 0x00007ffff2b8c57d in QCoreApplication::notifyInternal (this=0x7fffffffd670, receiver=0x5555558c6840, event=event at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:965
> #18 0x00007ffff2be60cc in sendEvent (event=0x7fffffffd240, receiver=<optimized out>) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.h:224
> #19 QTimerInfoList::activateTimers (this=0x55555584b370) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimerinfo_unix.cpp:637
> #20 0x00007ffff2be6713 in timerSourceDispatch (source=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:177
> #21 idleTimerSourceDispatch (source=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:224
> #22 0x00007fffee2d82a9 in g_main_dispatch (context=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3111
> #23 g_main_context_dispatch (context=context at entry=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3710
> #24 0x00007fffee2d8538 in g_main_context_iterate (context=context at entry=0x7fffe0002450, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
>     at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3781
> #25 0x00007fffee2d8641 in g_main_context_iteration (context=0x7fffe0002450, may_block=1) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3842
> #26 0x00007ffff2be6ba1 in QEventDispatcherGlib::processEvents (this=0x555555852c60, flags=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:418
> #27 0x00007ffff2b8aa8b in QEventLoop::exec (this=this at entry=0x7fffffffd4e0, flags=..., flags at entry=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventloop.cpp:204
> #28 0x00007ffff2b93018 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1229
> #29 0x000055555558a55b in main (argc=1, argv=<optimized out>) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/main.cpp:179
> (gdb) c
> Continuing.
> 
> Breakpoint 4, PanelView::positionPanel (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:389
> 389     in /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp
> (gdb) bt
> #0  PanelView::positionPanel (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:389
> #1  0x000055555559e8c5 in PanelView::setThickness (this=0x555558162660, value=40) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:223
> #2  0x000055555559f477 in PanelView::restore (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:514
> #3  0x000055555559fafc in operator() (__closure=<synthetic pointer>) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:81
> #4  call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:495
> #5  call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:552
> #6  QtPrivate::QFunctorSlotObject<PanelView::PanelView(ShellCorona*, QScreen*, QWindow*)::__lambda1, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobject_impl.h:192
> #7  0x00007ffff2bbba00 in call (a=0x7fffffffce10, r=0x555558162660, this=0x555555eefd80) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qobject_impl.h:124
> #8  QMetaObject::activate (sender=sender at entry=0x555558162708, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x0)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3698
> #9  0x00007ffff2bbc6d5 in QMetaObject::activate (sender=sender at entry=0x555558162708, m=m at entry=0x7ffff2dd84a0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index at entry=0, 
>     argv=argv at entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3578
> #10 0x00007ffff2c47016 in QTimer::timeout (this=this at entry=0x555558162708) at .moc/moc_qtimer.cpp:197
> #11 0x00007ffff2bca552 in QTimer::timerEvent (this=0x555558162708, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimer.cpp:247
> #12 0x00007ffff2bbd2b4 in QObject::event (this=0x555558162708, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:1220
> #13 0x00007ffff3672c1c in QApplicationPrivate::notify_helper (this=this at entry=0x555555810f70, receiver=receiver at entry=0x555558162708, e=e at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3716
> #14 0x00007ffff367847a in QApplication::notify (this=0x7fffffffd670, receiver=0x555558162708, e=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3499
> #15 0x00007ffff2b8c57d in QCoreApplication::notifyInternal (this=0x7fffffffd670, receiver=0x555558162708, event=event at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:965
> #16 0x00007ffff2be60cc in sendEvent (event=0x7fffffffd240, receiver=<optimized out>) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.h:224
> #17 QTimerInfoList::activateTimers (this=0x55555584b370) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimerinfo_unix.cpp:637
> #18 0x00007ffff2be66af in timerSourceDispatch (source=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:177
> #19 0x00007fffee2d82a9 in g_main_dispatch (context=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3111
> #20 g_main_context_dispatch (context=context at entry=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3710
> #21 0x00007fffee2d8538 in g_main_context_iterate (context=context at entry=0x7fffe0002450, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
>     at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3781
> #22 0x00007fffee2d8641 in g_main_context_iteration (context=0x7fffe0002450, may_block=1) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3842
> #23 0x00007ffff2be6ba1 in QEventDispatcherGlib::processEvents (this=0x555555852c60, flags=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:418
> #24 0x00007ffff2b8aa8b in QEventLoop::exec (this=this at entry=0x7fffffffd4e0, flags=..., flags at entry=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventloop.cpp:204
> #25 0x00007ffff2b93018 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1229
> #26 0x000055555558a55b in main (argc=1, argv=<optimized out>) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/main.cpp:179
> (gdb) c
> Continuing.
> 
> Breakpoint 4, PanelView::positionPanel (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:389
> 389     in /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp
> (gdb) bt
> #0  PanelView::positionPanel (this=0x555558162660) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/panelview.cpp:389
> #1  0x00007ffff2bbba00 in call (a=0x7fffffffce10, r=0x555558162660, this=0x555555eefd80) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qobject_impl.h:124
> #2  QMetaObject::activate (sender=sender at entry=0x555558162708, signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=0, argv=argv at entry=0x0)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3698
> #3  0x00007ffff2bbc6d5 in QMetaObject::activate (sender=sender at entry=0x555558162708, m=m at entry=0x7ffff2dd84a0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index at entry=0, 
>     argv=argv at entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:3578
> #4  0x00007ffff2c47016 in QTimer::timeout (this=this at entry=0x555558162708) at .moc/moc_qtimer.cpp:197
> #5  0x00007ffff2bca552 in QTimer::timerEvent (this=0x555558162708, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimer.cpp:247
> #6  0x00007ffff2bbd2b4 in QObject::event (this=0x555558162708, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:1220
> #7  0x00007ffff3672c1c in QApplicationPrivate::notify_helper (this=this at entry=0x555555810f70, receiver=receiver at entry=0x555558162708, e=e at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3716
> #8  0x00007ffff367847a in QApplication::notify (this=0x7fffffffd670, receiver=0x555558162708, e=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3499
> #9  0x00007ffff2b8c57d in QCoreApplication::notifyInternal (this=0x7fffffffd670, receiver=0x555558162708, event=event at entry=0x7fffffffd240)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:965
> #10 0x00007ffff2be60cc in sendEvent (event=0x7fffffffd240, receiver=<optimized out>) at ../../include/QtCore/../../../qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.h:224
> #11 QTimerInfoList::activateTimers (this=0x55555584b370) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qtimerinfo_unix.cpp:637
> #12 0x00007ffff2be66af in timerSourceDispatch (source=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:177
> #13 0x00007fffee2d82a9 in g_main_dispatch (context=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3111
> #14 g_main_context_dispatch (context=context at entry=0x7fffe0002450) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3710
> #15 0x00007fffee2d8538 in g_main_context_iterate (context=context at entry=0x7fffe0002450, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
>     at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3781
> #16 0x00007fffee2d8641 in g_main_context_iteration (context=0x7fffe0002450, may_block=1) at /var/tmp/portage/dev-libs/glib-2.42.2/work/glib-2.42.2/glib/gmain.c:3842
> #17 0x00007ffff2be6ba1 in QEventDispatcherGlib::processEvents (this=0x555555852c60, flags=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_glib.cpp:418
> #18 0x00007ffff2b8aa8b in QEventLoop::exec (this=this at entry=0x7fffffffd4e0, flags=..., flags at entry=...)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventloop.cpp:204
> #19 0x00007ffff2b93018 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1229
> #20 0x000055555558a55b in main (argc=1, argv=<optimized out>) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/main.cpp:179
> (gdb) c
> Continuing.
> got a null qscreen, oh fucking sweet
> void PanelView::updateStruts()
> QRect(0,0 1600x900) QRect(0,0 0x0)
> screen l/r/b/t offsets are: 0 -1600 -900 0 6
> setting right edge to -1560 0 899
> ^C
> Program received signal SIGINT, Interrupt.
> QCoreApplicationPrivate::sendThroughApplicationEventFilters (this=this at entry=0x555555810f70, receiver=receiver at entry=0x55555581a870, event=event at entry=0x7fffe0006240)
>     at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1042
> 1042    /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp: No such file or directory.
> 
> 
> Thanks,
> 
> Jan Kundrát
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20151202/4c1ce2ba/attachment-0001.html>


More information about the Plasma-devel mailing list