lxqt / lxqt-connman-applet

System-tray applet for connman
GNU Lesser General Public License v2.1
20 stars 15 forks source link

Missing headers in plugins implementing [K]SNI #10

Closed pmattern closed 9 years ago

pmattern commented 9 years ago

The headers in LXQt ConnMan applet's menu aren't displayed if the applet is handled by a panel component implementing [K]SNI.

Seen running 7af99fc on Arch Linux i686 or x86_64: with LXQt and LXQt ConnMan applet from recent VCS checkouts the headers are displayed as usual in plugin-tray implementing System Tray Protocol but aren't in plugin-statusnotifier implementing SNI lxqt-connman-applet_missing-menu-headers_lxqt Same findings in "System Tray" of KDE Plasma 5.4.1. lxqt-connman-applet_missing-menu-headers_kde To check the latter libqtxdg, liblxqt and LXQt ConnMan applet were compiled on a system lacking all other LXQt components.

surlykke commented 9 years ago

Hmm. This is tricky.

I rather suspect it's a qt-bug - are there other qt-based applications displaying in systemtray/sni that shows section headings?

2015-09-24 22:31 GMT+02:00 Peter Mattern notifications@github.com:

Apparently the headers in LXQt ConnMan applet's menu aren't displayed if the applet is handled by a panel component implementing [K]SNI.

This can be seen on Arch Linux i686 or x86_64 in plugin-statusnotifier on a system running LXQt as well LXQt ConnMan applet from recent VCS checkouts [image: lxqt-connman-applet_missing-menu-headers_lxqt] https://cloud.githubusercontent.com/assets/9860801/10085722/0284c25c-630b-11e5-855f-4242dbe36bd0.png as well as in "System Tray" of KDE Plasma 5.4.1. [image: lxqt-connman-applet_missing-menu-headers_kde] https://cloud.githubusercontent.com/assets/9860801/10085728/0a677456-630b-11e5-88e7-181af86655b1.png As for KDE LXQt ConnMan applet, libqtxdg and liblxqt were compiled on a system lacking all other LXQt component to avoid artifacts.

Problem cannot be seen if the very same commit is handled by plugin-tray on LXQt. (plugin-tray cannot be used with recent VCS checkouts right now, see lxde/lxqt-panel#241 (comment) https://github.com/lxde/lxqt-panel/pull/241#issuecomment-142737205 and following discussion. To get it running lxde/lxqt-qtplugin@6584ff0 https://github.com/lxde/lxqt-qtplugin/commit/6584ff0 and lxde/lxqt-panel@099f32d https://github.com/lxde/lxqt-panel/commit/099f32d have to be used which are the commits preceding some major changes in plugin-statusnotifier and plugin-tray that took place recently.)

— Reply to this email directly or view it on GitHub https://github.com/surlykke/lxqt-connman-applet/issues/10.

pmattern commented 9 years ago

are there other qt-based applications displaying in systemtray/sni that shows section headings?

Not that I knew of, sorry. Will report back at once if I should stumble upon one.

Maybe @paulolieuthier can drop a note here? He knows that whole SNI thing very well.

If it should turn out that headers like used by lxqt-connman-applet cannot be realized in SNI, would making the applet a regular LXQt panel plugin actually be an option, too?

paulolieuthier commented 9 years ago

Yeah, that's because the menus are passed to the status notifier through DBus, so style data is not kept. Here is the xml interface. You can use the primary button click to open your custom menu.

surlykke commented 9 years ago

Aha, ok.

Thanks for educating me :-)

I'll switch to using the primary button.

br. Chr.

2015-09-27 4:47 GMT+02:00 Paulo Lieuthier notifications@github.com:

Yeah, that's because the menus are passed to the status notifier through DBus, so style data is no kept. Here http://bazaar.launchpad.net/%7Etorkvemada/libdbusmenu-qt/libdbusmenu-qt/view/head:/src/com.canonical.dbusmenu.xml is the xml interface. You can use the primary button click to open your custom menu.

— Reply to this email directly or view it on GitHub https://github.com/surlykke/lxqt-connman-applet/issues/10#issuecomment-143513888 .

surlykke commented 9 years ago

Ok. I've decided for a rewrite, moving functionality from the context menu to a widget as the somewhat limited interface of SNI does not allow any type of rich menu. This should fix this issue.

pmattern commented 9 years ago

0431468 segfaults right upon launch on Arch Linux x86_64 running LXQt from yesterday's VCS checkouts here.

Problem can be seen no matter whether only one of plugin-statusnotifier and plugin-tray, both or none is installed. Regression testing suggests it was introduced in 7f8a030. Nothing helpful in systemd's journal, backtrace is

#0  0x00007f2d39264cc0 in QString::startsWith(QChar, Qt::CaseSensitivity) const () from /usr/lib/libQt5Core.so.5
#1  0x00007f2d3a8626b2 in QDBusUtil::isValidObjectPath(QString const&) () from /usr/lib/libQt5DBus.so.5
#2  0x00007f2d3a8554b1 in ?? () from /usr/lib/libQt5DBus.so.5
#3  0x00007f2d3a857aec in QDBusAbstractInterface::QDBusAbstractInterface(QString const&, QString const&, char const*, QDBusConnection const&, QObject*) () from /usr/lib/libQt5DBus.so.5
#4  0x0000000000434666 in NetConnmanTechnologyInterface::NetConnmanTechnologyInterface(QString const&, QString const&, QDBusConnection const&, QObject*) ()
#5  0x00000000004148da in TechnologyFrame::TechnologyFrame(QString, QMap<QString, QVariant> const&, QWidget*) ()
#6  0x000000000041acb9 in ServicesWindow::onTechnologyAdded(QDBusObjectPath const&, QMap<QString, QVariant> const&) ()
#7  0x000000000041b45e in ServicesWindow::ServicesWindow(QWidget*) ()
#8  0x0000000000413505 in main ()
surlykke commented 9 years ago

Can you check if 440c3d31ca9d69 helps?

2015-10-10 19:11 GMT+02:00 Peter Mattern notifications@github.com:

0431468 https://github.com/surlykke/lxqt-connman-applet/commit/04314689e39e165a8bee3757581c72caeb15702a segfaults right upon launch on Arch Linux x86_64 running LXQt from yesterday's VCS checkouts here, regression testing suggests the problem was introduced in 7f8a030 https://github.com/surlykke/lxqt-connman-applet/commit/7f8a0308aa9979330b345b3071ac29307cba9038 . Nothing helpful in systemd's journal, backtrace is

0 0x00007f2d39264cc0 in QString::startsWith(QChar, Qt::CaseSensitivity) const () from /usr/lib/libQt5Core.so.5

1 0x00007f2d3a8626b2 in QDBusUtil::isValidObjectPath(QString const&) () from /usr/lib/libQt5DBus.so.5

2 0x00007f2d3a8554b1 in ?? () from /usr/lib/libQt5DBus.so.5

3 0x00007f2d3a857aec in QDBusAbstractInterface::QDBusAbstractInterface(QString const&, QString const&, char const, QDBusConnection const&, QObject) () from /usr/lib/libQt5DBus.so.5

4 0x0000000000434666 in NetConnmanTechnologyInterface::NetConnmanTechnologyInterface(QString const&, QString const&, QDBusConnection const&, QObject_) ()

5 0x00000000004148da in TechnologyFrame::TechnologyFrame(QString, QMap<QString, QVariant> const&, QWidget_) ()

6 0x000000000041acb9 in ServicesWindow::onTechnologyAdded(QDBusObjectPath const&, QMap<QString, QVariant> const&) ()

7 0x000000000041b45e in ServicesWindow::ServicesWindow(QWidget*) ()

8 0x0000000000413505 in main ()

— Reply to this email directly or view it on GitHub https://github.com/surlykke/lxqt-connman-applet/issues/10#issuecomment-147110553 .

pmattern commented 9 years ago

At first glance the problem seems to be fixed in 440c3d3. I'll keep an eye on this and report back if needed.

surlykke commented 9 years ago

Thanks. And thanks for reporting.

2015-10-10 23:09 GMT+02:00 Peter Mattern notifications@github.com:

At first glance the problem seems to be fixed in 440c3d3 https://github.com/surlykke/lxqt-connman-applet/commit/440c3d31ca9d699f638fafe63fda45d95fb9f369. I'll keep an eye on this and report back if needed.

— Reply to this email directly or view it on GitHub https://github.com/surlykke/lxqt-connman-applet/issues/10#issuecomment-147125907 .