diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-12-15 13:10:02 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-12-15 17:29:27 +0100 |
commit | b163f838c79118809d880c76f943fdd2fc0288ed (patch) | |
tree | 18590f2c002bf57cf2c1c8fe7042e2ec5bbdfa82 /vcl | |
parent | 491efa1e5513f9c7901849dfb2c72e379efc91bd (diff) |
use locale specific decimal separator in GtkComboBoxText replacement too
Change-Id: I384362443baa386507935a76142f70ebf092d72f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107767
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 6abc74d4f9ed..cbbbe12a05a2 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -1922,6 +1922,21 @@ GtkWindow* get_focus_window() return pFocus; } +void LocalizeDecimalSeparator(GdkEventKey* pEvent) +{ + // #i1820# use locale specific decimal separator + if (pEvent->keyval == GDK_KEY_KP_Decimal && Application::GetSettings().GetMiscSettings().GetEnableLocalizedDecimalSep()) + { + GtkWindow* pFocusWin = get_focus_window(); + GtkWidget* pFocus = pFocusWin ? gtk_window_get_focus(pFocusWin) : nullptr; + // tdf#138932 except if the target is a GtkEntry used for passwords + if (!pFocus || !GTK_IS_ENTRY(pFocus) || gtk_entry_get_visibility(GTK_ENTRY(pFocus))) + { + OUString aSep(Application::GetSettings().GetLocaleDataWrapper().getNumDecimalSep()); + pEvent->keyval = aSep[0]; + } + } +} class GtkInstanceWidget : public virtual weld::Widget { @@ -2114,19 +2129,7 @@ private: static gboolean signalKey(GtkWidget*, GdkEventKey* pEvent, gpointer widget) { - // #i1820# use locale specific decimal separator - if (pEvent->keyval == GDK_KEY_KP_Decimal && Application::GetSettings().GetMiscSettings().GetEnableLocalizedDecimalSep()) - { - GtkWindow* pFocusWin = get_focus_window(); - GtkWidget* pFocus = pFocusWin ? gtk_window_get_focus(pFocusWin) : nullptr; - // tdf#138932 except if the target is a GtkEntry used for passwords - if (!pFocus || !GTK_IS_ENTRY(pFocus) || gtk_entry_get_visibility(GTK_ENTRY(pFocus))) - { - OUString aSep(Application::GetSettings().GetLocaleDataWrapper().getNumDecimalSep()); - pEvent->keyval = aSep[0]; - } - } - + LocalizeDecimalSeparator(pEvent); GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget); return pThis->signal_key(pEvent); } @@ -14605,6 +14608,7 @@ private: static gboolean signalEntryKeyPress(GtkWidget*, GdkEventKey* pEvent, gpointer widget) { GtkInstanceComboBox* pThis = static_cast<GtkInstanceComboBox*>(widget); + LocalizeDecimalSeparator(pEvent); return pThis->signal_entry_key_press(pEvent); } |