Skip to content

Commit dc9b37a

Browse files
committed
Merge Oscar Megia's bug-799538 into stable
2 parents e22c406 + 8e8d2bf commit dc9b37a

File tree

3 files changed

+64
-0
lines changed

3 files changed

+64
-0
lines changed

gnucash/gnome/dialog-sx-editor.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,30 @@ sxed_delete_event (GtkWidget *widget, GdkEvent *event, gpointer ud)
11281128
return FALSE;
11291129
}
11301130

1131+
static gboolean
1132+
focus_idle_callback(gpointer user_data)
1133+
{
1134+
GNCLedgerDisplay *ledger_display = (GNCLedgerDisplay *)user_data;
1135+
1136+
if (ledger_display)
1137+
gnc_ledger_display_refresh(ledger_display);
1138+
1139+
return FALSE;
1140+
}
1141+
1142+
static void
1143+
on_notebook_switch_page(GtkNotebook *notebook, GtkWidget *page,
1144+
guint page_num, gpointer user_data)
1145+
{
1146+
GtkWidget *current_page = gtk_notebook_get_nth_page(notebook, page_num);
1147+
if (current_page && page_num == 2)
1148+
{
1149+
GncSxEditorDialog *sxed = (GncSxEditorDialog *)user_data;
1150+
1151+
// Wait until Gtk is idle to refresh the display.
1152+
g_idle_add (focus_idle_callback, sxed->ledger);
1153+
}
1154+
}
11311155

11321156
/*************************************
11331157
* Create the Schedule Editor Dialog *
@@ -1239,6 +1263,9 @@ gnc_ui_scheduled_xaction_editor_dialog_create (GtkWindow *parent,
12391263
g_signal_connect (sxed->dialog, "destroy",
12401264
G_CALLBACK (scheduledxaction_editor_dialog_destroy),
12411265
sxed);
1266+
g_signal_connect (sxed->notebook, "switch-page",
1267+
G_CALLBACK(on_notebook_switch_page),
1268+
sxed);
12421269

12431270
for (i = 0; widgets[i].name; i++)
12441271
{

gnucash/gnome/gnc-plugin-page-register.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3654,6 +3654,17 @@ gnc_plugin_page_register_cmd_cut (GSimpleAction *simple,
36543654

36553655
ENTER ("(action %p, page %p)", simple, page);
36563656
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
3657+
3658+
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
3659+
const char *name = gtk_widget_get_name(widget);
3660+
if (strcmp(name, "GnucashSheet") != 0)
3661+
{
3662+
gtk_editable_cut_clipboard( GTK_EDITABLE(widget));
3663+
LEAVE("Not cut from GnucashSheet");
3664+
3665+
return;
3666+
}
3667+
36573668
gnucash_register_cut_clipboard (priv->gsr->reg);
36583669
LEAVE ("");
36593670
}
@@ -3671,6 +3682,17 @@ gnc_plugin_page_register_cmd_copy (GSimpleAction *simple,
36713682

36723683
ENTER ("(action %p, page %p)", simple, page);
36733684
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
3685+
3686+
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
3687+
const char *name = gtk_widget_get_name(widget);
3688+
if (strcmp(name, "GnucashSheet") != 0)
3689+
{
3690+
gtk_editable_copy_clipboard( GTK_EDITABLE(widget));
3691+
LEAVE("Not copied from GnucashSheet");
3692+
3693+
return;
3694+
}
3695+
36743696
gnucash_register_copy_clipboard (priv->gsr->reg);
36753697
LEAVE ("");
36763698
}
@@ -3688,6 +3710,17 @@ gnc_plugin_page_register_cmd_paste (GSimpleAction *simple,
36883710

36893711
ENTER ("(action %p, page %p)", simple, page);
36903712
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
3713+
3714+
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
3715+
const char *name = gtk_widget_get_name(widget);
3716+
if (strcmp(name, "GnucashSheet") != 0)
3717+
{
3718+
gtk_editable_paste_clipboard( GTK_EDITABLE(widget));
3719+
LEAVE("Not pasted to GnucashSheet");
3720+
3721+
return;
3722+
}
3723+
36913724
gnucash_register_paste_clipboard (priv->gsr->reg);
36923725
LEAVE ("");
36933726
}

gnucash/register/register-gnome/gnucash-item-edit.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,10 @@ button_press_cb (GtkWidget *widget, GdkEventButton *event, gpointer *pointer)
852852
}
853853
return TRUE;
854854
}
855+
856+
if (!gtk_widget_has_focus (GTK_WIDGET(sheet)))
857+
gtk_widget_grab_focus (GTK_WIDGET(sheet));
858+
855859
return FALSE;
856860
}
857861

0 commit comments

Comments
 (0)