diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-04-22 17:26:31 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2021-08-16 10:14:29 +0200 |
commit | e0155f6bb6c209593bea73c87076715b7599fcbc (patch) | |
tree | 59b063557fda869bfb52c83d172ecc4a9b9bbc80 /include | |
parent | d8bc16bd5119a9921955b530442f7aed1eff900b (diff) |
undo blocking emitting focus events during grab_focus
revert...
commit f97dbac73fe149e8fed0932890d0c1d6be4869a3
Author: Caolán McNamara <caolanm@redhat.com>
Date: Wed Jun 26 21:00:02 2019 +0100
infinite focus changing in toc biblio page
which blocked calling focus-changed callbacks when grab_focus is called
explicitly analogous to how we block value-changed callbacks setting
values through code but don't block them when the value is changed by
user interaction.
In retrospect that was a poor choice, so revert that and subsequent
workarounds in favour of just not calling gtk_grab_focus if the widget
already has focus.
checked:
a) tdf#138427 focus set to wrong input box
b) tdf#138078 only call GetFocus if we gained focus from an unfocused state
c) tdf#137993 ensure the toplevel vcl::Window is activated
d) tdf#136941 call focus in handler explicitly
Change-Id: I411480e2d627aa9995fb41b0aa17e9fb6d34d73f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114524
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit db1cf111666847ce5ce93d18ae5ae8c29a4c44d6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120079
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/formula/funcutl.hxx | 5 | ||||
-rw-r--r-- | include/vcl/customweld.hxx | 9 |
2 files changed, 5 insertions, 9 deletions
diff --git a/include/formula/funcutl.hxx b/include/formula/funcutl.hxx index 4e008181eae7..4ed4b407c480 100644 --- a/include/formula/funcutl.hxx +++ b/include/formula/funcutl.hxx @@ -93,7 +93,10 @@ public: Modify(*xEntry); } - void GrabFocus(); + void GrabFocus() + { + xEntry->grab_focus(); + } void SelectAll() { diff --git a/include/vcl/customweld.hxx b/include/vcl/customweld.hxx index b19b64bf980e..64f980732dfb 100644 --- a/include/vcl/customweld.hxx +++ b/include/vcl/customweld.hxx @@ -63,14 +63,7 @@ public: } virtual void Show() { m_pDrawingArea->show(); } virtual void Hide() { m_pDrawingArea->hide(); } - void GrabFocus() - { - bool bHadFocus = m_pDrawingArea->has_focus(); - m_pDrawingArea->grab_focus(); - // tdf#138078 only call GetFocus if we gained focus from an unfocused state - if (!bHadFocus && m_pDrawingArea->has_focus()) - GetFocus(); - } + void GrabFocus() { m_pDrawingArea->grab_focus(); } bool HasFocus() const { return m_pDrawingArea->has_focus(); } bool IsVisible() const { return m_pDrawingArea->get_visible(); } bool IsReallyVisible() const { return m_pDrawingArea->is_visible(); } |