summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-08-02 16:32:09 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-08-02 22:06:36 +0200
commit36f5265b038b610c61ebc459465c5c58b1d9dc28 (patch)
tree08953c2ec35d5f1f913387bff47f2e762b23fcc2 /vcl
parent94811eac3bd3077b60029c52d7798bca9b3c877b (diff)
tdf#135368 change the mnemonic to point to our combobox replacement
Change-Id: Ib53b787399954e5be7e4b4080366fe64cc937de3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99958 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 20078e3950bb..fba1fa52fec8 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1768,6 +1768,17 @@ namespace
gtk_size_group_add_widget(pSizeGroup, pReplacement);
}
+ // tdf#135368 change the mnemonic to point to our replacement
+ GList* pLabels = gtk_widget_list_mnemonic_labels(pWidget);
+ for (GList* pLabel = g_list_first(pLabels); pLabel; pLabel = g_list_next(pLabel))
+ {
+ GtkWidget* pLabelWidget = static_cast<GtkWidget*>(pLabel->data);
+ if (!GTK_IS_LABEL(pLabelWidget))
+ continue;
+ gtk_label_set_mnemonic_widget(GTK_LABEL(pLabelWidget), pReplacement);
+ }
+ g_list_free(pLabels);
+
gtk_container_add(GTK_CONTAINER(pParent), pReplacement);
if (GTK_IS_GRID(pParent))
@@ -14169,6 +14180,21 @@ private:
}
}
+ void signal_combo_mnemonic_activate()
+ {
+ if (m_pEntry)
+ gtk_widget_grab_focus(m_pEntry);
+ else
+ gtk_widget_grab_focus(m_pToggleButton);
+ }
+
+ static gboolean signalComboMnemonicActivate(GtkWidget*, gboolean, gpointer widget)
+ {
+ GtkInstanceComboBox* pThis = static_cast<GtkInstanceComboBox*>(widget);
+ pThis->signal_combo_mnemonic_activate();
+ return true;
+ }
+
public:
GtkInstanceComboBox(GtkBuilder* pComboBuilder, GtkComboBox* pComboBox, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(gtk_builder_get_object(pComboBuilder, "box")), pBuilder, bTakeOwnership)
@@ -14297,6 +14323,8 @@ public:
if (nActive != -1)
tree_view_set_cursor(nActive);
+ g_signal_connect(getContainer(), "mnemonic-activate", G_CALLBACK(signalComboMnemonicActivate), this);
+
g_signal_connect(m_pMenuWindow, "grab-broken-event", G_CALLBACK(signalGrabBroken), this);
g_signal_connect(m_pMenuWindow, "button-press-event", G_CALLBACK(signalButtonPress), this);
g_signal_connect(m_pMenuWindow, "motion-notify-event", G_CALLBACK(signalMotion), this);