[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: Review Request: Broken layout in KEditToolbar after restoring
From: ahartmetz () gmail ! com
Date: 2009-08-11 19:01:05
Message-ID: 20090811190105.28789.18902 () localhost
[Download RAW message or body]
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/1252/#review1981
-----------------------------------------------------------
Nitpick: Pointer checks are fine to establish identity. But only if the pointed-to \
objects are both alive...
- maelcum
On 2009-08-10 12:24:09, Parker Coates wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/1252/
> -----------------------------------------------------------
>
> (Updated 2009-08-10 12:24:09)
>
>
> Review request for kdelibs.
>
>
> Summary
> -------
>
> The issue:
> 1. Open up any KDE app with a toolbar.
> 2. Settings > Configure Toolbars...
> 3. Click the Defaults button and confirm.
> 4. Notice that the dialog layout is (most likely, but not always) broken.
>
> While trying to track down this issue, I made a rather small patch (below) to \
> kedittoolbar.cpp. The patch fixed the issue, but I didn't understand why. After \
> reverting the patch and doing some more digging, I learned the call to \
> KDialog::setMainWidget(QWidget*) wasn't doing anything. So I looked into that code \
> and found that the method was returning early if the new widget pointer was the \
> same as the old. I slapped in a few kDebug lines and, low and behold, the new \
> widget was being given the exact same address as the old one, so setMainWidget was \
> convinced that the widget hadn't actually changed and didn't bother setting up the \
> layout. Of course address assignment depends on the memory manager, so the issue \
> isn't 100% repeatable as sometimes the new widget gets a different address.
> The attached patch to KDialog removes this check. My understanding is that it's \
> generally bad practice to use pointer addresses to establish identity. I also can't \
> think of too many legitimate use cases that would require repeated calls to \
> setMainWidget with the same widget and would need this check for performance \
> reasons. But I could be wrong. Provided the patch is reasonable, I think it makes \
> sense to backport to the 4.3 branch.
> Another alternative would be to make KDialog's mMainWidget a QPointer, but that \
> change seemed more invasive, and I'm still pretty terrified of breaking things in \
> kdelibs. :)
> The patch to KEditToolbar is no longer strictly necessary, but it does fix an \
> somewhat annoying flicker that occurs when the main widget is replaced, so I'd \
> still like to commit it. Of course, it would be a separate commit and probably \
> doesn't need to be backported.
>
> This addresses bug 180064.
> https://bugs.kde.org/show_bug.cgi?id=180064
>
>
> Diffs
> -----
>
> trunk/KDE/kdelibs/kdeui/dialogs/kdialog.cpp 1008090
> trunk/KDE/kdelibs/kdeui/dialogs/kedittoolbar.cpp 1008090
>
> Diff: http://reviewboard.kde.org/r/1252/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> Parker
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic