[Bug 261645] Assert when changing the default theme [MessageList::Core::ModelPrivate::applyFilterToSubtree MessageList::Core::Model::setFilter MessageList::Core::Widget::statusSelected ]
Szymon Stefanek
pragma at kvirc.net
Mon Apr 18 22:40:21 BST 2011
https://bugs.kde.org/show_bug.cgi?id=261645
Szymon Stefanek <pragma at kvirc.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pragma at kvirc.net
--- Comment #8 from Szymon Stefanek <pragma kvirc net> 2011-04-18 23:40:19 ---
Unfortunately I no longer have the devel source tree set up so I can't test/fix
it directly. However the problems is exactly the one described in comment #5 by
Sergio. Filters and disconnected-UI jobs don't go together.
I agree that it's a bit messy. The key point for disconnected-UI was
performance. I'm not sure if this is still really needed as the Qt model-view
implementation has probably improved in the meantime. Some testing would be
needed.
However.
Disconnecting the UI means "not telling the model-view framework that single
items are being inserted" and later (when UI is reconnected) declaring
layoutChanged() at once. Filters, however, use QTreeView::setRowHidden() so the
view must be "aware" of the items being inside it.
Disconnected UI jobs are usually very short but they can still be interrupted:
inside Model::viewItemJobStepInternal() there is a path that returns control to
the event loop with mModelForItemFunctions left to 0.
Two possible solutions:
- If a filter has to be applied when a disconnected UI job is running,
reconnect the UI (and remove the disconnected-UI flag from the job). This means
moving the UI reconnection code from Model::viewItemJobStepInternal() to its
own function and calling it in two places.
- Reconnect the UI as soon as a job with disconnected UI is interrupted (or
finishes, as it is now). This is simpler as it can be done entirely inside
Model::viewItemJobStepInternal() but it possibly reduces the performance a bit
(?).
--
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Kdepim-bugs
mailing list