diff --git a/ChangeLog b/ChangeLog index 4538ea9da7..66eef84b71 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,16 @@ * src/gnome/gnc-plugin-register.c: Can now open arbitrary account registers. + * src/gnome/gnc-main-window.c: Track all open windows. If a + caller tries to open a new page but doesn't specify where, use the + first window available (which should be the initial window). + + * src/gnome-search/search.glade: Expand the dialog properly. + + * src/gnome/dialog-find-transactions.c: + * src/gnome/gnc-plugin-page-register.[ch]: Open a new page for + search results. + 2003-09-09 David Hampton * src/gnome-search/dialog-search.c: diff --git a/src/gnome/dialog-find-transactions.c b/src/gnome/dialog-find-transactions.c index d44f235654..3c37cad92c 100644 --- a/src/gnome/dialog-find-transactions.c +++ b/src/gnome/dialog-find-transactions.c @@ -35,7 +35,8 @@ #include "SX-book.h" #include "Transaction.h" #include "dialog-find-transactions.h" -#include "window-register.h" +#include "gnc-main-window.h" +#include "gnc-plugin-page-register.h" #include "messages.h" #include "search-param.h" @@ -51,6 +52,7 @@ do_find_cb (QueryNew *query, gpointer user_data, gpointer *result) struct _ftd_data *ftd = user_data; GNCLedgerDisplay *ledger; gboolean new_ledger = FALSE; + GncPluginPage *page; ledger = gnc_ledger_display_find_by_query (ftd->ledger_q); if(!ledger) { @@ -63,8 +65,10 @@ do_find_cb (QueryNew *query, gpointer user_data, gpointer *result) gnc_ledger_display_refresh (ledger); - if (new_ledger) - regWindowLedger(ledger); + if (new_ledger) { + page = gnc_plugin_page_register_new_ledger (ledger); + gnc_main_window_open_page (NULL, page); + } gncQueryDestroy (ftd->q); diff --git a/src/gnome/gnc-plugin-page-register.c b/src/gnome/gnc-plugin-page-register.c index 0d64d27f26..59f3d18989 100644 --- a/src/gnome/gnc-plugin-page-register.c +++ b/src/gnome/gnc-plugin-page-register.c @@ -168,6 +168,17 @@ gnc_plugin_page_register_new_gl (void) return GNC_PLUGIN_PAGE (plugin_page); } +GncPluginPage * +gnc_plugin_page_register_new_ledger (GNCLedgerDisplay *ledger) +{ + GncPluginPageRegister *plugin_page; + + plugin_page = g_object_new (GNC_TYPE_PLUGIN_PAGE_REGISTER, NULL); + plugin_page->priv->ld = ledger; + + return GNC_PLUGIN_PAGE (plugin_page); +} + static void gnc_plugin_page_register_class_init (GncPluginPageRegisterClass *klass) { diff --git a/src/gnome/gnc-plugin-page-register.h b/src/gnome/gnc-plugin-page-register.h index 167792e41a..059fb6b01c 100644 --- a/src/gnome/gnc-plugin-page-register.h +++ b/src/gnome/gnc-plugin-page-register.h @@ -28,6 +28,7 @@ #include #include "Account.h" +#include "gnc-ledger-display.h" #include "gnc-plugin-page.h" G_BEGIN_DECLS @@ -58,8 +59,9 @@ typedef struct { /* function prototypes */ GType gnc_plugin_page_register_get_type (void); -GncPluginPage *gnc_plugin_page_register_new (Account *account, gboolean subaccounts); -GncPluginPage *gnc_plugin_page_register_new_gl (void); +GncPluginPage *gnc_plugin_page_register_new (Account *account, gboolean subaccounts); +GncPluginPage *gnc_plugin_page_register_new_ledger (GNCLedgerDisplay *ledger); +GncPluginPage *gnc_plugin_page_register_new_gl (void); G_END_DECLS