Merge Oscar Megia's bug-799538 into stable

pull/2142/head
Robert Fewell 7 months ago
commit dc9b37aeff

@ -1128,6 +1128,30 @@ sxed_delete_event (GtkWidget *widget, GdkEvent *event, gpointer ud)
return FALSE;
}
static gboolean
focus_idle_callback(gpointer user_data)
{
GNCLedgerDisplay *ledger_display = (GNCLedgerDisplay *)user_data;
if (ledger_display)
gnc_ledger_display_refresh(ledger_display);
return FALSE;
}
static void
on_notebook_switch_page(GtkNotebook *notebook, GtkWidget *page,
guint page_num, gpointer user_data)
{
GtkWidget *current_page = gtk_notebook_get_nth_page(notebook, page_num);
if (current_page && page_num == 2)
{
GncSxEditorDialog *sxed = (GncSxEditorDialog *)user_data;
// Wait until Gtk is idle to refresh the display.
g_idle_add (focus_idle_callback, sxed->ledger);
}
}
/*************************************
* Create the Schedule Editor Dialog *
@ -1239,6 +1263,9 @@ gnc_ui_scheduled_xaction_editor_dialog_create (GtkWindow *parent,
g_signal_connect (sxed->dialog, "destroy",
G_CALLBACK (scheduledxaction_editor_dialog_destroy),
sxed);
g_signal_connect (sxed->notebook, "switch-page",
G_CALLBACK(on_notebook_switch_page),
sxed);
for (i = 0; widgets[i].name; i++)
{

@ -3654,6 +3654,17 @@ gnc_plugin_page_register_cmd_cut (GSimpleAction *simple,
ENTER ("(action %p, page %p)", simple, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
const char *name = gtk_widget_get_name(widget);
if (strcmp(name, "GnucashSheet") != 0)
{
gtk_editable_cut_clipboard( GTK_EDITABLE(widget));
LEAVE("Not cut from GnucashSheet");
return;
}
gnucash_register_cut_clipboard (priv->gsr->reg);
LEAVE ("");
}
@ -3671,6 +3682,17 @@ gnc_plugin_page_register_cmd_copy (GSimpleAction *simple,
ENTER ("(action %p, page %p)", simple, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
const char *name = gtk_widget_get_name(widget);
if (strcmp(name, "GnucashSheet") != 0)
{
gtk_editable_copy_clipboard( GTK_EDITABLE(widget));
LEAVE("Not copied from GnucashSheet");
return;
}
gnucash_register_copy_clipboard (priv->gsr->reg);
LEAVE ("");
}
@ -3688,6 +3710,17 @@ gnc_plugin_page_register_cmd_paste (GSimpleAction *simple,
ENTER ("(action %p, page %p)", simple, page);
priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE (page);
GtkWidget *widget = gtk_window_get_focus(GTK_WINDOW (priv->gsr->window));
const char *name = gtk_widget_get_name(widget);
if (strcmp(name, "GnucashSheet") != 0)
{
gtk_editable_paste_clipboard( GTK_EDITABLE(widget));
LEAVE("Not pasted to GnucashSheet");
return;
}
gnucash_register_paste_clipboard (priv->gsr->reg);
LEAVE ("");
}

@ -852,6 +852,10 @@ button_press_cb (GtkWidget *widget, GdkEventButton *event, gpointer *pointer)
}
return TRUE;
}
if (!gtk_widget_has_focus (GTK_WIDGET(sheet)))
gtk_widget_grab_focus (GTK_WIDGET(sheet));
return FALSE;
}

Loading…
Cancel
Save