From: PCMan <pcm...@gm...> - 2014-06-26 04:56:11
|
Hello, I have some good news again. I just started porting lxqt-panel to qt5 and it's nearly finished now. Previously Alexis Lopez Zubieta contributed some code in this area. However, the naming of headers and some APIs are changed dramatically in the last few months. Merging azubieta's branch with current code base is difficult. So I did it from scratch and tried to integrate the changes done in azubieta's branch as much as possible. Now, the result is in the "qt5" branch of lxqt-panel. Most of the plugins are already successfully migrated to Qt5. The only things that do not work in Qt5 "yet" are kbindicator and systray plugins. Hence I turned them off temporarily and everything works. Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. There are still some problems in the CMake rules and I intend to leave this part to Luis and other experts. At least I finished the C++ parts which I know better. :-) Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 DE. Cheers! |
From: PCMan <pcm...@gm...> - 2014-06-26 10:31:14
|
On Thu, Jun 26, 2014 at 12:56 PM, PCMan <pcm...@gm...> wrote: > Hello, > I have some good news again. > I just started porting lxqt-panel to qt5 and it's nearly finished now. > Previously Alexis Lopez Zubieta contributed some code in this area. > However, the naming of headers and some APIs are changed dramatically > in the last few months. > Merging azubieta's branch with current code base is difficult. > So I did it from scratch and tried to integrate the changes done in > azubieta's branch as much as possible. Now, the result is in the "qt5" > branch of lxqt-panel. > Most of the plugins are already successfully migrated to Qt5. > The only things that do not work in Qt5 "yet" are kbindicator and > systray plugins. > Hence I turned them off temporarily and everything works. > Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. > > There are still some problems in the CMake rules and I intend to leave > this part to Luis and other experts. At least I finished the C++ parts > which I know better. :-) > Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 DE. > > Cheers! Update: Now all plugins build correctly with both Qt4 and Qt5. I already opened a PR for it so please help test and review. The port is consider 99% complete. Things that do not work: 1. system tray plugin does not work. (I think there is a bug in Qt5 so we never get ClientMessage from X11) 2. kbindicator does not function correctly (this is an old problem which also exists in Qt4) Other plugins all work normally as usual. After finishing the port of lxqt-config-*, we have full Qt5 support. Cheers! |
From: Martin G. <mgr...@kd...> - 2014-06-26 10:55:45
Attachments:
signature.asc
|
On Thursday 26 June 2014 18:31:06 PCMan wrote: > On Thu, Jun 26, 2014 at 12:56 PM, PCMan <pcm...@gm...> wrote: > > Hello, > > I have some good news again. > > I just started porting lxqt-panel to qt5 and it's nearly finished now. > > Previously Alexis Lopez Zubieta contributed some code in this area. > > However, the naming of headers and some APIs are changed dramatically > > in the last few months. > > Merging azubieta's branch with current code base is difficult. > > So I did it from scratch and tried to integrate the changes done in > > azubieta's branch as much as possible. Now, the result is in the "qt5" > > branch of lxqt-panel. > > Most of the plugins are already successfully migrated to Qt5. > > The only things that do not work in Qt5 "yet" are kbindicator and > > systray plugins. > > Hence I turned them off temporarily and everything works. > > Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. > > > > There are still some problems in the CMake rules and I intend to leave > > this part to Luis and other experts. At least I finished the C++ parts > > which I know better. :-) > > Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 DE. > > > > Cheers! > > Update: > Now all plugins build correctly with both Qt4 and Qt5. > I already opened a PR for it so please help test and review. > The port is consider 99% complete. > Things that do not work: > 1. system tray plugin does not work. (I think there is a bug in Qt5 so > we never get ClientMessage from X11) as you wrote "ClientMessage" and not client_message: the code needs to be ported from XLib to xcb. Plasma btw. skipped that part and gave the xembed systray the boot. Cheers Martin |
From: PCMan <pcm...@gm...> - 2014-06-26 11:20:21
|
On Thu, Jun 26, 2014 at 6:33 PM, Martin Gräßlin <mgr...@kd...> wrote: > On Thursday 26 June 2014 18:31:06 PCMan wrote: >> On Thu, Jun 26, 2014 at 12:56 PM, PCMan <pcm...@gm...> wrote: >> > Hello, >> > I have some good news again. >> > I just started porting lxqt-panel to qt5 and it's nearly finished now. >> > Previously Alexis Lopez Zubieta contributed some code in this area. >> > However, the naming of headers and some APIs are changed dramatically >> > in the last few months. >> > Merging azubieta's branch with current code base is difficult. >> > So I did it from scratch and tried to integrate the changes done in >> > azubieta's branch as much as possible. Now, the result is in the "qt5" >> > branch of lxqt-panel. >> > Most of the plugins are already successfully migrated to Qt5. >> > The only things that do not work in Qt5 "yet" are kbindicator and >> > systray plugins. >> > Hence I turned them off temporarily and everything works. >> > Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. >> > >> > There are still some problems in the CMake rules and I intend to leave >> > this part to Luis and other experts. At least I finished the C++ parts >> > which I know better. :-) >> > Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 DE. >> > >> > Cheers! >> >> Update: >> Now all plugins build correctly with both Qt4 and Qt5. >> I already opened a PR for it so please help test and review. >> The port is consider 99% complete. >> Things that do not work: >> 1. system tray plugin does not work. (I think there is a bug in Qt5 so >> we never get ClientMessage from X11) > > as you wrote "ClientMessage" and not client_message: the code needs to be > ported from XLib to xcb. Plasma btw. skipped that part and gave the xembed > systray the boot. > > Cheers > Martin Well, I fixed the tray plugin already. It's my fault. I did not notice that we need to do apply ~0x80 bit mask to event->response_type in xcb. This is never documented, but all existing code does that. When checking the type of the event in xcb, we need to do ~0x80 first and check the result. It's pretty weird but this is how xcb works. Now, lxqt-panel is fully working in Qt5 mode. Hooray! |
From: Martin G. <mgr...@kd...> - 2014-06-26 11:54:29
Attachments:
signature.asc
|
On Thursday 26 June 2014 19:20:14 PCMan wrote: > On Thu, Jun 26, 2014 at 6:33 PM, Martin Gräßlin <mgr...@kd...> wrote: > > On Thursday 26 June 2014 18:31:06 PCMan wrote: > >> On Thu, Jun 26, 2014 at 12:56 PM, PCMan <pcm...@gm...> wrote: > >> > Hello, > >> > I have some good news again. > >> > I just started porting lxqt-panel to qt5 and it's nearly finished now. > >> > Previously Alexis Lopez Zubieta contributed some code in this area. > >> > However, the naming of headers and some APIs are changed dramatically > >> > in the last few months. > >> > Merging azubieta's branch with current code base is difficult. > >> > So I did it from scratch and tried to integrate the changes done in > >> > azubieta's branch as much as possible. Now, the result is in the "qt5" > >> > branch of lxqt-panel. > >> > Most of the plugins are already successfully migrated to Qt5. > >> > The only things that do not work in Qt5 "yet" are kbindicator and > >> > systray plugins. > >> > Hence I turned them off temporarily and everything works. > >> > Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. > >> > > >> > There are still some problems in the CMake rules and I intend to leave > >> > this part to Luis and other experts. At least I finished the C++ parts > >> > which I know better. :-) > >> > Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 > >> > DE. > >> > > >> > Cheers! > >> > >> Update: > >> Now all plugins build correctly with both Qt4 and Qt5. > >> I already opened a PR for it so please help test and review. > >> The port is consider 99% complete. > >> Things that do not work: > >> 1. system tray plugin does not work. (I think there is a bug in Qt5 so > >> we never get ClientMessage from X11) > > > > as you wrote "ClientMessage" and not client_message: the code needs to be > > ported from XLib to xcb. Plasma btw. skipped that part and gave the xembed > > systray the boot. > > > > Cheers > > Martin > > Well, I fixed the tray plugin already. > It's my fault. I did not notice that we need to do apply ~0x80 bit > mask to event->response_type in xcb. > This is never documented, but all existing code does that. > When checking the type of the event in xcb, we need to do ~0x80 first > and check the result. > It's pretty weird but this is how xcb works. ah yeah, also stumbled over it. And I even found the reason for it: it's to ignore the send event flag. It's described on page 1 of the X11 protocol specification: "Every event contains an 8-bit type code. The most significant bit in this code is set if the event was generated from a SendEvent request." As a ClientMessage normally is from SendEvent the event type has a 1 as most significant bit and breaks the the switch statement. And if one needs to know whether it was from a SendEvent one needs to and it in similar way. Cheers Martin |
From: Alexis L. Z. <azu...@es...> - 2014-06-26 14:32:04
Attachments:
signature.asc
|
Great news, It's a shame that my code were useless I will do it better next time :D. I will test it right now. Best Alexis López Zubieta El 26/06/14 07:49, Martin Gräßlin escribió: > On Thursday 26 June 2014 19:20:14 PCMan wrote: >> On Thu, Jun 26, 2014 at 6:33 PM, Martin Gräßlin <mgr...@kd...> wrote: >>> On Thursday 26 June 2014 18:31:06 PCMan wrote: >>>> On Thu, Jun 26, 2014 at 12:56 PM, PCMan <pcm...@gm...> wrote: >>>>> Hello, >>>>> I have some good news again. >>>>> I just started porting lxqt-panel to qt5 and it's nearly finished now. >>>>> Previously Alexis Lopez Zubieta contributed some code in this area. >>>>> However, the naming of headers and some APIs are changed dramatically >>>>> in the last few months. >>>>> Merging azubieta's branch with current code base is difficult. >>>>> So I did it from scratch and tried to integrate the changes done in >>>>> azubieta's branch as much as possible. Now, the result is in the "qt5" >>>>> branch of lxqt-panel. >>>>> Most of the plugins are already successfully migrated to Qt5. >>>>> The only things that do not work in Qt5 "yet" are kbindicator and >>>>> systray plugins. >>>>> Hence I turned them off temporarily and everything works. >>>>> Now you can build lxqt-panel with Qt5 by passing USE_QT5=ON to cmake. >>>>> >>>>> There are still some problems in the CMake rules and I intend to leave >>>>> this part to Luis and other experts. At least I finished the C++ parts >>>>> which I know better. :-) >>>>> Please help test lxqt-panel with Qt5 and soon we can have a fully Qt5 >>>>> DE. >>>>> >>>>> Cheers! >>>> >>>> Update: >>>> Now all plugins build correctly with both Qt4 and Qt5. >>>> I already opened a PR for it so please help test and review. >>>> The port is consider 99% complete. >>>> Things that do not work: >>>> 1. system tray plugin does not work. (I think there is a bug in Qt5 so >>>> we never get ClientMessage from X11) >>> >>> as you wrote "ClientMessage" and not client_message: the code needs to be >>> ported from XLib to xcb. Plasma btw. skipped that part and gave the xembed >>> systray the boot. >>> >>> Cheers >>> Martin >> >> Well, I fixed the tray plugin already. >> It's my fault. I did not notice that we need to do apply ~0x80 bit >> mask to event->response_type in xcb. >> This is never documented, but all existing code does that. >> When checking the type of the event in xcb, we need to do ~0x80 first >> and check the result. >> It's pretty weird but this is how xcb works. > > ah yeah, also stumbled over it. And I even found the reason for it: it's to > ignore the send event flag. It's described on page 1 of the X11 protocol > specification: "Every event contains an 8-bit type code. The most significant > bit in this code is set if the event was generated from a SendEvent request." > > As a ClientMessage normally is from SendEvent the event type has a 1 as most > significant bit and breaks the the switch statement. > > And if one needs to know whether it was from a SendEvent one needs to and it > in similar way. > > Cheers > Martin > > > > ------------------------------------------------------------------------------ > Open source business process management suite built on Java and Eclipse > Turn processes into business applications with Bonita BPM Community Edition > Quickly connect people, data, and systems into organized workflows > Winner of BOSSIE, CODIE, OW2 and Gartner awards > http://p.sf.net/sfu/Bonitasoft > > > > _______________________________________________ > Lxde-list mailing list > Lxd...@li... > https://lists.sourceforge.net/lists/listinfo/lxde-list > |
From: PCMan <pcm...@gm...> - 2014-06-26 15:12:54
|
On Thu, Jun 26, 2014 at 10:05 PM, Alexis López Zubieta <azu...@es...> wrote: > Great news, It's a shame that my code were useless I will do it better > next time :D. No, it's not a shame. You did a good job. I read your patches to see how to fix the plugin parts since I don't really know how to do that. Your branch really helps much. It's just we changed the main branch of lxqt-panel and other associated libs too much. So starting from scratch can be cleaner than directly merging with your branch. > I will test it right now. Patches are more than welcomed. Also, I'm still using X11 now. So, you can still work on the future kwindowsystem/wayland migration. We'll need that soon. Thank you! > Best > Alexis López Zubieta |
From: PCMan <pcm...@gm...> - 2014-06-27 04:49:25
|
Although I finally made the systray plugin work, I found a severe issue last night. Due to a regression bug in Qt5, the NETWM Dock type is not set on the panel. https://bugreports.qt-project.org/browse/QTBUG-39887 So the panel will be hidden when the user try to minimize all windows; e.g. it's treated like a normal window by the WM. To workaround this, I called X11 directly to set the NETWM dock type to the panel and it works. I believe that the workaround is correct since I did it the same way as QWidget::setAttribute in Qt 4.8. However, with this fix, tray plugin stop working and the XEMBED parts now causes tons of BadMatch errors. I could not find the exact cause of the BadMatch errors and haven't found any workaround yet. The current code in the qt5 branch does not crash because the NETWM dock type implementation is incorrect. I did it after show(), but actually it can only be done before the window is created so this fix has no effect. That's why it did not cause a BadMatch. If I move it before show(), which is actually the correct behaviour, tray plugin stop working again. Seems that there are some unknown problems in the new XCB implementation of Qt5 and it works some what differently from Qt 4.8. So the same code which work perfectly in 4.8 stop working in Qt5. This is unfortunate. We have two options. 1. Drop tray plugin, and replace it with the new icon notifier spec. 2. Re-create a new tray plugin that works with qt5. Option 1 is not a panacea, either since in the new icon notifier spec, sometimes we still need to fallback to the traditional systray. Of course, we can omit the support for this part. Cheers! |
From: Martin G. <mgr...@kd...> - 2014-06-27 08:20:11
Attachments:
signature.asc
|
On Friday 27 June 2014 12:49:18 you wrote: > Although I finally made the systray plugin work, I found a severe > issue last night. > Due to a regression bug in Qt5, the NETWM Dock type is not set on the panel. > https://bugreports.qt-project.org/browse/QTBUG-39887 > So the panel will be hidden when the user try to minimize all windows; > e.g. it's treated like a normal window by the WM. > To workaround this, I called X11 directly to set the NETWM dock type > to the panel and it works. consider using KWindowSystem for it :-) But even then one needs to set it after Qt sets the window type. It gets hard overwritten whenever the window is mapped. I have that on my todo list for Qt 5.4. We have that workaround in quite some places, I think we connect to visibilityChanged event or something like that. Cheers Martin |