mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Some dialogs do not close with Escape key
These dialogs are based on GtkWindow and as such do not natively respond to the escape key being pressed so to fix this a call back has been added for 'key_press_event' which checks for the escape key.
This commit is contained in:
parent
05c96f6642
commit
8e220976be
@ -743,6 +743,7 @@ tax_table_window_close_handler (gpointer data)
|
||||
TaxTableWindow *ttw = data;
|
||||
g_return_if_fail (ttw);
|
||||
|
||||
gnc_save_window_size (GNC_PREFS_GROUP, GTK_WINDOW(ttw->dialog));
|
||||
gtk_widget_destroy (ttw->dialog);
|
||||
}
|
||||
|
||||
@ -750,9 +751,19 @@ void
|
||||
tax_table_window_close (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
TaxTableWindow *ttw = data;
|
||||
gnc_close_gui_component (ttw->component_id);
|
||||
}
|
||||
|
||||
gnc_save_window_size (GNC_PREFS_GROUP, GTK_WINDOW(ttw->dialog));
|
||||
gnc_ui_tax_table_window_destroy (ttw);
|
||||
static gboolean
|
||||
tax_table_window_delete_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
TaxTableWindow *ttw = user_data;
|
||||
// this cb allows the window size to be saved on closing with the X
|
||||
gnc_save_window_size (GNC_PREFS_GROUP,
|
||||
GTK_WINDOW(ttw->dialog));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
@ -764,13 +775,33 @@ tax_table_window_destroy_cb (GtkWidget *widget, gpointer data)
|
||||
|
||||
gnc_unregister_gui_component (ttw->component_id);
|
||||
|
||||
if (ttw->dialog)
|
||||
{
|
||||
gtk_widget_destroy (ttw->dialog);
|
||||
ttw->dialog = NULL;
|
||||
}
|
||||
g_free (ttw);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
find_handler (gpointer find_data, gpointer user_data)
|
||||
tax_table_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
|
||||
gpointer data)
|
||||
{
|
||||
TaxTableWindow *ttw = user_data;
|
||||
TaxTableWindow *ttw = data;
|
||||
|
||||
if (event->keyval == GDK_KEY_Escape)
|
||||
{
|
||||
tax_table_window_close_handler (ttw);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
find_handler (gpointer find_data, gpointer data)
|
||||
{
|
||||
TaxTableWindow *ttw = data;
|
||||
QofBook *book = find_data;
|
||||
|
||||
return (ttw != NULL && ttw->book == book);
|
||||
@ -819,6 +850,12 @@ gnc_ui_tax_table_window_new (GtkWindow *parent, QofBook *book)
|
||||
gtk_widget_set_name (GTK_WIDGET(ttw->dialog), "gnc-id-new-tax-table");
|
||||
gnc_widget_style_context_add_class (GTK_WIDGET(ttw->dialog), "gnc-class-taxes");
|
||||
|
||||
g_signal_connect (ttw->dialog, "delete-event",
|
||||
G_CALLBACK(tax_table_window_delete_event_cb), ttw);
|
||||
|
||||
g_signal_connect (ttw->dialog, "key_press_event",
|
||||
G_CALLBACK (tax_table_window_key_press_cb), ttw);
|
||||
|
||||
/* Create the tax tables view */
|
||||
view = GTK_TREE_VIEW(ttw->names_view);
|
||||
store = gtk_list_store_new (NUM_TAX_TABLE_COLS, G_TYPE_STRING,
|
||||
@ -890,16 +927,6 @@ gnc_ui_tax_table_window_new (GtkWindow *parent, QofBook *book)
|
||||
return ttw;
|
||||
}
|
||||
|
||||
/* Destroy a tax-table window */
|
||||
void
|
||||
gnc_ui_tax_table_window_destroy (TaxTableWindow *ttw)
|
||||
{
|
||||
if (!ttw)
|
||||
return;
|
||||
|
||||
gnc_close_gui_component (ttw->component_id);
|
||||
}
|
||||
|
||||
/* Create a new tax-table by name */
|
||||
GncTaxTable *
|
||||
gnc_ui_tax_table_new_from_name (GtkWindow *parent, QofBook *book, const char *name)
|
||||
|
@ -718,8 +718,7 @@ void
|
||||
billterms_window_close (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
BillTermsWindow *btw = data;
|
||||
|
||||
gnc_ui_billterms_window_destroy (btw);
|
||||
gnc_close_gui_component (btw->component_id);
|
||||
}
|
||||
|
||||
void
|
||||
@ -731,13 +730,33 @@ billterms_window_destroy_cb (GtkWidget *widget, gpointer data)
|
||||
|
||||
gnc_unregister_gui_component (btw->component_id);
|
||||
|
||||
if (btw->window)
|
||||
{
|
||||
gtk_widget_destroy (btw->window);
|
||||
btw->window = NULL;
|
||||
}
|
||||
g_free (btw);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
find_handler (gpointer find_data, gpointer user_data)
|
||||
billterms_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
|
||||
gpointer data)
|
||||
{
|
||||
BillTermsWindow *btw = user_data;
|
||||
BillTermsWindow *btw = data;
|
||||
|
||||
if (event->keyval == GDK_KEY_Escape)
|
||||
{
|
||||
billterms_window_close_handler (btw);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
find_handler (gpointer find_data, gpointer data)
|
||||
{
|
||||
BillTermsWindow *btw = data;
|
||||
QofBook *book = find_data;
|
||||
|
||||
return (btw != NULL && btw->book == book);
|
||||
@ -789,6 +808,9 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
|
||||
gtk_widget_set_name (GTK_WIDGET(btw->window), "gnc-id-bill-terms");
|
||||
gnc_widget_style_context_add_class (GTK_WIDGET(btw->window), "gnc-class-bill-terms");
|
||||
|
||||
g_signal_connect (btw->window, "key_press_event",
|
||||
G_CALLBACK (billterms_window_key_press_cb), btw);
|
||||
|
||||
/* Initialize the view */
|
||||
view = GTK_TREE_VIEW(btw->terms_view);
|
||||
store = gtk_list_store_new (NUM_BILL_TERM_COLS, G_TYPE_STRING, G_TYPE_POINTER);
|
||||
@ -836,16 +858,6 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
|
||||
return btw;
|
||||
}
|
||||
|
||||
/* Destroy a billterms window */
|
||||
void
|
||||
gnc_ui_billterms_window_destroy (BillTermsWindow *btw)
|
||||
{
|
||||
if (!btw)
|
||||
return;
|
||||
|
||||
gnc_close_gui_component (btw->component_id);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Create a new billterms by name */
|
||||
GncBillTerm *
|
||||
|
@ -70,6 +70,9 @@ void gnc_commodities_dialog_edit_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_commodities_dialog_remove_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_commodities_dialog_close_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_commodities_show_currencies_toggled (GtkToggleButton *toggle, CommoditiesDialog *cd);
|
||||
gboolean gnc_commodities_window_key_press_cb (GtkWidget *widget,
|
||||
GdkEventKey *event,
|
||||
gpointer data);
|
||||
|
||||
|
||||
void
|
||||
@ -79,12 +82,24 @@ gnc_commodities_window_destroy_cb (GtkWidget *object, CommoditiesDialog *cd)
|
||||
|
||||
if (cd->window)
|
||||
{
|
||||
gtk_widget_destroy(cd->window);
|
||||
gtk_widget_destroy (cd->window);
|
||||
cd->window = NULL;
|
||||
}
|
||||
g_free (cd);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gnc_commodities_window_delete_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
CommoditiesDialog *cd = data;
|
||||
// this cb allows the window size to be saved on closing with the X
|
||||
gnc_save_window_size (GNC_PREFS_GROUP,
|
||||
GTK_WINDOW(cd->window));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gnc_commodities_dialog_edit_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
@ -247,6 +262,7 @@ void
|
||||
gnc_commodities_dialog_close_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
CommoditiesDialog *cd = data;
|
||||
|
||||
gnc_close_gui_component_by_data (DIALOG_COMMODITIES_CM_CLASS, cd);
|
||||
}
|
||||
|
||||
@ -361,6 +377,12 @@ gnc_commodities_dialog_create (GtkWidget * parent, CommoditiesDialog *cd)
|
||||
g_signal_connect (cd->window, "destroy",
|
||||
G_CALLBACK(gnc_commodities_window_destroy_cb), cd);
|
||||
|
||||
g_signal_connect (cd->window, "delete-event",
|
||||
G_CALLBACK(gnc_commodities_window_delete_event_cb), cd);
|
||||
|
||||
g_signal_connect (cd->window, "key_press_event",
|
||||
G_CALLBACK (gnc_commodities_window_key_press_cb), cd);
|
||||
|
||||
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, cd);
|
||||
g_object_unref (G_OBJECT(builder));
|
||||
|
||||
@ -401,6 +423,21 @@ show_handler (const char *klass, gint component_id,
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
gboolean
|
||||
gnc_commodities_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
|
||||
gpointer data)
|
||||
{
|
||||
CommoditiesDialog *cd = data;
|
||||
|
||||
if (event->keyval == GDK_KEY_Escape)
|
||||
{
|
||||
close_handler (cd);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
* gnc_commodities_dialog *
|
||||
* opens up a window to edit price information *
|
||||
|
@ -378,6 +378,22 @@ gnc_doclink_get_uri_dialog (GtkWindow *parent, const gchar *title,
|
||||
|
||||
static void close_handler (gpointer user_data);
|
||||
|
||||
static gboolean
|
||||
gnc_doclink_dialog_window_delete_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
DoclinkDialog *doclink_dialog = user_data;
|
||||
// this cb allows the window size to be saved on closing with the X
|
||||
if (doclink_dialog->is_list_trans)
|
||||
gnc_save_window_size (GNC_PREFS_GROUP_TRANS,
|
||||
GTK_WINDOW(doclink_dialog->window));
|
||||
else
|
||||
gnc_save_window_size (GNC_PREFS_GROUP_BUS,
|
||||
GTK_WINDOW(doclink_dialog->window));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_doclink_dialog_window_destroy_cb (GtkWidget *object, gpointer user_data)
|
||||
{
|
||||
@ -976,6 +992,9 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
|
||||
G_CALLBACK (gnc_doclink_dialog_window_destroy_cb),
|
||||
doclink_dialog);
|
||||
|
||||
g_signal_connect (doclink_dialog->window, "delete-event",
|
||||
G_CALLBACK(gnc_doclink_dialog_window_delete_event_cb), doclink_dialog);
|
||||
|
||||
g_signal_connect (doclink_dialog->window, "key_press_event",
|
||||
G_CALLBACK (gnc_doclink_dialog_window_key_press_cb),
|
||||
doclink_dialog);
|
||||
@ -996,8 +1015,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
|
||||
g_signal_connect (doclink_dialog->view, "row-activated",
|
||||
G_CALLBACK (row_selected_trans_cb),
|
||||
(gpointer)doclink_dialog);
|
||||
gnc_restore_window_size (GNC_PREFS_GROUP_TRANS,
|
||||
GTK_WINDOW (doclink_dialog->window), parent);
|
||||
get_trans_info (doclink_dialog);
|
||||
}
|
||||
else
|
||||
@ -1019,8 +1036,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
|
||||
g_signal_connect (doclink_dialog->view, "row-activated",
|
||||
G_CALLBACK (row_selected_bus_cb),
|
||||
(gpointer)doclink_dialog);
|
||||
gnc_restore_window_size (GNC_PREFS_GROUP_BUS,
|
||||
GTK_WINDOW (doclink_dialog->window), parent);
|
||||
get_bus_info (doclink_dialog);
|
||||
}
|
||||
|
||||
@ -1029,8 +1044,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
|
||||
|
||||
g_object_unref (G_OBJECT(builder));
|
||||
|
||||
gtk_widget_show_all (GTK_WIDGET(window));
|
||||
|
||||
gtk_tree_view_column_set_expand (expanding_column, TRUE);
|
||||
gtk_tree_view_columns_autosize (GTK_TREE_VIEW(doclink_dialog->view));
|
||||
LEAVE(" ");
|
||||
@ -1108,6 +1121,9 @@ gnc_doclink_business_dialog (GtkWindow *parent)
|
||||
gnc_gui_component_set_session (doclink_dialog->component_id,
|
||||
doclink_dialog->session);
|
||||
|
||||
gnc_restore_window_size (GNC_PREFS_GROUP_BUS,
|
||||
GTK_WINDOW(doclink_dialog->window), parent);
|
||||
gtk_widget_show_all (GTK_WIDGET(doclink_dialog->window));
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
||||
@ -1136,5 +1152,8 @@ gnc_doclink_trans_dialog (GtkWindow *parent)
|
||||
gnc_gui_component_set_session (doclink_dialog->component_id,
|
||||
doclink_dialog->session);
|
||||
|
||||
gnc_restore_window_size (GNC_PREFS_GROUP_TRANS,
|
||||
GTK_WINDOW(doclink_dialog->window), parent);
|
||||
gtk_widget_show_all (GTK_WIDGET(doclink_dialog->window));
|
||||
LEAVE(" ");
|
||||
}
|
||||
|
@ -59,13 +59,16 @@
|
||||
static QofLogModule log_module = GNC_MOD_GUI;
|
||||
|
||||
|
||||
void gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data);
|
||||
void gnc_prices_dialog_destroy_cb (GtkWidget *object, gpointer data);
|
||||
void gnc_prices_dialog_close_cb (GtkDialog *dialog, gpointer data);
|
||||
void gnc_prices_dialog_edit_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_prices_dialog_remove_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_prices_dialog_remove_old_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_prices_dialog_add_clicked (GtkWidget *widget, gpointer data);
|
||||
void gnc_prices_dialog_get_quotes_clicked (GtkWidget *widget, gpointer data);
|
||||
static gboolean gnc_prices_dialog_key_press_cb (GtkWidget *widget,
|
||||
GdkEventKey *event,
|
||||
gpointer data);
|
||||
|
||||
|
||||
typedef struct
|
||||
@ -88,7 +91,7 @@ typedef struct
|
||||
|
||||
|
||||
void
|
||||
gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
|
||||
gnc_prices_dialog_destroy_cb (GtkWidget *object, gpointer data)
|
||||
{
|
||||
PricesDialog *pdb_dialog = data;
|
||||
|
||||
@ -97,7 +100,7 @@ gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
|
||||
|
||||
if (pdb_dialog->window)
|
||||
{
|
||||
gtk_widget_destroy(pdb_dialog->window);
|
||||
gtk_widget_destroy (pdb_dialog->window);
|
||||
pdb_dialog->window = NULL;
|
||||
}
|
||||
|
||||
@ -106,6 +109,19 @@ gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
gnc_prices_dialog_delete_event_cb (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
PricesDialog *pdb_dialog = data;
|
||||
// this cb allows the window size to be saved on closing with the X
|
||||
gnc_save_window_size (GNC_PREFS_GROUP,
|
||||
GTK_WINDOW(pdb_dialog->window));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
gnc_prices_dialog_close_cb (GtkDialog *dialog, gpointer data)
|
||||
{
|
||||
@ -713,6 +729,12 @@ gnc_prices_dialog_create (GtkWidget * parent, PricesDialog *pdb_dialog)
|
||||
pdb_dialog->book = qof_session_get_book(pdb_dialog->session);
|
||||
pdb_dialog->price_db = gnc_pricedb_get_db(pdb_dialog->book);
|
||||
|
||||
g_signal_connect (pdb_dialog->window, "delete-event",
|
||||
G_CALLBACK(gnc_prices_dialog_delete_event_cb), pdb_dialog);
|
||||
|
||||
g_signal_connect (pdb_dialog->window, "key_press_event",
|
||||
G_CALLBACK (gnc_prices_dialog_key_press_cb), pdb_dialog);
|
||||
|
||||
/* price tree */
|
||||
scrolled_window = GTK_WIDGET(gtk_builder_get_object (builder, "price_list_window"));
|
||||
view = gnc_tree_view_price_new(pdb_dialog->book,
|
||||
@ -761,7 +783,7 @@ gnc_prices_dialog_create (GtkWidget * parent, PricesDialog *pdb_dialog)
|
||||
}
|
||||
|
||||
g_signal_connect (pdb_dialog->window, "destroy",
|
||||
G_CALLBACK(gnc_prices_dialog_window_destroy_cb), pdb_dialog);
|
||||
G_CALLBACK(gnc_prices_dialog_destroy_cb), pdb_dialog);
|
||||
|
||||
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, pdb_dialog);
|
||||
g_object_unref(G_OBJECT(builder));
|
||||
@ -811,6 +833,22 @@ show_handler (const char *klass, gint component_id,
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
gnc_prices_dialog_key_press_cb (GtkWidget *widget, GdkEventKey *event,
|
||||
gpointer data)
|
||||
{
|
||||
PricesDialog *pdb_dialog = data;
|
||||
|
||||
if (event->keyval == GDK_KEY_Escape)
|
||||
{
|
||||
close_handler (pdb_dialog);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************\
|
||||
* gnc_prices_dialog *
|
||||
* opens up a window showing all price information *
|
||||
|
Loading…
Reference in New Issue
Block a user