https://issues.apache.org/ooo/show_bug.cgi?id=122453

--- Comment #5 from Andre <[email protected]> ---
On my way toward the root cause.  Looks like the "Position and Size" panel
works as designed.  The problem lies deeper, somewhere between SdrObject
notifying a model change and SfxStateCache not being properly updated.

When the OLE object (or other shapes; after the OLE has been inserted the bug
occurs with other non-OLE shapes as well) is moved or resized then as indirect
result (triggered by sd::Window::MouseButtonUp()),
DrawViewShell::ModelHasChanged() calls SfxShell::Invalidate(0) which
invalidates all slots of the current shell.  This should update both size and
position in the panel.  This fails in some cases when a slot's SfxStateCache
has no SfxSlotServer attached to it.

Now the strange thing.  The SfxStateCache is only invalidated when there is a
valid SfxSlotServer.  This slot server is looked up only when the state cache
is already dirty.  But the state cache is only set to dirty when there is a
valid slot server.  Catch 22.

I have made an experiment with looking up the slot server in
SfxStateCache::GetSlotServer() even when the state cache is not dirty.  This
fixes the bug.  But I would like to understand how this whole slot system is
supposed to work.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to