mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add sanity checks when accessing GncPluginPage. Fixes #405851 and hopefully others.
BP git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@15531 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
7eee71ca99
commit
0961eb1eea
@ -333,13 +333,15 @@ main_window_to_account (GncMainWindow *window)
|
|||||||
|
|
||||||
/* Ensure we are called from a register page. */
|
/* Ensure we are called from a register page. */
|
||||||
page = gnc_main_window_get_current_page(window);
|
page = gnc_main_window_get_current_page(window);
|
||||||
|
g_return_val_if_fail (GNC_IS_PLUGIN_PAGE (page), NULL);
|
||||||
page_name = gnc_plugin_page_get_plugin_name(page);
|
page_name = gnc_plugin_page_get_plugin_name(page);
|
||||||
|
g_return_val_if_fail (page_name, NULL);
|
||||||
|
|
||||||
if (strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0) {
|
if (safe_strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0) {
|
||||||
DEBUG("register page");
|
DEBUG("register page");
|
||||||
account =
|
account =
|
||||||
gnc_plugin_page_register_get_account (GNC_PLUGIN_PAGE_REGISTER(page));
|
gnc_plugin_page_register_get_account (GNC_PLUGIN_PAGE_REGISTER(page));
|
||||||
} else if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
} else if (safe_strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
||||||
DEBUG("account tree page");
|
DEBUG("account tree page");
|
||||||
account =
|
account =
|
||||||
gnc_plugin_page_account_tree_get_current_account (GNC_PLUGIN_PAGE_ACCOUNT_TREE(page));
|
gnc_plugin_page_account_tree_get_current_account (GNC_PLUGIN_PAGE_ACCOUNT_TREE(page));
|
||||||
@ -364,8 +366,11 @@ gnc_plugin_hbci_account_selected (GncPluginPage *plugin_page,
|
|||||||
GtkActionGroup *action_group;
|
GtkActionGroup *action_group;
|
||||||
GncMainWindow *window;
|
GncMainWindow *window;
|
||||||
|
|
||||||
|
g_return_if_fail (GNC_IS_PLUGIN_PAGE (plugin_page));
|
||||||
window = GNC_MAIN_WINDOW(plugin_page->window);
|
window = GNC_MAIN_WINDOW(plugin_page->window);
|
||||||
|
g_return_if_fail (GNC_IS_MAIN_WINDOW (window));
|
||||||
action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME);
|
action_group = gnc_main_window_get_action_group(window, PLUGIN_ACTIONS_NAME);
|
||||||
|
g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
|
||||||
gnc_plugin_update_actions(action_group, need_account_actions,
|
gnc_plugin_update_actions(action_group, need_account_actions,
|
||||||
"sensitive", account != NULL);
|
"sensitive", account != NULL);
|
||||||
}
|
}
|
||||||
@ -379,8 +384,10 @@ gnc_plugin_hbci_main_window_page_added (GncMainWindow *window,
|
|||||||
const gchar *page_name;
|
const gchar *page_name;
|
||||||
|
|
||||||
ENTER("main window %p, page %p", window, page);
|
ENTER("main window %p, page %p", window, page);
|
||||||
|
g_return_if_fail (GNC_IS_PLUGIN_PAGE (page));
|
||||||
page_name = gnc_plugin_page_get_plugin_name(page);
|
page_name = gnc_plugin_page_get_plugin_name(page);
|
||||||
if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
g_return_if_fail (page_name);
|
||||||
|
if (safe_strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
||||||
DEBUG("account tree page, adding signal");
|
DEBUG("account tree page, adding signal");
|
||||||
g_signal_connect (G_OBJECT(page),
|
g_signal_connect (G_OBJECT(page),
|
||||||
"account_selected",
|
"account_selected",
|
||||||
@ -402,8 +409,9 @@ gnc_plugin_hbci_main_window_page_changed (GncMainWindow *window,
|
|||||||
Account *account;
|
Account *account;
|
||||||
|
|
||||||
ENTER("main window %p, page %p", window, page);
|
ENTER("main window %p, page %p", window, page);
|
||||||
|
g_return_if_fail (GNC_IS_MAIN_WINDOW (window));
|
||||||
action_group = gnc_main_window_get_action_group(window,PLUGIN_ACTIONS_NAME);
|
action_group = gnc_main_window_get_action_group(window,PLUGIN_ACTIONS_NAME);
|
||||||
g_return_if_fail(action_group != NULL);
|
g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
|
||||||
|
|
||||||
/* Reset everything to known state */
|
/* Reset everything to known state */
|
||||||
gnc_plugin_update_actions(action_group, need_account_actions,
|
gnc_plugin_update_actions(action_group, need_account_actions,
|
||||||
@ -421,11 +429,12 @@ gnc_plugin_hbci_main_window_page_changed (GncMainWindow *window,
|
|||||||
|
|
||||||
/* Selectively make items visible */
|
/* Selectively make items visible */
|
||||||
page_name = gnc_plugin_page_get_plugin_name(page);
|
page_name = gnc_plugin_page_get_plugin_name(page);
|
||||||
if (strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
g_return_if_fail (page_name);
|
||||||
|
if (safe_strcmp(page_name, GNC_PLUGIN_PAGE_ACCOUNT_TREE_NAME) == 0) {
|
||||||
DEBUG("account tree page");
|
DEBUG("account tree page");
|
||||||
gnc_plugin_update_actions(action_group, account_tree_actions,
|
gnc_plugin_update_actions(action_group, account_tree_actions,
|
||||||
"visible", TRUE);
|
"visible", TRUE);
|
||||||
} else if (strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0) {
|
} else if (safe_strcmp(page_name, GNC_PLUGIN_PAGE_REGISTER_NAME) == 0) {
|
||||||
DEBUG("register page");
|
DEBUG("register page");
|
||||||
gnc_plugin_update_actions(action_group, register_actions,
|
gnc_plugin_update_actions(action_group, register_actions,
|
||||||
"visible", TRUE);
|
"visible", TRUE);
|
||||||
|
Loading…
Reference in New Issue
Block a user