r18974 - gnucash/trunk/src - Bug #605802 - Can't input Japanese characters at an account register window on windows with SCIM, IIIMF and XIM
Geert Janssens
gjanssens at code.gnucash.org
Sun Mar 28 17:09:58 EDT 2010
Author: gjanssens
Date: 2010-03-28 17:09:57 -0400 (Sun, 28 Mar 2010)
New Revision: 18974
Trac: http://svn.gnucash.org/trac/changeset/18974
Modified:
gnucash/trunk/src/business/business-ledger/gncEntryLedgerLayout.c
gnucash/trunk/src/register/ledger-core/split-register-layout.c
gnucash/trunk/src/register/register-core/basiccell.c
gnucash/trunk/src/register/register-core/basiccell.h
gnucash/trunk/src/register/register-core/table-allgui.c
gnucash/trunk/src/register/register-core/table-allgui.h
gnucash/trunk/src/register/register-gnome/gnucash-sheet.c
Log:
Bug #605802 - Can't input Japanese characters at an account register window on windows with SCIM, IIIMF and XIM
This patch by Yasuaki Taniguchi fixes the business register.
Modified: gnucash/trunk/src/business/business-ledger/gncEntryLedgerLayout.c
===================================================================
--- gnucash/trunk/src/business/business-ledger/gncEntryLedgerLayout.c 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/business/business-ledger/gncEntryLedgerLayout.c 2010-03-28 21:09:57 UTC (rev 18974)
@@ -46,6 +46,7 @@
cell = gnc_register_make_cell (cell_type_name);
gnc_basic_cell_set_name (cell, cell_name);
+ gnc_basic_cell_set_type_name (cell, cell_type_name);
gnc_basic_cell_set_sample_text (cell, sample_text);
gnc_basic_cell_set_alignment (cell, alignment);
gnc_basic_cell_set_expandable (cell, expandable);
Modified: gnucash/trunk/src/register/ledger-core/split-register-layout.c
===================================================================
--- gnucash/trunk/src/register/ledger-core/split-register-layout.c 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/ledger-core/split-register-layout.c 2010-03-28 21:09:57 UTC (rev 18974)
@@ -51,6 +51,7 @@
cell = gnc_register_make_cell (cell_type_name);
gnc_basic_cell_set_name (cell, cell_name);
+ gnc_basic_cell_set_type_name (cell, cell_type_name);
gnc_basic_cell_set_sample_text (cell, sample_text);
gnc_basic_cell_set_alignment (cell, alignment);
gnc_basic_cell_set_expandable (cell, expandable);
Modified: gnucash/trunk/src/register/register-core/basiccell.c
===================================================================
--- gnucash/trunk/src/register/register-core/basiccell.c 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/register-core/basiccell.c 2010-03-28 21:09:57 UTC (rev 18974)
@@ -68,7 +68,8 @@
{
g_free (cell->cell_name);
cell->cell_name = NULL;
-
+ g_free (cell->cell_type_name);
+ cell->cell_type_name = NULL;
cell->changed = FALSE;
cell->conditionally_changed = FALSE;
@@ -143,7 +144,28 @@
return (strcmp (name, cell->cell_name) == 0);
}
+
void
+gnc_basic_cell_set_type_name (BasicCell *cell, const gchar *type_name)
+{
+ if (!cell) return;
+ if (cell->cell_type_name == type_name) return;
+
+ g_free (cell->cell_type_name);
+ cell->cell_type_name = g_strdup(type_name);
+}
+
+gboolean
+gnc_basic_cell_has_type_name (BasicCell *cell, const gchar *type_name)
+{
+ if (!cell) return FALSE;
+ if (!type_name) return FALSE;
+ if(!cell->cell_type_name) return FALSE;
+
+ return (g_strcmp0 (type_name, cell->cell_type_name));
+}
+
+void
gnc_basic_cell_set_sample_text (BasicCell *cell,
const char *sample_text)
{
Modified: gnucash/trunk/src/register/register-core/basiccell.h
===================================================================
--- gnucash/trunk/src/register/register-core/basiccell.h 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/register-core/basiccell.h 2010-03-28 21:09:57 UTC (rev 18974)
@@ -190,7 +190,7 @@
struct basic_cell
{
char * cell_name;
-
+ gchar *cell_type_name;
char * value; /* current value */
guint value_chars; /* number of characters in value */
@@ -233,7 +233,11 @@
void gnc_basic_cell_set_name (BasicCell *cell, const char *name);
gboolean gnc_basic_cell_has_name (BasicCell *cell, const char *name);
+void gnc_basic_cell_set_type_name (BasicCell *cell, const gchar *type_name);
+gboolean gnc_basic_cell_has_type_name (BasicCell *cell, const gchar *type_name);
+
+
void gnc_basic_cell_set_sample_text (BasicCell *cell,
const char *sample_text);
void gnc_basic_cell_set_alignment (BasicCell *cell,
Modified: gnucash/trunk/src/register/register-core/table-allgui.c
===================================================================
--- gnucash/trunk/src/register/register-core/table-allgui.c 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/register-core/table-allgui.c 2010-03-28 21:09:57 UTC (rev 18974)
@@ -506,6 +506,19 @@
return cell->cell_name;
}
+const gchar *
+gnc_table_get_cell_type_name (Table *table, VirtualLocation virt_loc)
+{
+ BasicCell *cell;
+
+ cell = gnc_table_get_cell (table, virt_loc);
+ if (cell == NULL)
+ return NULL;
+
+ return cell->cell_type_name;
+}
+
+
gboolean
gnc_table_get_cell_location (Table *table,
const char *cell_name,
Modified: gnucash/trunk/src/register/register-core/table-allgui.h
===================================================================
--- gnucash/trunk/src/register/register-core/table-allgui.h 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/register-core/table-allgui.h 2010-03-28 21:09:57 UTC (rev 18974)
@@ -228,7 +228,8 @@
const char * gnc_table_get_cell_name (Table *table,
VirtualLocation virt_loc);
-
+const gchar * gnc_table_get_cell_type_name (Table *table,
+ VirtualLocation virt_loc);
gboolean gnc_table_get_cell_location (Table *table,
const char * cell_name,
VirtualCellLocation vcell_loc,
Modified: gnucash/trunk/src/register/register-gnome/gnucash-sheet.c
===================================================================
--- gnucash/trunk/src/register/register-gnome/gnucash-sheet.c 2010-03-28 10:46:10 UTC (rev 18973)
+++ gnucash/trunk/src/register/register-gnome/gnucash-sheet.c 2010-03-28 21:09:57 UTC (rev 18974)
@@ -1214,28 +1214,13 @@
gnucash_sheet_check_direct_update_cell(GnucashSheet *sheet,
const VirtualLocation virt_loc)
{
- const gchar *dupdate_list[] =
- {
- /* From src/register/ledger-core/split-register-layout.c */
- /* DATE_CELL_TYPE_NAME */
- DATE_CELL,
- DDUE_CELL,
- /* COMBO_CELL_TYPE_NAME */
- XFRM_CELL,
- MXFRM_CELL,
- ACTN_CELL,
- NULL,
- };
- const gchar *cell_name;
- int i;
+ const gchar *type_name;
- cell_name = gnc_table_get_cell_name (sheet->table, virt_loc);
- for (i = 0; dupdate_list[i]; i++)
- {
- if (gnc_cell_name_equal (cell_name,
- dupdate_list[i]))
- return TRUE;
- }
+ type_name = gnc_table_get_cell_type_name (sheet->table, virt_loc);
+
+ if( (g_strcmp0 (type_name, DATE_CELL_TYPE_NAME) == 0)
+ || (g_strcmp0 (type_name, COMBO_CELL_TYPE_NAME) == 0) ) return TRUE;
+
return FALSE;
}
@@ -3120,6 +3105,6 @@
/*
Local Variables:
- c-basic-offset: 8
+ c-basic-offset: 4
End:
*/
More information about the gnucash-changes
mailing list