2011-08-06 [paul] 3.7.9cvs42
[claws.git] / src / compose.c
index 95c5daf7d049025b219ff0c46d893929ae30ea30..e8ace869676e85a07258a651e5382b8a029f7ab9 100644 (file)
@@ -350,13 +350,10 @@ static void compose_add_field_list        ( Compose *compose,
                                          GList *listAddress );
 
 /* callback functions */
-#if !GTK_CHECK_VERSION(2,24,0)
+
 static gboolean compose_edit_size_alloc (GtkEditable   *widget,
                                         GtkAllocation  *allocation,
-                                        GtkSHRuler *shruler);
-static void compose_toggle_ruler_cb    (GtkToggleAction *action,
-                                        gpointer        data);
-#endif
+                                        GtkSHRuler     *shruler);
 static void account_activated          (GtkComboBox *optmenu,
                                         gpointer        data);
 static void attach_selected            (GtkTreeView    *tree_view, 
@@ -440,6 +437,8 @@ static void compose_toggle_autowrap_cb      (GtkToggleAction *action,
 static void compose_toggle_autoindent_cb(GtkToggleAction *action,
                                         gpointer        data);
 
+static void compose_toggle_ruler_cb    (GtkToggleAction *action,
+                                        gpointer        data);
 static void compose_toggle_sign_cb     (GtkToggleAction *action,
                                         gpointer        data);
 static void compose_toggle_encrypt_cb  (GtkToggleAction *action,
@@ -669,9 +668,7 @@ static GtkToggleActionEntry compose_toggle_entries[] =
        {"Options/Encrypt",             NULL, N_("_Encrypt"), NULL, NULL, G_CALLBACK(compose_toggle_encrypt_cb) }, /* Toggle */
        {"Options/RequestRetRcpt",      NULL, N_("_Request Return Receipt"), NULL, NULL, G_CALLBACK(compose_toggle_return_receipt_cb) }, /* TOGGLE */
        {"Options/RemoveReferences",    NULL, N_("Remo_ve references"), NULL, NULL, G_CALLBACK(compose_toggle_remove_refs_cb) }, /* TOGGLE */
-#if !GTK_CHECK_VERSION(2,24,0)
        {"Tools/ShowRuler",             NULL, N_("Show _ruler"), NULL, NULL, G_CALLBACK(compose_toggle_ruler_cb) }, /* Toggle */
-#endif
 };
 
 static GtkRadioActionEntry compose_radio_rm_entries[] =
@@ -950,6 +947,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
        gchar *mailto_from = NULL;
        PrefsAccount *mailto_account = NULL;
        MsgInfo* dummyinfo = NULL;
+       gint cursor_pos = -1;
        MailField mfield = NO_FIELD_PRESENT;
        gchar* buf;
        GtkTextMark *mark;
@@ -1200,7 +1198,11 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                     * is therefore created before placing the cursor
                     */
                case BODY_FIELD_PRESENT:
-                       gtk_widget_grab_focus(compose->text);
+                       cursor_pos = quote_fmt_get_cursor_pos();
+                       if (cursor_pos == -1)
+                               gtk_widget_grab_focus(compose->header_last->entry);
+                       else
+                               gtk_widget_grab_focus(compose->text);
                        break;
        }
 
@@ -1215,7 +1217,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
        compose->modified = FALSE;
        compose_set_title(compose);
 
-  hooks_invoke(COMPOSE_CREATED_HOOKLIST, compose);
+       hooks_invoke(COMPOSE_CREATED_HOOKLIST, compose);
 
         return compose;
 }
@@ -1677,7 +1679,7 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
        Compose *compose;
        GtkTextView *textview;
        GtkTextBuffer *textbuf;
-       GtkTextIter iter;
+       gint cursor_pos = -1;
        ComposeMode mode;
 
        cm_return_val_if_fail(msginfo != NULL, NULL);
@@ -1831,10 +1833,11 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
 
        SIGNAL_UNBLOCK(textbuf);
        
-       gtk_text_buffer_get_start_iter(textbuf, &iter);
-       gtk_text_buffer_place_cursor(textbuf, &iter);
-
-       gtk_widget_grab_focus(compose->header_last->entry);
+       cursor_pos = quote_fmt_get_cursor_pos();
+       if (cursor_pos == -1)
+               gtk_widget_grab_focus(compose->header_last->entry);
+       else
+               gtk_widget_grab_focus(compose->text);
 
        if (!no_extedit && prefs_common.auto_exteditor)
                compose_exec_ext_editor(compose);
@@ -4717,8 +4720,7 @@ static void compose_select_account(Compose *compose, PrefsAccount *account,
        }
        
        header_entry = (ComposeHeaderEntry *) compose->header_list->data;
-       header = gtk_combo_box_text_get_active_text(
-                       GTK_COMBO_BOX_TEXT(header_entry->combo));
+       header = gtk_combo_box_get_active_text(GTK_COMBO_BOX(header_entry->combo));
        
        if (header && !strlen(gtk_entry_get_text(GTK_ENTRY(header_entry->entry)))) {
                if (account->protocol == A_NNTP) {
@@ -7054,10 +7056,8 @@ static Compose *compose_create(PrefsAccount *account,
        GtkWidget *paned;
 
        GtkWidget *edit_vbox;
-#if !GTK_CHECK_VERSION(2,24,0)
        GtkWidget *ruler_hbox;
        GtkWidget *ruler;
-#endif
        GtkWidget *scrolledwin;
        GtkWidget *text;
        GtkTextBuffer *buffer;
@@ -7415,7 +7415,6 @@ static Compose *compose_create(PrefsAccount *account,
 
        gtk_box_pack_start(GTK_BOX(edit_vbox), subject_hbox, FALSE, FALSE, 0);
 
-#if !GTK_CHECK_VERSION(2,24,0)
        /* ruler */
        ruler_hbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(edit_vbox), ruler_hbox, FALSE, FALSE, 0);
@@ -7424,7 +7423,7 @@ static Compose *compose_create(PrefsAccount *account,
        gtk_ruler_set_range(GTK_RULER(ruler), 0.0, 100.0, 1.0, 100.0);
        gtk_box_pack_start(GTK_BOX(ruler_hbox), ruler, TRUE, TRUE,
                           BORDER_WIDTH);
-#endif
+
        /* text widget */
        scrolledwin = gtk_scrolled_window_new(NULL, NULL);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
@@ -7448,11 +7447,9 @@ static Compose *compose_create(PrefsAccount *account,
        
        gtk_container_add(GTK_CONTAINER(scrolledwin), text);
 
-#if !GTK_CHECK_VERSION(2,24,0)
        g_signal_connect_after(G_OBJECT(text), "size_allocate",
                               G_CALLBACK(compose_edit_size_alloc),
                               ruler);
-#endif
        g_signal_connect(G_OBJECT(buffer), "changed",
                         G_CALLBACK(compose_changed_cb), compose);
        g_signal_connect(G_OBJECT(text), "grab_focus",
@@ -7546,10 +7543,8 @@ static Compose *compose_create(PrefsAccount *account,
 
        compose->notebook      = notebook;
        compose->edit_vbox     = edit_vbox;
-#if !GTK_CHECK_VERSION(2,24,0)
        compose->ruler_hbox    = ruler_hbox;
        compose->ruler         = ruler;
-#endif
        compose->scrolledwin   = scrolledwin;
        compose->text          = text;
 
@@ -7668,12 +7663,11 @@ static Compose *compose_create(PrefsAccount *account,
 
        compose_list = g_list_append(compose_list, compose);
 
-#if !GTK_CHECK_VERSION(2,24,0)
        if (!prefs_common.show_ruler)
                gtk_widget_hide(ruler_hbox);
-       
+               
        cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Tools/ShowRuler", prefs_common.show_ruler);
-#endif
+
        /* Priority */
        compose->priority = PRIORITY_NORMAL;
        compose_update_priority_menu_item(compose);
@@ -8717,9 +8711,7 @@ static void compose_attach_property_create(gboolean *cancelled)
 
        for (mime_type_list = strlist; mime_type_list != NULL; 
                mime_type_list = mime_type_list->next) {
-               gtk_combo_box_text_append_text(
-                       GTK_COMBO_BOX_TEXT(mimetype_entry),
-                       mime_type_list->data);
+               gtk_combo_box_append_text(GTK_COMBO_BOX(mimetype_entry), mime_type_list->data);
                g_free(mime_type_list->data);
        }
        g_list_free(strlist);
@@ -9116,7 +9108,6 @@ static void compose_undo_state_changed(UndoMain *undostruct, gint undo_state,
  * includes "non-client" (windows-izm) in calculation, so this calculation
  * may not be accurate.
  */
-#if !GTK_CHECK_VERSION(2,24,0)
 static gboolean compose_edit_size_alloc(GtkEditable *widget,
                                        GtkAllocation *allocation,
                                        GtkSHRuler *shruler)
@@ -9138,7 +9129,7 @@ static gboolean compose_edit_size_alloc(GtkEditable *widget,
 
        return TRUE;
 }
-#endif
+
 typedef struct {
        gchar                   *header;
        gchar                   *entry;
@@ -10552,7 +10543,6 @@ static void activate_privacy_system(Compose *compose, PrefsAccount *account, gbo
        compose_update_privacy_system_menu_item(compose, warn);
 }
 
-#if !GTK_CHECK_VERSION(2,24,0)
 static void compose_toggle_ruler_cb(GtkToggleAction *action, gpointer data)
 {
        Compose *compose = (Compose *)data;
@@ -10566,7 +10556,7 @@ static void compose_toggle_ruler_cb(GtkToggleAction *action, gpointer data)
                prefs_common.show_ruler = FALSE;
        }
 }
-#endif
+
 static void compose_attach_drag_received_cb (GtkWidget         *widget,
                                             GdkDragContext     *context,
                                             gint                x,