https://bugs.documentfoundation.org/show_bug.cgi?id=157671

Julien Nabet <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #3 from Julien Nabet <[email protected]> ---
On pc Debian x86-64 with master sources updated today, I gave a new try, I
could reproduce this.
I retrieved some bts with gen rendering:
first OnFocusGained is called with:
#0  FmXGridCell::onFocusGained(com::sun::star::awt::FocusEvent const&)
(this=0x559179c9c6a0, _rEvent=...) at svx/source/fmcomp/gridcell.cxx:3449
#1  0x00007f6642c831d0 in FmXGridCell::OnFocusGained(LinkParamNone*)
(this=0x559179c9c6a0) at svx/source/fmcomp/gridcell.cxx:3467
#2  0x00007f6642c81c0d in FmXGridCell::LinkStubOnFocusGained(void*,
LinkParamNone*) (instance=0x559179c9c6a0, data=0x0) at
svx/source/fmcomp/gridcell.cxx:3458
#3  0x00007f6641e86b78 in Link<LinkParamNone*, void>::Call(LinkParamNone*)
const (this=0x559179c2ccd8, data=0x0) at include/tools/link.hxx:111
#4  0x00007f6641e81068 in svt::ControlBase::FocusInHdl(weld::Widget&)
(this=0x559179c2cb90) at svtools/source/brwbox/ebbcontrols.cxx:396
#5  0x00007f6641e7cf0d in svt::ControlBase::LinkStubFocusInHdl(void*,
weld::Widget&) (instance=0x559179c2cb90, data=...) at
svtools/source/brwbox/ebbcontrols.cxx:394
#6  0x00007f6640130b28 in Link<weld::Widget&, void>::Call(weld::Widget&) const
(this=0x559179bab738, data=...) at include/tools/link.hxx:111
#7  0x00007f66400f1f95 in
SalInstanceWidget::HandleEventListener(VclWindowEvent&) (this=0x559179bab690,
rEvent=...) at vcl/source/app/salvtables.cxx:735
#8  0x00007f664013af05 in
SalInstanceComboBox<ComboBox>::CallHandleEventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/inc/salvtables.hxx:934
#9  0x00007f6640125254 in
SalInstanceComboBoxWithEdit::HandleEventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/source/app/salvtables.cxx:6765
#10 0x00007f66400f269d in SalInstanceWidget::EventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/source/app/salvtables.cxx:822
#11 0x00007f66400eeefd in SalInstanceWidget::LinkStubEventListener(void*,
VclWindowEvent&) (instance=0x559179bab690, data=...) at
vcl/source/app/salvtables.cxx:820
#12 0x00007f663f7cedd8 in Link<VclWindowEvent&, void>::Call(VclWindowEvent&)
const (this=0x559179d406b0, data=...) at include/tools/link.hxx:111
#13 0x00007f663f7cbb4e in vcl::Window::CallEventListeners(VclEventId, void*)
(this=0x559179c92980, nEvent=VclEventId::WindowGetFocus, pData=0x0) at
vcl/source/window/event.cxx:262
#14 0x00007f663f7cb64c in vcl::Window::PreNotify(NotifyEvent&)
(this=0x559179c92980, rNEvt=...) at vcl/source/window/event.cxx:70
#15 0x00007f663f9b6689 in Edit::PreNotify(NotifyEvent&) (this=0x559179c92980,
rNEvt=...) at vcl/source/control/edit.cxx:1925
#16 0x00007f663f93834d in vcl::Window::CompatPreNotify(NotifyEvent&)
(this=0x559179c92980, rNEvt=...) at vcl/source/window/window.cxx:3940
#17 0x00007f663f948501 in ImplCallPreNotify(NotifyEvent&) (rEvt=...) at
vcl/source/window/winproc.cxx:69


FIRST GAP

#18 0x00007f663f85b92e in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c92980, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:383

SECOND GAP

#19 0x00007f663f925537 in vcl::Window::GrabFocus() (this=0x559179c92980) at
vcl/source/window/window.cxx:2988
#20 0x00007f66400ef681 in SalInstanceWidget::grab_focus() (this=0x559179bab690)
at vcl/source/app/salvtables.cxx:389
#21 0x00007f663f9fcde0 in InterimItemWindow::GetFocus() (this=0x559179c2cb90)
at vcl/source/control/InterimItemWindow.cxx:135
#22 0x00007f663f93823c in vcl::Window::CompatGetFocus() (this=0x559179c2cb90)
at vcl/source/window/window.cxx:3908
#23 0x00007f663f85b9a1 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c2cb90, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:384
#24 0x00007f663f925537 in vcl::Window::GrabFocus() (this=0x559179c2cb90) at
vcl/source/window/window.cxx:2988
#25 0x00007f6641e8d298 in svt::EditBrowseBox::StartEditHdl(void*)
(this=0x559179c52260) at svtools/source/brwbox/editbrowsebox.cxx:208
#26 0x00007f6641e8d1ed in svt::EditBrowseBox::LinkStubStartEditHdl(void*,
void*) (instance=0x559179c52260, data=0x0) at
svtools/source/brwbox/editbrowsebox.cxx:201

and when OnFocusLost is called:
#0  FmXGridCell::onFocusLost(com::sun::star::awt::FocusEvent const&)
(this=0x559179c9c6a0, _rEvent=...) at svx/source/fmcomp/gridcell.cxx:3455
#1  0x00007f6642c832d0 in FmXGridCell::OnFocusLost(LinkParamNone*)
(this=0x559179c9c6a0) at svx/source/fmcomp/gridcell.cxx:3479
#2  0x00007f6642c81c3d in FmXGridCell::LinkStubOnFocusLost(void*,
LinkParamNone*) (instance=0x559179c9c6a0, data=0x0) at
svx/source/fmcomp/gridcell.cxx:3470
#3  0x00007f6641e86b78 in Link<LinkParamNone*, void>::Call(LinkParamNone*)
const (this=0x559179c2cd00, data=0x0) at include/tools/link.hxx:111
#4  0x00007f6641e810b8 in svt::ControlBase::FocusOutHdl(weld::Widget&)
(this=0x559179c2cb90) at svtools/source/brwbox/ebbcontrols.cxx:402
#5  0x00007f6641e7cf3d in svt::ControlBase::LinkStubFocusOutHdl(void*,
weld::Widget&) (instance=0x559179c2cb90, data=...) at
svtools/source/brwbox/ebbcontrols.cxx:400
#6  0x00007f6640130b28 in Link<weld::Widget&, void>::Call(weld::Widget&) const
(this=0x559179bab760, data=...) at include/tools/link.hxx:111
#7  0x00007f66400f1fca in
SalInstanceWidget::HandleEventListener(VclWindowEvent&) (this=0x559179bab690,
rEvent=...) at vcl/source/app/salvtables.cxx:737
#8  0x00007f664013af05 in
SalInstanceComboBox<ComboBox>::CallHandleEventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/inc/salvtables.hxx:934
#9  0x00007f6640125254 in
SalInstanceComboBoxWithEdit::HandleEventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/source/app/salvtables.cxx:6765
#10 0x00007f66400f269d in SalInstanceWidget::EventListener(VclWindowEvent&)
(this=0x559179bab690, rEvent=...) at vcl/source/app/salvtables.cxx:822
#11 0x00007f66400eeefd in SalInstanceWidget::LinkStubEventListener(void*,
VclWindowEvent&) (instance=0x559179bab690, data=...) at
vcl/source/app/salvtables.cxx:820
#12 0x00007f663f7cedd8 in Link<VclWindowEvent&, void>::Call(VclWindowEvent&)
const (this=0x559179d3c350, data=...) at include/tools/link.hxx:111
#13 0x00007f663f7cbb4e in vcl::Window::CallEventListeners(VclEventId, void*)
(this=0x559179c92980, nEvent=VclEventId::WindowLoseFocus, pData=0x0) at
vcl/source/window/event.cxx:262
#14 0x00007f663f7cb71a in vcl::Window::PreNotify(NotifyEvent&)
(this=0x559179c92980, rNEvt=...) at vcl/source/window/event.cxx:82
#15 0x00007f663f9b6689 in Edit::PreNotify(NotifyEvent&) (this=0x559179c92980,
rNEvt=...) at vcl/source/control/edit.cxx:1925
#16 0x00007f663f93834d in vcl::Window::CompatPreNotify(NotifyEvent&)
(this=0x559179c92980, rNEvt=...) at vcl/source/window/window.cxx:3940
#17 0x00007f663f948501 in ImplCallPreNotify(NotifyEvent&) (rEvt=...) at
vcl/source/window/winproc.cxx:69

FIRST GAP

#18 0x00007f663f85b5a5 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c971a0, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:355
#19 0x00007f663f9b5fe0 in Edit::GetFocus() (this=0x559179c92980) at
vcl/source/control/edit.cxx:1845
#20 0x00007f663f93823c in vcl::Window::CompatGetFocus() (this=0x559179c92980)
at vcl/source/window/window.cxx:3908

#21 0x00007f663f85b9a1 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c92980, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:384

SECOND GAP

#22 0x00007f663f925537 in vcl::Window::GrabFocus() (this=0x559179c92980) at
vcl/source/window/window.cxx:2988
#23 0x00007f66400ef681 in SalInstanceWidget::grab_focus() (this=0x559179bab690)
at vcl/source/app/salvtables.cxx:389
#24 0x00007f663f9fcde0 in InterimItemWindow::GetFocus() (this=0x559179c2cb90)
at vcl/source/control/InterimItemWindow.cxx:135
#25 0x00007f663f93823c in vcl::Window::CompatGetFocus() (this=0x559179c2cb90)
at vcl/source/window/window.cxx:3908
#26 0x00007f663f85b9a1 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c2cb90, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:384
#27 0x00007f663f925537 in vcl::Window::GrabFocus() (this=0x559179c2cb90) at
vcl/source/window/window.cxx:2988
#28 0x00007f6641e8d298 in svt::EditBrowseBox::StartEditHdl(void*)
(this=0x559179c52260) at svtools/source/brwbox/editbrowsebox.cxx:208
#29 0x00007f6641e8d1ed in svt::EditBrowseBox::LinkStubStartEditHdl(void*,
void*) (instance=0x559179c52260, data=0x0) at
svtools/source/brwbox/editbrowsebox.cxx:201


In both bts, I put FIRST GAP and SECOND GAP.
After SECOND GAP, I think it's pure common part.
Before FIRST GAP, I'm quite sure we can tell event is onFocusGain/onFocusLost
depending on first or second bt.

The interesting part is between both gaps
In first one, we just call:
#18 0x00007f663f85b92e in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c92980, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:383

in the second one:
#18 0x00007f663f85b5a5 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c971a0, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:355
#19 0x00007f663f9b5fe0 in Edit::GetFocus() (this=0x559179c92980) at
vcl/source/control/edit.cxx:1845
#20 0x00007f663f93823c in vcl::Window::CompatGetFocus() (this=0x559179c92980)
at vcl/source/window/window.cxx:3908

#21 0x00007f663f85b9a1 in vcl::Window::ImplGrabFocus(GetFocusFlags)
(this=0x559179c92980, nFlags=GetFocusFlags::NONE) at
vcl/source/window/mouse.cxx:384

Now I'm not an expert but it seems a method call CompatGetFocus must some kind
of technical debt on LO code that we must deal with.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to