Jump to transaction after a double-click in the reconcile window.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3029 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas 2000-10-07 08:12:48 +00:00
parent 1e9ebabe86
commit 6f65c5adcf
3 changed files with 58 additions and 3 deletions

View File

@ -39,6 +39,7 @@
enum enum
{ {
TOGGLE_RECONCILED, TOGGLE_RECONCILED,
DOUBLE_CLICK_SPLIT,
LAST_SIGNAL LAST_SIGNAL
}; };
@ -227,6 +228,16 @@ gnc_reconcile_list_class_init(GNCReconcileListClass *klass)
GTK_TYPE_NONE, 1, GTK_TYPE_NONE, 1,
GTK_TYPE_POINTER); GTK_TYPE_POINTER);
reconcile_list_signals[DOUBLE_CLICK_SPLIT] =
gtk_signal_new("double_click_split",
GTK_RUN_FIRST,
object_class->type,
GTK_SIGNAL_OFFSET(GNCReconcileListClass,
double_click_split),
gtk_marshal_NONE__POINTER,
GTK_TYPE_NONE, 1,
GTK_TYPE_POINTER);
gtk_object_class_add_signals(object_class, gtk_object_class_add_signals(object_class,
reconcile_list_signals, reconcile_list_signals,
LAST_SIGNAL); LAST_SIGNAL);
@ -237,6 +248,7 @@ gnc_reconcile_list_class_init(GNCReconcileListClass *klass)
clist_class->unselect_row = gnc_reconcile_list_unselect_row; clist_class->unselect_row = gnc_reconcile_list_unselect_row;
klass->toggle_reconciled = NULL; klass->toggle_reconciled = NULL;
klass->double_click_split = NULL;
} }
static void static void
@ -290,8 +302,7 @@ gnc_reconcile_list_toggle(GNCReconcileList *list)
gnc_reconcile_list_set_row_style(list, row, reconciled); gnc_reconcile_list_set_row_style(list, row, reconciled);
gtk_signal_emit(GTK_OBJECT(list), gtk_signal_emit(GTK_OBJECT(list),
reconcile_list_signals[TOGGLE_RECONCILED], reconcile_list_signals[TOGGLE_RECONCILED], split);
split);
} }
static void static void
@ -304,6 +315,16 @@ gnc_reconcile_list_select_row(GtkCList *clist, gint row, gint column,
gnc_reconcile_list_toggle(list); gnc_reconcile_list_toggle(list);
GTK_CLIST_CLASS(parent_class)->select_row(clist, row, column, event); GTK_CLIST_CLASS(parent_class)->select_row(clist, row, column, event);
if (event && (event->type == GDK_2BUTTON_PRESS))
{
Split *split;
split = gtk_clist_get_row_data(clist, row);
gtk_signal_emit(GTK_OBJECT(list),
reconcile_list_signals[DOUBLE_CLICK_SPLIT], split);
}
} }
static void static void
@ -320,6 +341,16 @@ gnc_reconcile_list_unselect_row(GtkCList *clist, gint row, gint column,
} }
GTK_CLIST_CLASS(parent_class)->unselect_row(clist, row, column, event); GTK_CLIST_CLASS(parent_class)->unselect_row(clist, row, column, event);
if (event && (event->type == GDK_2BUTTON_PRESS))
{
Split *split;
split = gtk_clist_get_row_data(clist, row);
gtk_signal_emit(GTK_OBJECT(list),
reconcile_list_signals[DOUBLE_CLICK_SPLIT], split);
}
} }
static void static void

View File

@ -75,6 +75,8 @@ struct _GNCReconcileListClass
void (*toggle_reconciled) (GNCReconcileList *list, void (*toggle_reconciled) (GNCReconcileList *list,
Split *split); Split *split);
void (*double_click_split) (GNCReconcileList *list,
Split *split);
}; };
/*********************************************************** /***********************************************************

View File

@ -459,12 +459,31 @@ static void
gnc_reconcile_window_list_cb(GNCReconcileList *list, Split *split, gnc_reconcile_window_list_cb(GNCReconcileList *list, Split *split,
gpointer data) gpointer data)
{ {
RecnWindow *recnData = (RecnWindow *) data; RecnWindow *recnData = data;
gnc_reconcile_window_set_sensitivity(recnData); gnc_reconcile_window_set_sensitivity(recnData);
recnRecalculateBalance(recnData); recnRecalculateBalance(recnData);
} }
static void
gnc_reconcile_window_double_click_cb(GNCReconcileList *list, Split *split,
gpointer data)
{
RecnWindow *recnData = data;
RegWindow *regData;
/* This should never be true, but be paranoid */
if (split == NULL)
return;
regData = regWindowSimple(recnData->account);
if (regData == NULL)
return;
gnc_register_raise(regData);
gnc_register_jump_to_split_amount(regData, split);
}
static void static void
gnc_reconcile_window_focus_cb(GtkWidget *widget, GdkEventFocus *event, gnc_reconcile_window_focus_cb(GtkWidget *widget, GdkEventFocus *event,
gpointer data) gpointer data)
@ -559,6 +578,9 @@ gnc_reconcile_window_create_list_box(Account *account,
gtk_signal_connect(GTK_OBJECT(list), "toggle_reconciled", gtk_signal_connect(GTK_OBJECT(list), "toggle_reconciled",
GTK_SIGNAL_FUNC(gnc_reconcile_window_list_cb), GTK_SIGNAL_FUNC(gnc_reconcile_window_list_cb),
recnData); recnData);
gtk_signal_connect(GTK_OBJECT(list), "double_click_split",
GTK_SIGNAL_FUNC(gnc_reconcile_window_double_click_cb),
recnData);
gtk_signal_connect(GTK_OBJECT(list), "focus_in_event", gtk_signal_connect(GTK_OBJECT(list), "focus_in_event",
GTK_SIGNAL_FUNC(gnc_reconcile_window_focus_cb), GTK_SIGNAL_FUNC(gnc_reconcile_window_focus_cb),
recnData); recnData);