In mailbox order dialog, set selection mode after the list has been
[claws.git] / src / gtk / foldersort.c
index 2d1083bd9529a0d5de847f356dfa012c2fc96340..659303f4b1c49393f02e8fab30a2f80df04e8149 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws Team
+ * Claws-Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2004-2012 the Claws Mail Team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
@@ -13,8 +13,8 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * 
  */
 
 #include "defs.h"
@@ -53,7 +53,7 @@ static void ok_clicked(GtkWidget *widget, FolderSortDialog *dialog)
        int i;
 
        for (i = 0; i < dialog->rows; i++) {
-               folder = gtk_clist_get_row_data(GTK_CLIST(dialog->folderlist), i);
+               folder = gtk_cmclist_get_row_data(GTK_CMCLIST(dialog->folderlist), i);
 
                folder_set_sort(folder, dialog->rows - i);
        }
@@ -81,29 +81,29 @@ static void set_selected(FolderSortDialog *dialog, gint row)
 
 static void moveup_clicked(GtkWidget *widget, FolderSortDialog *dialog)
 {
-       g_return_if_fail(dialog->selected > 0);
+       cm_return_if_fail(dialog->selected > 0);
 
-       gtk_clist_swap_rows(GTK_CLIST(dialog->folderlist), dialog->selected, dialog->selected - 1);
+       gtk_cmclist_swap_rows(GTK_CMCLIST(dialog->folderlist), dialog->selected, dialog->selected - 1);
 }
 
 static void movedown_clicked(GtkWidget *widget, FolderSortDialog *dialog)
 {
-       g_return_if_fail(dialog->selected < (dialog->rows - 1));
+       cm_return_if_fail(dialog->selected < (dialog->rows - 1));
 
-       gtk_clist_swap_rows(GTK_CLIST(dialog->folderlist), dialog->selected, dialog->selected + 1);
+       gtk_cmclist_swap_rows(GTK_CMCLIST(dialog->folderlist), dialog->selected, dialog->selected + 1);
 }
 
-static void row_selected(GtkCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
+static void row_selected(GtkCMCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
 {
        set_selected(dialog, row);
 }
 
-static void row_unselected(GtkCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
+static void row_unselected(GtkCMCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
 {
        set_selected(dialog, -1);
 }
 
-static void row_moved(GtkCList *clist, gint srcpos, gint destpos, FolderSortDialog *dialog)
+static void row_moved(GtkCMCList *clist, gint srcpos, gint destpos, FolderSortDialog *dialog)
 {
        if (dialog->selected == -1)
                return;
@@ -123,7 +123,7 @@ static gint delete_event(GtkWidget *widget, GdkEventAny *event, FolderSortDialog
 
 static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, FolderSortDialog *dialog)
 {
-       if (event && event->keyval == GDK_Escape)
+       if (event && event->keyval == GDK_KEY_Escape)
                destroy_dialog(dialog);
        return FALSE;
 }
@@ -149,11 +149,11 @@ void foldersort_open()
        GtkWidget *folderlist;
        GtkWidget *label2;
 
-       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "foldersort");
        g_object_set_data(G_OBJECT(window), "window", window);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
-       gtk_window_set_title(GTK_WINDOW(window), _("Set folder order"));
+       gtk_window_set_title(GTK_WINDOW(window), _("Set mailbox order"));
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
        g_signal_connect(G_OBJECT(window), "delete_event",
@@ -187,8 +187,10 @@ void foldersort_open()
        gtk_box_pack_start(GTK_BOX(vbox1), hbox, FALSE, FALSE, 0);
 
        label1 = gtk_label_new(_
-               ("Move folders up or down to change the sort order in the folder list."));
+               ("Move mailboxes up or down to change the sort order "
+                "in the Folder list."));
        gtk_widget_show(label1);
+       gtk_widget_set_size_request(GTK_WIDGET(label1), 392, -1);
        gtk_label_set_line_wrap(GTK_LABEL(label1), TRUE);
        gtk_box_pack_start(GTK_BOX(hbox), label1, FALSE, FALSE, 0);
 
@@ -205,15 +207,15 @@ void foldersort_open()
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
 
-       folderlist = gtk_clist_new(1);
+       folderlist = gtk_cmclist_new(1);
        gtk_widget_show(folderlist);
        gtk_container_add(GTK_CONTAINER(scrolledwindow1), folderlist);
-       gtk_clist_set_column_width(GTK_CLIST(folderlist), 0, 80);
-       gtk_clist_column_titles_show(GTK_CLIST(folderlist));
+       gtk_cmclist_set_column_width(GTK_CMCLIST(folderlist), 0, 80);
+       gtk_cmclist_column_titles_show(GTK_CMCLIST(folderlist));
 
-       label2 = gtk_label_new(_("Folders"));
+       label2 = gtk_label_new(_("Mailboxes"));
        gtk_widget_show(label2);
-       gtk_clist_set_column_widget(GTK_CLIST(folderlist), 0, label2);
+       gtk_cmclist_set_column_widget(GTK_CMCLIST(folderlist), 0, label2);
        gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
        gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
 
@@ -237,7 +239,7 @@ void foldersort_open()
        gtk_widget_show(window);
        gtk_widget_set_sensitive(moveup_btn, FALSE);
        gtk_widget_set_sensitive(movedown_btn, FALSE);
-       gtk_clist_set_reorderable(GTK_CLIST(folderlist), TRUE);
+       gtk_cmclist_set_reorderable(GTK_CMCLIST(folderlist), TRUE);
 
        g_signal_connect(G_OBJECT(moveup_btn), "clicked",
                          G_CALLBACK(moveup_clicked), dialog);
@@ -259,10 +261,16 @@ void foldersort_open()
                gchar *text[1];
 
                text[0] = folder->name;
-               row = gtk_clist_append(GTK_CLIST(folderlist), text);
-               gtk_clist_set_row_data(GTK_CLIST(folderlist), row, folder);
+               row = gtk_cmclist_append(GTK_CMCLIST(folderlist), text);
+               gtk_cmclist_set_row_data(GTK_CMCLIST(folderlist), row, folder);
                dialog->rows++;
        }
 
+       /* We are setting the selection mode here, after the list has been
+        * populated, so that when the first row gets selected by default,
+        * the triggered set_selected() function can correctly set sensitivity
+        * on up/down buttons. */
+       gtk_cmclist_set_selection_mode(GTK_CMCLIST(folderlist), GTK_SELECTION_BROWSE);
+
        inc_lock();
 }