+ GtkTreeSelection *sel;
+ GtkTreeModel *model;
+ GtkTreeIter iter, previter;
+#if !GTK_CHECK_VERSION(3, 0, 0)
+ GtkTreePath *path;
+#endif
+
+ /* Get currently selected iter */
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->folderlist));
+ gtk_tree_selection_get_selected(sel, &model, &iter);
+
+ /* Now get the iter above it, if any */
+#if GTK_CHECK_VERSION(3, 0, 0)
+ previter = iter;
+ if (!gtk_tree_model_iter_previous(model, &previter)) {
+ /* No previous iter, are we already on top? */
+ return;
+ }
+#else
+ /* GTK+2 does not have gtk_tree_model_iter_previous(), so
+ * we have to get through GtkPath */
+ path = gtk_tree_model_get_path(model, &iter);
+ if (!gtk_tree_path_prev(path)) {
+ /* No previous path, are we already on top? */
+ gtk_tree_path_free(path);
+ return;
+ }
+
+ if (!gtk_tree_model_get_iter(model, &previter, path)) {
+ /* Eh? */
+ gtk_tree_path_free(path);
+ return;
+ }
+
+ gtk_tree_path_free(path);
+#endif