* Fixes NB@63545
[modest] / src / maemo / modest-maemo-global-settings-dialog.c
index 5b967bb..d2a1d1a 100644 (file)
@@ -151,8 +151,6 @@ typedef struct {
 static gboolean
 idle_select_default_focus (gpointer data) 
 {
-       gdk_threads_enter ();
-
        ModestGlobalSettingsDialogPrivate *ppriv;
        ModestMaemoGlobalSettingsDialogPrivate *priv;
        SwitchPageHelper *helper;
@@ -164,13 +162,17 @@ idle_select_default_focus (gpointer data)
        /* Grab focus, we need to block in order to prevent a
           recursive call to this callback */
        g_signal_handler_block (G_OBJECT (ppriv->notebook), priv->switch_handler);
+
+       /* This is a GDK lock because we are an idle callback and
+        * the code below is or does Gtk+ code */
+
+       gdk_threads_enter (); /* CHECKED */
        gtk_widget_grab_focus (helper->focus_widget);
-       g_signal_handler_unblock (G_OBJECT (ppriv->notebook), priv->switch_handler);
+       gdk_threads_leave (); /* CHECKED */
 
+       g_signal_handler_unblock (G_OBJECT (ppriv->notebook), priv->switch_handler);
        g_free (helper);
 
-       gdk_threads_leave ();
-
        return FALSE;
 }
 
@@ -255,7 +257,12 @@ modest_maemo_global_settings_dialog_finalize (GObject *obj)
        priv = MODEST_MAEMO_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (obj);
        ppriv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (obj);
 
-       if (priv->switch_handler) {
+       if (priv->switch_handler && ppriv->notebook) {
+               /* TODO: This causes a g_warning:
+                modest[13409]: GLIB WARNING ** GLib-GObject - invalid unclassed pointer in cast to `GObject'
+               modest[13409]: GLIB WARNING ** GLib-GObject - instance with invalid (NULL) class pointer
+               modest[13409]: GLIB CRITICAL ** GLib-GObject - g_signal_handler_disconnect: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
+                */
                g_signal_handler_disconnect (G_OBJECT (ppriv->notebook), priv->switch_handler);
                priv->switch_handler = 0;
        }
@@ -270,7 +277,6 @@ modest_maemo_global_settings_dialog_new (void)
        return GTK_WIDGET(g_object_new(MODEST_TYPE_MAEMO_GLOBAL_SETTINGS_DIALOG, NULL));
 }
 
-
 /*
  * Creates the updating page
  */
@@ -344,7 +350,7 @@ create_updating_page (ModestMaemoGlobalSettingsDialog *self)
        g_signal_connect (ppriv->size_limit, "range_error", G_CALLBACK (on_range_error), self);
        caption = hildon_caption_new (size_group, 
                                      _("mcen_fi_advsetup_sizelimit"), 
-                                     ppriv->size_limit, 
+                                     ppriv->size_limit,
                                      NULL, 
                                      HILDON_CAPTION_MANDATORY);
        gtk_box_pack_start (GTK_BOX (vbox_limit), caption, FALSE, FALSE, MODEST_MARGIN_HALF);
@@ -394,15 +400,6 @@ create_composing_page (ModestMaemoGlobalSettingsDialog *self)
                                      HILDON_CAPTION_MANDATORY);
        gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF);
 
-       /* Reply */
-       ppriv->include_reply = gtk_check_button_new ();
-       caption = hildon_caption_new (size_group, 
-                                     _("mcen_va_options_include_original_inreply"), 
-                                     ppriv->include_reply, 
-                                     NULL, 
-                                     HILDON_CAPTION_MANDATORY);
-       gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, MODEST_MARGIN_HALF);
-
        return vbox;
 }
 
@@ -440,7 +437,7 @@ on_range_error (HildonNumberEditor *editor,
 #else
        case HILDON_NUMBER_EDITOR_ERROR_MAXIMUM_VALUE_EXCEED:
 #endif
-               msg = g_strdup_printf (_("ckct_ib_maximum_value"), MSG_SIZE_MAX_VAL);
+               msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_maximum_value"), MSG_SIZE_MAX_VAL);
                new_val = MSG_SIZE_MAX_VAL;
                break;
 #ifdef MODEST_HAVE_HILDON0_WIDGETS
@@ -448,7 +445,7 @@ on_range_error (HildonNumberEditor *editor,
 #else
        case HILDON_NUMBER_EDITOR_ERROR_MINIMUM_VALUE_EXCEED:
 #endif
-               msg = g_strdup_printf (_("ckct_ib_minimum_value"), MSG_SIZE_MIN_VAL);
+               msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_minimum_value"), MSG_SIZE_MIN_VAL);
                new_val = MSG_SIZE_MIN_VAL;
                break;
 #ifdef MODEST_HAVE_HILDON0_WIDGETS
@@ -456,7 +453,7 @@ on_range_error (HildonNumberEditor *editor,
 #else
        case HILDON_NUMBER_EDITOR_ERROR_ERRONEOUS_VALUE:
 #endif
-               msg = g_strdup_printf (_("ckct_ib_set_a_value_within_range"), 
+               msg = g_strdup_printf (dgettext("hildon-libs", "ckct_ib_set_a_value_within_range"), 
                                       MSG_SIZE_MIN_VAL, 
                                       MSG_SIZE_MAX_VAL);
                /* FIXME: use the previous */
@@ -481,8 +478,8 @@ on_range_error (HildonNumberEditor *editor,
 static ModestConnectedVia
 current_connection (void)
 {
-       TnyAccountStore *account_store;
-       TnyDevice *device;
+       TnyAccountStore *account_store = NULL;
+       TnyDevice *device = NULL;
        ModestConnectedVia retval = MODEST_CONNECTED_VIA_ANY;
        
        account_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ());
@@ -497,15 +494,17 @@ current_connection (void)
                ConIcIap *iap = tny_maemo_conic_device_get_iap (
                        TNY_MAEMO_CONIC_DEVICE (device), iap_id);
                const gchar *bearer_type = con_ic_iap_get_bearer_type (iap);
-                       
-               if (!strcmp (bearer_type, CON_IC_BEARER_WLAN_INFRA) ||
-                   !strcmp (bearer_type, CON_IC_BEARER_WLAN_ADHOC))
-                       retval = MODEST_CONNECTED_VIA_WLAN;
-               else
-                       retval = MODEST_CONNECTED_VIA_ANY;
+               if (bearer_type) {
+                       if (!strcmp (bearer_type, CON_IC_BEARER_WLAN_INFRA) ||
+                           !strcmp (bearer_type, CON_IC_BEARER_WLAN_ADHOC))
+                               retval = MODEST_CONNECTED_VIA_WLAN;
+                       else
+                               retval = MODEST_CONNECTED_VIA_ANY;
+               }
        
                g_object_unref (iap);
        }
+       
        g_object_unref (device);
 
        return retval;