Summary: | Systemtray icons disappear on panel resize | ||
---|---|---|---|
Product: | [Unmaintained] plasma4 | Reporter: | FiNeX <finex> |
Component: | panel | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | alex, greg.martyn, humufr, mail, rdieter, stefan |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
patch to test what's going on there
patch that hopefully fixes the prob 2th try systray wrong position patch that fixes it |
Description
FiNeX
2008-06-17 19:16:07 UTC
Moreover, after plasma has been restarted, icons (kmix and klipper) which were on the systray are placed on the top left corner of the screen. I've re-tried with a clean account and plasma crash the first time the panel is resized. After it doesn't crash anymore. *** This bug has been marked as a duplicate of 162765 *** ups, sorry. I did just note that the other report was closed meanwhile and probably also contains other cases. So, let's go the easy way to reopen this one and point also to the relevant reports bug #162765 and bug #821398 plus dozend of duplicates. another correction; * bug #162765 and bug #160659 are related. * all this still is part of #155381 aka "the neverending story, part I" ok, a guess; systemtraywidget.cpp looks like this; SystemTrayContainer *container = new SystemTrayContainer(this); addWidgetToLayout(container); emit sizeShouldChange(); connect(container, SIGNAL(destroyed(QObject *)), this, SLOT(relayoutContainers(QObject *))); //<== CRASHES while the SystemTrayContainer ctor contains; connect(this, SIGNAL(clientClosed()), SLOT(deleteLater())); so... what *may* happen is, that the clientClosed() got fired up before the connect(container, SIGNAL(destroyed(QObject *)), this, SLOT(relayoutContainers(QObject *))); was setup and therefore we end in a crash... Created attachment 25426 [details]
patch to test what's going on there
the guess has a few drawbacks like why should clientClosed() be called if we
didn't call embedClient() yet?!
Anyway, if you like could you please try to apply the attached patch which
should either invalidate or validate my guess - thanks in advance :)
ah, no... it would even make sense if clientClosed() is called since with the emit sizeShouldChange(); the updateWidgetGeometry() got called which does acutaly a delete... So, fix would be to move the emit sizeShouldChange(); at the end of the SystemTrayWidget::x11Event() method... Created attachment 25428 [details]
patch that hopefully fixes the prob
Could you please try the attached patch? thx :)
Yes, I'll try it now. Ok, with this patch I've got no crash. But all the icons on the systray disappeared (kmix and klipper). I've started kwallet and its icon appeared on the systray. Created attachment 25429 [details]
2th try
At least the crash is gone :) Well, probably we should use the
clientIsEmbedded() signal to relayout at the correct time aka after the
embedding is done. Attached patch does this (it replaces the prev patch) and
since I am not able to reproduce neither the crash nor the layout-prob, it
would be great if you could give it a try again - thanks in advance :)
Same as before: no crash and icons disappears :-( ok, since we have tagging tomorrow iirc I just committed the crash-fix with r821590 and what remains is the layout-bug (which I am still not able to reproduce, hmpf). crash=>normal *** Bug 160659 has been marked as a duplicate of this bug. *** *** Bug 164358 has been marked as a duplicate of this bug. *** re comment #11; for a possible reason for this see http://bugs.kde.org/show_bug.cgi?id=164445#c14 and commit r822917 fixes also the remaining layout-bug. Thanks to Jason for the hint and to FiNeX for the feedback! :) *** Bug 164667 has been marked as a duplicate of this bug. *** *** Bug 164983 has been marked as a duplicate of this bug. *** I reopen this report: using curren trunk (r826753) when I resize the panel the system tray disappear from the panel and after some seconds it appears on top-right corner, near the cashew. I'll attach a screenshot. Created attachment 25769 [details]
systray wrong position
after resizing the panel, the systray disappear from the panel and appear on
the top right corner.
sounds like a regression introduced with commit r826397, r826530 or r826594. "systray, the neverending story returns, part II" :-/ Created attachment 25771 [details]
patch that fixes it
attached poatch fixes it by;
* delaying also the init() itself accordint to the setVisible and
* be sure we don't call startupDelayer() multiple times
but there is another new regression; if the panel is vertical then the icons
are not aligned horizontal any longer.
fixed again with r826926 :) the "other new regression" seems to be actual a prob with the panel I've since today, so it's not related and probably already fixed. Thanks for the fast feedback, FiNeX! :) |