gnucash stable: Multiple changes pushed
Robert Fewell
bobit at code.gnucash.org
Thu Sep 12 05:27:04 EDT 2024
Updated via https://github.com/Gnucash/gnucash/commit/9dee3433 (commit)
via https://github.com/Gnucash/gnucash/commit/4314bf1c (commit)
from https://github.com/Gnucash/gnucash/commit/f2aff99b (commit)
commit 9dee3433c178a82c64e8133e2940677f2389c0a7
Author: Robert Fewell <14uBobIT at gmail.com>
Date: Thu Sep 12 10:17:42 2024 +0100
Remove Windows ifdef for VK_DECIMAL
There was Windows specific ifdef code for the setting of the event
keyval property to GDK_KEY_KP_Decimal in five locations which is now
redundant. The requirement for this was fixed in Gtk version 3.17.2
https://gitlab.gnome.org/GNOME/gtk/-/commit/578043f97e891e423648c9f70ddf1d185f4615c4
diff --git a/gnucash/gnome-utils/gnc-amount-edit.c b/gnucash/gnome-utils/gnc-amount-edit.c
index 969da4c636..dedfbeb909 100644
--- a/gnucash/gnome-utils/gnc-amount-edit.c
+++ b/gnucash/gnome-utils/gnc-amount-edit.c
@@ -278,11 +278,6 @@ gnc_amount_edit_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_
gtk_widget_set_tooltip_text (GTK_WIDGET(gae->image), NULL);
}
-#ifdef G_OS_WIN32
- /* gdk never sends GDK_KEY_KP_Decimal on win32. See #486658 */
- if (event->hardware_keycode == VK_DECIMAL)
- event->keyval = GDK_KEY_KP_Decimal;
-#endif
if (event->keyval == GDK_KEY_KP_Decimal)
{
gchar *decimal;
diff --git a/gnucash/gnome/gnc-budget-view.c b/gnucash/gnome/gnc-budget-view.c
index dab47171d0..311b81306e 100644
--- a/gnucash/gnome/gnc-budget-view.c
+++ b/gnucash/gnome/gnc-budget-view.c
@@ -773,12 +773,6 @@ gbv_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
if (event->type != GDK_KEY_PRESS || !priv->temp_cr)
return FALSE;
-#ifdef G_OS_WIN32
- /* gdk never sends GDK_KEY_KP_Decimal on win32. See #486658 */
- if (event->hardware_keycode == VK_DECIMAL)
- event->keyval = GDK_KEY_KP_Decimal;
-#endif
-
switch (event->keyval)
{
case GDK_KEY_KP_Decimal:
diff --git a/gnucash/register/register-gnome/formulacell-gnome.c b/gnucash/register/register-gnome/formulacell-gnome.c
index 74691f34eb..196d7d2099 100644
--- a/gnucash/register/register-gnome/formulacell-gnome.c
+++ b/gnucash/register/register-gnome/formulacell-gnome.c
@@ -71,11 +71,7 @@ gnc_formula_cell_direct_update( BasicCell *bcell,
* this after fixing a bug where one copy was kept up to date, and the
* other not. So, fix this.
*/
-#ifdef G_OS_WIN32
- /* gdk never sends GDK_KEY_KP_Decimal on win32. See #486658 */
- if (event->hardware_keycode == VK_DECIMAL)
- event->keyval = GDK_KEY_KP_Decimal;
-#endif
+
switch (event->keyval)
{
case GDK_KEY_Return:
diff --git a/gnucash/register/register-gnome/gnucash-sheet.c b/gnucash/register/register-gnome/gnucash-sheet.c
index 3590e909c9..1dad75c7d5 100644
--- a/gnucash/register/register-gnome/gnucash-sheet.c
+++ b/gnucash/register/register-gnome/gnucash-sheet.c
@@ -1876,14 +1876,8 @@ gnucash_sheet_key_press_event (GtkWidget *widget, GdkEventKey *event)
sheet = GNUCASH_SHEET(widget);
/* bug#60582 comment#27 2
save shift state to enable <shift minus> and <shift equal>
- bug#618434
- save keyval to handle GDK_KEY_KP_Decimal event
*/
-#ifdef G_OS_WIN32
- /* gdk never sends GDK_KEY_KP_Decimal on win32. See #486658 */
- if (event->hardware_keycode == VK_DECIMAL)
- event->keyval = GDK_KEY_KP_Decimal;
-#endif
+
sheet->shift_state = event->state & GDK_SHIFT_MASK;
sheet->keyval_state =
(event->keyval == GDK_KEY_KP_Decimal) ? GDK_KEY_KP_Decimal : 0;
diff --git a/gnucash/register/register-gnome/pricecell-gnome.c b/gnucash/register/register-gnome/pricecell-gnome.c
index f0c22f8d95..5392b928dd 100644
--- a/gnucash/register/register-gnome/pricecell-gnome.c
+++ b/gnucash/register/register-gnome/pricecell-gnome.c
@@ -60,11 +60,6 @@ gnc_price_cell_direct_update (BasicCell *bcell,
is_return = FALSE;
-#ifdef G_OS_WIN32
- /* gdk never sends GDK_KEY_KP_Decimal on win32. See #486658 */
- if (event->hardware_keycode == VK_DECIMAL)
- event->keyval = GDK_KEY_KP_Decimal;
-#endif
switch (event->keyval)
{
case GDK_KEY_Return:
commit 4314bf1c9f10bcf53965728d498ebb2e593e2b79
Author: Robert Fewell <14uBobIT at gmail.com>
Date: Thu Sep 12 09:59:15 2024 +0100
Bug 799399 - Windows Keypad decimal locale error
On Windows, the keypad decimal isn't a comma in dialogs that use the
GncAmountEdit widget for locales that calls for it.
This appears to be a problem with Gtk so instead do the entry update
in the key press call back instead of trying to change the event and
passing it on.
diff --git a/gnucash/gnome-utils/gnc-amount-edit.c b/gnucash/gnome-utils/gnc-amount-edit.c
index c8774622dc..969da4c636 100644
--- a/gnucash/gnome-utils/gnc-amount-edit.c
+++ b/gnucash/gnome-utils/gnc-amount-edit.c
@@ -285,15 +285,40 @@ gnc_amount_edit_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_
#endif
if (event->keyval == GDK_KEY_KP_Decimal)
{
+ gchar *decimal;
+
if (gae->print_info.monetary)
{
struct lconv *lc = gnc_localeconv ();
event->keyval = lc->mon_decimal_point[0];
- event->string[0] = lc->mon_decimal_point[0];
+ decimal = g_strdup_printf ("%c", lc->mon_decimal_point[0]);
}
- }
+ else
+ decimal = g_strdup_printf ("%c",'.');
+
+ GtkEditable *editable = GTK_EDITABLE(widget);
+ gint start_pos, end_pos;
+ gint position = gtk_editable_get_position (editable);
+
+ if (gtk_editable_get_selection_bounds (editable,
+ &start_pos, &end_pos))
+ {
+ position = start_pos;
- result = (* GTK_WIDGET_GET_CLASS(widget)->key_press_event)(widget, event);
+ gtk_editable_delete_selection (editable);
+ gtk_editable_insert_text (editable,
+ decimal, -1, &position);
+ }
+ else
+ gtk_editable_insert_text (editable,
+ decimal, -1, &position);
+
+ gtk_editable_set_position (editable, position);
+ g_free (decimal);
+ result = TRUE;
+ }
+ else
+ result = (* GTK_WIDGET_GET_CLASS(widget)->key_press_event)(widget, event);
switch (event->keyval)
{
Summary of changes:
gnucash/gnome-utils/gnc-amount-edit.c | 36 +++++++++++++++++-----
gnucash/gnome/gnc-budget-view.c | 6 ----
.../register/register-gnome/formulacell-gnome.c | 6 +---
gnucash/register/register-gnome/gnucash-sheet.c | 8 +----
gnucash/register/register-gnome/pricecell-gnome.c | 5 ---
5 files changed, 30 insertions(+), 31 deletions(-)
More information about the gnucash-changes
mailing list