diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-07-18 03:02:03 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-07-18 03:02:03 +0800 |
commit | ec790f576119e171ba9b77dd6f7bfcf7a42ebeb1 (patch) | |
tree | e584d3de2d6957fefc68112446fd0364b34487d8 /modules/addressbook | |
parent | da665f8f99e778263d0a411def22830b2bcaa647 (diff) | |
download | gsoc2013-evolution-ec790f576119e171ba9b77dd6f7bfcf7a42ebeb1.tar.gz gsoc2013-evolution-ec790f576119e171ba9b77dd6f7bfcf7a42ebeb1.tar.zst gsoc2013-evolution-ec790f576119e171ba9b77dd6f7bfcf7a42ebeb1.zip |
Bug 579702 – Contact changes not shown until restart
Diffstat (limited to 'modules/addressbook')
-rw-r--r-- | modules/addressbook/e-book-shell-view-private.c | 18 | ||||
-rw-r--r-- | modules/addressbook/e-book-shell-view-private.h | 2 |
2 files changed, 14 insertions, 6 deletions
diff --git a/modules/addressbook/e-book-shell-view-private.c b/modules/addressbook/e-book-shell-view-private.c index 95e4980c57..f930e6d478 100644 --- a/modules/addressbook/e-book-shell-view-private.c +++ b/modules/addressbook/e-book-shell-view-private.c @@ -90,6 +90,7 @@ book_shell_view_selection_change_foreach (gint row, contact = e_addressbook_model_get_contact (model, row); e_book_shell_content_set_preview_contact (book_shell_content, contact); + book_shell_view->priv->preview_index = row; } static void @@ -121,24 +122,26 @@ selection_change (EBookShellView *book_shell_view, selection_model, (EForeachFunc) book_shell_view_selection_change_foreach, book_shell_view); - else + else { e_book_shell_content_set_preview_contact ( book_shell_content, NULL); + book_shell_view->priv->preview_index = -1; + } } static void contact_changed (EBookShellView *book_shell_view, - EContact *contact) + gint index, + EAddressbookModel *model) { EBookShellContent *book_shell_content; - EContact *preview_contact; + EContact *contact; book_shell_content = book_shell_view->priv->book_shell_content; - preview_contact = - e_book_shell_content_get_preview_contact (book_shell_content); + contact = e_addressbook_model_contact_at (model, index); - if (contact != preview_contact) + if (book_shell_view->priv->preview_index != index) return; /* Re-render the same contact. */ @@ -167,6 +170,7 @@ contacts_removed (EBookShellView *book_shell_view, /* If not, clear the contact display. */ e_book_shell_content_set_preview_contact (book_shell_content, NULL); + book_shell_view->priv->preview_index = -1; } static void @@ -422,6 +426,7 @@ e_book_shell_view_private_init (EBookShellView *book_shell_view, priv->uid_to_view = uid_to_view; priv->uid_to_editor = uid_to_editor; + priv->preview_index = -1; if (!gal_view_collection_loaded (shell_view_class->view_collection)) book_shell_view_load_view_collection (shell_view_class); @@ -615,6 +620,7 @@ e_book_shell_view_execute_search (EBookShellView *book_shell_view) g_free (query); e_book_shell_content_set_preview_contact (book_shell_content, NULL); + book_shell_view->priv->preview_index = -1; } void diff --git a/modules/addressbook/e-book-shell-view-private.h b/modules/addressbook/e-book-shell-view-private.h index b4701aea81..b49677680f 100644 --- a/modules/addressbook/e-book-shell-view-private.h +++ b/modules/addressbook/e-book-shell-view-private.h @@ -100,6 +100,8 @@ struct _EBookShellViewPrivate { GHashTable *uid_to_view; GHashTable *uid_to_editor; + + gint preview_index; }; void e_book_shell_view_private_init |