mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug 797689 - Change the Bill Terms Table dialogue to be based on a
GtkWindow When using Gnucash on Microsoft Windows and a dialog opens a further dialog when you switch away from the application and back the last dialog that has the focus is behind the parent and it appears like the application has froze. To fix this try to use only one level of dialogue so change the Bill Terms Table to use a Window with no transient parent.
This commit is contained in:
parent
881f89addf
commit
c4e41384f2
@ -29,6 +29,7 @@
|
||||
|
||||
#include "dialog-utils.h"
|
||||
#include "gnc-component-manager.h"
|
||||
#include "gnc-session.h"
|
||||
#include "gnc-ui.h"
|
||||
#include "gnc-gui-query.h"
|
||||
#include "gnc-ui-util.h"
|
||||
@ -74,7 +75,7 @@ typedef struct _billterm_notebook
|
||||
|
||||
struct _billterms_window
|
||||
{
|
||||
GtkWidget * dialog;
|
||||
GtkWidget * window;
|
||||
GtkWidget * terms_view;
|
||||
GtkWidget * desc_entry;
|
||||
GtkWidget * type_label;
|
||||
@ -84,6 +85,7 @@ struct _billterms_window
|
||||
GncBillTerm * current_term;
|
||||
QofBook * book;
|
||||
gint component_id;
|
||||
QofSession *session;
|
||||
};
|
||||
|
||||
typedef struct _new_billterms
|
||||
@ -117,7 +119,7 @@ read_widget (GtkBuilder *builder, char *name, gboolean read_only)
|
||||
/* NOTE: The caller needs to unref once they attach */
|
||||
static void
|
||||
init_notebook_widgets (BillTermNB *notebook, gboolean read_only,
|
||||
GtkDialog *dialog, gpointer user_data)
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
GtkWidget *parent;
|
||||
@ -444,8 +446,7 @@ new_billterm_dialog (BillTermsWindow *btw, GncBillTerm *term,
|
||||
gtk_entry_set_text (GTK_ENTRY (nbt->name_entry), name);
|
||||
|
||||
/* Initialize the notebook widgets */
|
||||
init_notebook_widgets (&nbt->notebook, FALSE,
|
||||
GTK_DIALOG (nbt->dialog), nbt);
|
||||
init_notebook_widgets (&nbt->notebook, FALSE, nbt);
|
||||
|
||||
/* Attach the notebook */
|
||||
box = GTK_WIDGET(gtk_builder_get_object (builder, dialog_nb));
|
||||
@ -469,7 +470,7 @@ new_billterm_dialog (BillTermsWindow *btw, GncBillTerm *term,
|
||||
gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, nbt);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW(nbt->dialog),
|
||||
GTK_WINDOW(btw->dialog));
|
||||
GTK_WINDOW(btw->window));
|
||||
|
||||
/* Show what we should */
|
||||
gtk_widget_show_all (nbt->dialog);
|
||||
@ -661,13 +662,13 @@ billterms_delete_term_cb (GtkButton *button, BillTermsWindow *btw)
|
||||
|
||||
if (gncBillTermGetRefcount (btw->current_term) > 0)
|
||||
{
|
||||
gnc_error_dialog (GTK_WINDOW (btw->dialog),
|
||||
gnc_error_dialog (GTK_WINDOW (btw->window),
|
||||
_("Term \"%s\" is in use. You cannot delete it."),
|
||||
gncBillTermGetName (btw->current_term));
|
||||
return;
|
||||
}
|
||||
|
||||
if (gnc_verify_dialog (GTK_WINDOW (btw->dialog), FALSE,
|
||||
if (gnc_verify_dialog (GTK_WINDOW (btw->window), FALSE,
|
||||
_("Are you sure you want to delete \"%s\"?"),
|
||||
gncBillTermGetName (btw->current_term)))
|
||||
{
|
||||
@ -704,7 +705,7 @@ billterms_window_close_handler (gpointer data)
|
||||
BillTermsWindow *btw = data;
|
||||
g_return_if_fail (btw);
|
||||
|
||||
gtk_widget_destroy (btw->dialog);
|
||||
gtk_widget_destroy (btw->window);
|
||||
}
|
||||
|
||||
void
|
||||
@ -760,28 +761,27 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
|
||||
find_handler, book);
|
||||
if (btw)
|
||||
{
|
||||
gtk_window_present (GTK_WINDOW(btw->dialog));
|
||||
gtk_window_present (GTK_WINDOW(btw->window));
|
||||
return btw;
|
||||
}
|
||||
|
||||
/* Didn't find one -- create a new window */
|
||||
btw = g_new0 (BillTermsWindow, 1);
|
||||
btw->book = book;
|
||||
btw->session = gnc_get_current_session();
|
||||
|
||||
/* Open and read the Glade File */
|
||||
builder = gtk_builder_new();
|
||||
gnc_builder_add_from_file (builder, "dialog-billterms.glade", "terms_dialog");
|
||||
btw->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "terms_dialog"));
|
||||
gnc_builder_add_from_file (builder, "dialog-billterms.glade", "terms_window");
|
||||
btw->window = GTK_WIDGET(gtk_builder_get_object (builder, "terms_window"));
|
||||
btw->terms_view = GTK_WIDGET(gtk_builder_get_object (builder, "terms_view"));
|
||||
btw->desc_entry = GTK_WIDGET(gtk_builder_get_object (builder, "desc_entry"));
|
||||
btw->type_label = GTK_WIDGET(gtk_builder_get_object (builder, "type_label"));
|
||||
btw->term_vbox = GTK_WIDGET(gtk_builder_get_object (builder, "term_vbox"));
|
||||
|
||||
// Set the name for this dialog so it can be easily manipulated with css
|
||||
gtk_widget_set_name (GTK_WIDGET(btw->dialog), "gnc-id-bill-terms");
|
||||
gnc_widget_style_context_add_class (GTK_WIDGET(btw->dialog), "gnc-class-bill-terms");
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (btw->dialog), parent);
|
||||
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");
|
||||
|
||||
/* Initialize the view */
|
||||
view = GTK_TREE_VIEW(btw->terms_view);
|
||||
@ -802,8 +802,7 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
|
||||
G_CALLBACK(billterm_selection_changed), btw);
|
||||
|
||||
/* Initialize the notebook widgets */
|
||||
init_notebook_widgets (&btw->notebook, TRUE,
|
||||
GTK_DIALOG (btw->dialog), btw);
|
||||
init_notebook_widgets (&btw->notebook, TRUE, btw);
|
||||
|
||||
/* Attach the notebook */
|
||||
widget = GTK_WIDGET(gtk_builder_get_object (builder, "notebook_box"));
|
||||
@ -821,7 +820,9 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
|
||||
billterms_window_close_handler,
|
||||
btw);
|
||||
|
||||
gtk_widget_show_all (btw->dialog);
|
||||
gnc_gui_component_set_session (btw->component_id, btw->session);
|
||||
|
||||
gtk_widget_show_all (btw->window);
|
||||
billterms_window_refresh (btw);
|
||||
|
||||
g_object_unref(G_OBJECT(builder));
|
||||
|
@ -404,52 +404,20 @@
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkDialog" id="terms_dialog">
|
||||
<object class="GtkWindow" id="terms_window">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">Terms</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<signal name="destroy" handler="billterms_window_destroy_cb" swapped="no"/>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox" id="dialog-vbox5">
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">8</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox" id="dialog-action_area5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="close_button">
|
||||
<property name="label" translatable="yes">_Close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="tooltip_markup">Close this window</property>
|
||||
<property name="tooltip_text" translatable="yes">Close this window</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="billterms_window_close" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="hbox1">
|
||||
<property name="visible">True</property>
|
||||
@ -488,7 +456,7 @@
|
||||
<property name="headers_visible">False</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<child internal-child="selection">
|
||||
<object class="GtkTreeSelection" id="treeview-selection1"/>
|
||||
<object class="GtkTreeSelection"/>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
@ -670,8 +638,8 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="margin_left">3</property>
|
||||
<property name="margin_right">3</property>
|
||||
<property name="margin_left">6</property>
|
||||
<property name="margin_right">6</property>
|
||||
<property name="margin_top">3</property>
|
||||
<property name="margin_bottom">3</property>
|
||||
<property name="label">(type)</property>
|
||||
@ -751,14 +719,43 @@
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="dialog-action_area">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="close_button">
|
||||
<property name="label" translatable="yes">_Close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="tooltip_markup">Close this window</property>
|
||||
<property name="tooltip_text" translatable="yes">Close this window</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="billterms_window_close" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<action-widgets>
|
||||
<action-widget response="-6">close_button</action-widget>
|
||||
</action-widgets>
|
||||
</object>
|
||||
<object class="GtkListStore" id="type_liststore">
|
||||
<columns>
|
||||
|
Loading…
Reference in New Issue
Block a user