[evolution] EContactEditor: Restore focused widget in sensitize_all()
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] EContactEditor: Restore focused widget in sensitize_all()
- Date: Fri, 9 May 2014 11:48:25 +0000 (UTC)
commit c1597795c147c5ed601d5284cd9c9bd792c67516
Author: Milan Crha <mcrha redhat com>
Date: Fri May 9 13:45:35 2014 +0200
EContactEditor: Restore focused widget in sensitize_all()
Recent changes in commit c2de4087369147e introduced a regression
in preselected widget after editor open, it was 'e-mail', instead
of 'fullname' after that commit. The focus changes when the dyntable
was updating maximum allowed entries in itself.
addressbook/gui/contact-editor/e-contact-editor.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c
b/addressbook/gui/contact-editor/e-contact-editor.c
index 081c9fb..fada757 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -3104,6 +3104,18 @@ extract_all (EContactEditor *editor)
static void
sensitize_all (EContactEditor *editor)
{
+ GtkWidget *focused_widget;
+ gpointer weak_pointer;
+
+ /* Widget changes can cause focus widget change, thus remember the current
+ widget and restore it after the fill is done; some fill operations
+ can delete widgets, like the dyntable, thus do the weak_pointer as well.
+ */
+ focused_widget = gtk_window_get_focus (eab_editor_get_window (EAB_EDITOR (editor)));
+ weak_pointer = focused_widget;
+ if (focused_widget)
+ g_object_add_weak_pointer (G_OBJECT (focused_widget), &weak_pointer);
+
sensitize_ok (editor);
sensitize_simple (editor);
sensitize_email (editor);
@@ -3111,6 +3123,11 @@ sensitize_all (EContactEditor *editor)
sensitize_sip (editor);
sensitize_im (editor);
sensitize_address (editor);
+
+ if (weak_pointer) {
+ g_object_remove_weak_pointer (G_OBJECT (focused_widget), &weak_pointer);
+ gtk_widget_grab_focus (focused_widget);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]