From e5e161fa7ee7f5cb24b1cd3a5455a91a077a0a8d Mon Sep 17 00:00:00 2001 From: Dave Peticolas Date: Tue, 26 Jun 2001 10:46:34 +0000 Subject: [PATCH] 2001-06-26 Dave Peticolas * src/register/gnome/gnucash-sheet.c (gnucash_sheet_key_press_event): allow shift-pgup and shift-pgdn to go to top & bottom of register respectively. * src/register/gnome/datecell-gnome.c (DateDirect): allow '-' hotkey to work if there is a full date there, or the cell is blank. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4809 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 8 ++++++++ src/register/gnome/datecell-gnome.c | 18 ++++++++++++++++-- src/register/gnome/gnucash-sheet.c | 23 +++++++++++++++++------ 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d384d83f5..32438ceb7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2001-06-26 Dave Peticolas + * src/register/gnome/gnucash-sheet.c + (gnucash_sheet_key_press_event): allow shift-pgup and shift-pgdn + to go to top & bottom of register respectively. + + * src/register/gnome/datecell-gnome.c (DateDirect): allow '-' + hotkey to work if there is a full date there, or the cell is + blank. + * src/gnome/gnc-html.c: don't handle keypresses, let the gtkhtml object do it. diff --git a/src/register/gnome/datecell-gnome.c b/src/register/gnome/datecell-gnome.c index 3ce4d62c9e..a8d5d3730b 100644 --- a/src/register/gnome/datecell-gnome.c +++ b/src/register/gnome/datecell-gnome.c @@ -590,8 +590,22 @@ DateDirect (BasicCell *bcell, break; case GDK_minus: - if (dateSeparator () == '-') - return FALSE; + if ((bcell->value_len != 0) && (dateSeparator () == '-')) + { + int i; + int count; + + /* rough check for existing date */ + for (i = count = 0; i < bcell->value_len; i++) + { + if (bcell->value_w[i] == '-') + count++; + } + + if (count < 2) + return FALSE; + } + /* fall through */ case GDK_KP_Subtract: case GDK_underscore: diff --git a/src/register/gnome/gnucash-sheet.c b/src/register/gnome/gnucash-sheet.c index 5d3df98c86..84e0d5316f 100644 --- a/src/register/gnome/gnucash-sheet.c +++ b/src/register/gnome/gnucash-sheet.c @@ -1591,17 +1591,28 @@ gnucash_sheet_key_press_event (GtkWidget *widget, GdkEventKey *event) case GDK_Page_Up: direction = GNC_TABLE_TRAVERSE_UP; new_virt_loc.phys_col_offset = 0; - distance = sheet->num_visible_phys_rows - 1; - gnc_table_move_vertical_position (table, &new_virt_loc, - -distance); + if (event->state & GDK_SHIFT_MASK) + new_virt_loc.vcell_loc.virt_row = 1; + else + { + distance = sheet->num_visible_phys_rows - 1; + gnc_table_move_vertical_position + (table, &new_virt_loc, -distance); + } break; case GDK_KP_Page_Down: case GDK_Page_Down: direction = GNC_TABLE_TRAVERSE_DOWN; new_virt_loc.phys_col_offset = 0; - distance = sheet->num_visible_phys_rows - 1; - gnc_table_move_vertical_position (table, &new_virt_loc, - distance); + if (event->state & GDK_SHIFT_MASK) + new_virt_loc.vcell_loc.virt_row = + sheet->num_virt_rows - 1; + else + { + distance = sheet->num_visible_phys_rows - 1; + gnc_table_move_vertical_position + (table, &new_virt_loc, distance); + } break; case GDK_KP_Up: case GDK_Up: