#define MAX_REFERENCES_LEN 999
#define COMPOSE_DRAFT_TIMEOUT_UNSET -1
-#define COMPOSE_DRAFT_TIMEOUT_FORBIDEN -2
+#define COMPOSE_DRAFT_TIMEOUT_FORBIDDEN -2
static GList *compose_list = NULL;
static GSList *extra_headers = NULL;
/* Notebook */
notebook = gtk_notebook_new();
- gtk_widget_set_size_request(notebook, -1, prefs_common.compose_notebook_height);
gtk_widget_show(notebook);
/* header labels and entries */
gtk_container_set_border_width(GTK_CONTAINER(subject), 0);
gtk_widget_show(subject);
- label = gtk_label_new(_("Subject:"));
+ label = gtk_label_new_with_mnemonic(_("Subject:"));
gtk_box_pack_start(GTK_BOX(subject), label, FALSE, FALSE, 0);
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(subject), subject_entry, TRUE, TRUE, 0);
g_signal_connect_after(G_OBJECT(subject_entry), "grab_focus",
G_CALLBACK(compose_grab_focus_cb), compose);
+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), subject_entry);
gtk_widget_show(subject_entry);
compose->subject_entry = subject_entry;
gtk_container_add(GTK_CONTAINER(subject_frame), subject);
/* pane between attach clist and text */
paned = gtk_vpaned_new();
gtk_container_add(GTK_CONTAINER(vbox2), paned);
- gtk_paned_add1(GTK_PANED(paned), notebook);
- gtk_paned_add2(GTK_PANED(paned), edit_vbox);
+ gtk_paned_pack1(GTK_PANED(paned), notebook, FALSE, FALSE);
+ gtk_paned_pack2(GTK_PANED(paned), edit_vbox, TRUE, FALSE);
+ gtk_paned_set_position(GTK_PANED(paned), prefs_common.compose_notebook_height);
gtk_widget_show_all(paned);
GdkEventKey *event,
Compose *compose)
{
+ GtkTextBuffer *buffer;
+ GtkTextMark *mark;
+ GtkTextIter iter;
+
cm_return_val_if_fail(compose != NULL, FALSE);
/* make backtab move to subject field */
gtk_widget_grab_focus(compose->subject_entry);
return TRUE;
}
+
+ // Up key should also move the focus to subject field, if the cursor
+ // is on the first line.
+ if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up) {
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
+ g_return_val_if_fail(buffer != NULL, FALSE);
+
+ mark = gtk_text_buffer_get_mark(buffer, "insert");
+ g_return_val_if_fail(mark != NULL, FALSE);
+
+ gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+
+ if (gtk_text_iter_get_line(&iter) == 0) {
+ gtk_widget_grab_focus(compose->subject_entry);
+ return TRUE;
+ }
+ }
+
return FALSE;
}