summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-12-19 11:55:05 +0000
committerCaolán McNamara <caolanm@redhat.com>2022-12-20 08:22:42 +0000
commitf49ffc2ca908712831d9b7b3432b053728e541e0 (patch)
tree535a154d7003540089f64d2703581f224cdcb635 /svtools
parentb476027308a3be3459f1f499573848ee700fa607 (diff)
Resolves: tdf#146933 wire up keypress events for table control widgets
Change-Id: Idc8cc3c24d061537a76a37f4fa84951a41a42657 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144488 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/brwbox/ebbcontrols.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx
index b6a27a2567f4..b0a2ad1bbcc3 100644
--- a/svtools/source/brwbox/ebbcontrols.cxx
+++ b/svtools/source/brwbox/ebbcontrols.cxx
@@ -30,6 +30,7 @@ namespace svt
m_xWidget->set_entry_width_chars(1); // so a smaller than default width can be used
m_xWidget->connect_changed(LINK(this, ComboBoxControl, SelectHdl));
m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl));
+ m_xWidget->connect_key_release(LINK(this, ControlBase, KeyReleaseHdl));
m_xWidget->connect_focus_in(LINK(this, ControlBase, FocusInHdl));
m_xWidget->connect_focus_out(LINK(this, ControlBase, FocusOutHdl));
m_xWidget->connect_mouse_press(LINK(this, ControlBase, MousePressHdl));
@@ -125,6 +126,7 @@ namespace svt
m_xWidget->set_size_request(42, -1); // so a later narrow size request can stick
m_xWidget->connect_changed(LINK(this, ListBoxControl, SelectHdl));
m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl));
+ m_xWidget->connect_key_release(LINK(this, ControlBase, KeyReleaseHdl));
m_xWidget->connect_focus_in(LINK(this, ControlBase, FocusInHdl));
m_xWidget->connect_focus_out(LINK(this, ControlBase, FocusOutHdl));
m_xWidget->connect_mouse_press(LINK(this, ControlBase, MousePressHdl));
@@ -203,6 +205,7 @@ namespace svt
m_aModeState.bTriStateEnabled = true;
InitControlBase(m_xBox.get());
m_xBox->connect_key_press(LINK(this, ControlBase, KeyInputHdl));
+ m_xBox->connect_key_release(LINK(this, ControlBase, KeyReleaseHdl));
m_xBox->connect_focus_in(LINK(this, ControlBase, FocusInHdl));
m_xBox->connect_focus_out(LINK(this, ControlBase, FocusOutHdl));
m_xBox->connect_mouse_press(LINK(this, ControlBase, MousePressHdl));
@@ -362,9 +365,10 @@ namespace svt
m_pEntry = pEntry;
m_pEntry->show();
m_pEntry->set_width_chars(1); // so a smaller than default width can be used
- connect_key_press(LINK(this, ControlBase, KeyInputHdl));
- connect_focus_in(LINK(this, ControlBase, FocusInHdl));
- connect_focus_out(LINK(this, ControlBase, FocusOutHdl));
+ connect_focus_in(LINK(this, ControlBase, FocusInHdl)); // need to chain with pattern handler
+ connect_focus_out(LINK(this, ControlBase, FocusOutHdl)); // need to chain with pattern handler
+ connect_key_press(LINK(this, ControlBase, KeyInputHdl)); // need to chain with pattern handler
+ m_pEntry->connect_key_release(LINK(this, ControlBase, KeyReleaseHdl));
m_pEntry->connect_mouse_press(LINK(this, ControlBase, MousePressHdl));
m_pEntry->connect_mouse_release(LINK(this, ControlBase, MouseReleaseHdl));
m_pEntry->connect_mouse_move(LINK(this, ControlBase, MouseMoveHdl));
@@ -377,9 +381,16 @@ namespace svt
IMPL_LINK(ControlBase, KeyInputHdl, const KeyEvent&, rKEvt, bool)
{
+ m_aKeyInputHdl.Call(rKEvt);
return ProcessKey(rKEvt);
}
+ IMPL_LINK(ControlBase, KeyReleaseHdl, const KeyEvent&, rKEvt, bool)
+ {
+ m_aKeyReleaseHdl.Call(rKEvt);
+ return false;
+ }
+
IMPL_LINK_NOARG(ControlBase, FocusInHdl, weld::Widget&, void)
{
m_aFocusInHdl.Call(nullptr);
@@ -703,6 +714,7 @@ namespace svt
{
InitControlBase(m_xWidget.get());
m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl));
+ m_xWidget->connect_key_release(LINK(this, ControlBase, KeyReleaseHdl));
m_xWidget->connect_focus_in(LINK(this, ControlBase, FocusInHdl));
m_xWidget->connect_focus_out(LINK(this, ControlBase, FocusOutHdl));
m_xWidget->connect_mouse_press(LINK(this, ControlBase, MousePressHdl));