Fix compatibility with LIBFM 1.0.1 and 1.1.0.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Thu, 9 Jan 2014 01:22:15 +0000 (03:22 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Thu, 9 Jan 2014 01:22:15 +0000 (03:22 +0200)
NEWS
src/app-config.c
src/main-win-ui.c
src/main-win.c
src/pcmanfm.c
src/tab-page.c

diff --git a/NEWS b/NEWS
index 39f8c4e..dd8315e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -253,7 +253,8 @@ Changes on 1.2.0 since 1.1.0:
     directive in the code.
 
 * Added new menu option 'Tools'->'Run a Command in Current Folder' to run
-    an arbitrary command line from the folder opened in current tab.
+    an arbitrary command line from the folder opened in current tab. This
+    option works only with LibFM 1.2.0 or newer.
 
 
 Changes on 1.1.0 since 1.0.1:
index 8a8f4f0..c5f1aab 100644 (file)
@@ -127,6 +127,7 @@ static gboolean fm_folder_config_get_boolean(FmFolderConfig *fc, const char *key
     return fm_key_file_get_bool(fc->kf, fc->group, key, val);
 }
 
+#if FM_CHECK_VERSION(1, 0, 2)
 static char *fm_folder_config_get_string(FmFolderConfig *fc, const char *key)
 {
     return g_key_file_get_string(fc->kf, fc->group, key, NULL);
@@ -138,7 +139,7 @@ static char **fm_folder_config_get_string_list(FmFolderConfig *fc,
     return g_key_file_get_string_list(fc->kf, fc->group, key, length, NULL);
 }
 
-#if !FM_CHECK_VERSION(1, 0, 2)
+#else
 static void fm_folder_config_set_integer(FmFolderConfig *fc, const char *key,
                                          gint val)
 {
@@ -154,6 +155,7 @@ static void fm_folder_config_set_boolean(FmFolderConfig *fc, const char *key,
     g_key_file_set_boolean(fc->kf, fc->group, key, val);
 }
 
+#if FM_CHECK_VERSION(1, 0, 2)
 static void fm_folder_config_set_string(FmFolderConfig *fc, const char *key,
                                         const char *string)
 {
@@ -174,6 +176,7 @@ static void fm_folder_config_remove_key(FmFolderConfig *fc, const char *key)
     fc->changed = TRUE;
     g_key_file_remove_key(fc->kf, fc->group, key, NULL);
 }
+#endif
 
 static void fm_folder_config_purge(FmFolderConfig *fc)
 {
@@ -316,7 +319,7 @@ static void _save_sort(GString *buf, FmSortMode mode, FmFolderModelCol col)
 #else
 static void _save_sort(GString *buf, GtkSortType type, int col)
 {
-    g_string_append_printf(buf, "sort_type=%d\n", sort_type);
+    g_string_append_printf(buf, "sort_type=%d\n", type);
     g_string_append_printf(buf, "sort_by=%d\n", col);
 }
 #endif
@@ -333,10 +336,10 @@ static gboolean _parse_config_for_path(FmFolderConfig *fc,
                                        FmStandardViewMode *view_mode,
                                        gboolean *show_hidden, char ***columns)
 {
-    char *tmp;
     int tmp_int;
     /* we cannot use _parse_sort() here because we have no access to GKeyFile */
 #if FM_CHECK_VERSION(1, 0, 2)
+    char *tmp;
     char **sort;
 
     /* parse "sort" strings list first */
@@ -392,11 +395,17 @@ static gboolean _parse_config_for_path(FmFolderConfig *fc,
        FM_FOLDER_MODEL_COL_IS_VALID((guint)tmp_int))
         *by = tmp_int;
 #endif
+#if FM_CHECK_VERSION(1, 0, 2)
     if (view_mode && (tmp = fm_folder_config_get_string(fc, "ViewMode")))
     {
         *view_mode = fm_standard_view_mode_from_str(tmp);
         g_free(tmp);
     }
+#else
+    if (view_mode && fm_folder_config_get_integer(fc, "ViewMode", &tmp_int) &&
+        FM_STANDARD_VIEW_MODE_IS_VALID(tmp_int))
+        *view_mode = tmp_int;
+#endif
     if (show_hidden)
         fm_folder_config_get_boolean(fc, "ShowHidden", show_hidden);
 #if FM_CHECK_VERSION(1, 0, 2)
@@ -645,10 +654,8 @@ void fm_app_config_load_desktop_config(GKeyFile *kf, const char *group, FmDeskto
 
 void fm_app_config_load_from_key_file(FmAppConfig* cfg, GKeyFile* kf)
 {
-#if FM_CHECK_VERSION(1, 0, 2)
     char *tmp;
     char **tmpv;
-#endif
     int tmp_int, i;
 
     /* behavior */
index 9081768..d2a4e1a 100644 (file)
@@ -155,7 +155,9 @@ static const char main_menu_xml[] =
 #if FM_CHECK_VERSION(1, 0, 2)
     "<menuitem action='Search'/>"
 #endif
+#if FM_CHECK_VERSION(1, 2, 0)
     "<menuitem action='Launch'/>"
+#endif
     /* "<menuitem action='AsRoot'/>" */
   "</menu>"
   "<menu action='HelpMenu'>"
@@ -246,7 +248,9 @@ static GtkActionEntry main_win_actions[]=
 #if FM_CHECK_VERSION(1, 0, 2)
         {"Search", GTK_STOCK_FIND, N_("Fin_d Files..."), "<Ctrl><Shift>F", N_("Open search dialog"), G_CALLBACK(on_search)},
 #endif
+#if FM_CHECK_VERSION(1, 2, 0)
         {"Launch", GTK_STOCK_EXECUTE, N_("_Run a Command in Current Folder..."), NULL, NULL, G_CALLBACK(on_launch)},
+#endif
         /*{"AsRoot", GTK_STOCK_DIALOG_AUTHENTICATION, N_("Open Current Folder as _Root"), NULL, NULL, G_CALLBACK(on_open_as_root)},*/
     /* for accelerators */
     {"Location2", NULL, NULL, "<Alt>d", NULL, G_CALLBACK(on_location)},
index 470b944..6a65035 100644 (file)
@@ -119,7 +119,9 @@ static void on_open_in_terminal(GtkAction* act, FmMainWin* win);
 #if FM_CHECK_VERSION(1, 0, 2)
 static void on_search(GtkAction* act, FmMainWin* win);
 #endif
+#if FM_CHECK_VERSION(1, 2, 0)
 static void on_launch(GtkAction* act, FmMainWin* win);
+#endif
 static void on_fullscreen(GtkToggleAction* act, FmMainWin* win);
 
 static void on_location(GtkAction* act, FmMainWin* win);
@@ -320,8 +322,10 @@ static void update_file_menu(FmMainWin* win, FmPath *path)
 
     act = gtk_ui_manager_get_action(win->ui, "/menubar/ToolMenu/Term");
     gtk_action_set_sensitive(act, path && fm_path_is_native(path));
+#if FM_CHECK_VERSION(1, 2, 0)
     act = gtk_ui_manager_get_action(win->ui, "/menubar/ToolMenu/Launch");
     gtk_action_set_sensitive(act, path && fm_path_is_native(path));
+#endif
     act = gtk_ui_manager_get_action(win->ui, "/menubar/GoMenu/Up");
     gtk_action_set_sensitive(act, path && fm_path_get_parent(path));
 }
@@ -866,9 +870,9 @@ static void fm_main_win_init(FmMainWin *win)
     gtk_ui_manager_add_ui_from_string(ui, xml->str, xml->len, NULL);
     g_string_free(xml, TRUE);
 #else
-    act = gtk_ui_manager_get_action(ui, "/menubar/ViewMenu/IconView");
+    act = gtk_ui_manager_get_action(ui, "/menubar/ViewMenu/FolderView/IconView");
     win->first_view_mode = GTK_RADIO_ACTION(act);
-    act = gtk_ui_manager_get_action(win->ui, "/menubar/ViewMenu/SidePane/Places");
+    act = gtk_ui_manager_get_action(ui, "/menubar/ViewMenu/SidePane/Places");
     win->first_side_pane_mode = GTK_RADIO_ACTION(act);
 #endif
 #if !FM_CHECK_VERSION(1, 0, 2)
@@ -1198,6 +1202,7 @@ static void on_search(GtkAction* act, FmMainWin* win)
 }
 #endif
 
+#if FM_CHECK_VERSION(1, 2, 0)
 static void on_launch(GtkAction* act, FmMainWin* win)
 {
     char *cmd, *cwd, *def;
@@ -1223,6 +1228,7 @@ static void on_launch(GtkAction* act, FmMainWin* win)
     g_free(cwd);
     g_free(def);
 }
+#endif
 
 static void on_show_hidden(GtkToggleAction* act, FmMainWin* win)
 {
index 9692ed9..892d3cc 100644 (file)
@@ -450,7 +450,11 @@ gboolean pcmanfm_run(gint screen_num)
            * #3397444 - pcmanfm dont show window in daemon mode if i call 'pcmanfm' */
             pcmanfm_ref();
         }
+#if FM_CHECK_VERSION(1, 0, 2)
         else if (G_LIKELY(!find_files || n_pcmanfm_ref < 1))
+#else
+        else
+#endif
         {
             /* If we're not in daemon mode, or pcmanfm_run() is called because another
              * instance send signal to us, open cwd by default. */
index c539c15..7f032df 100644 (file)
@@ -1254,7 +1254,8 @@ void fm_tab_page_reload(FmTabPage* page)
         int idx = fm_nav_history_get_cur_index(page->nav_history);
         fm_nav_history_go_to(page->nav_history, idx, scroll_pos);
 #else
-        const FmNavHistoryItem* item = fm_nav_history_get_cur(page->nav_history);
+        FmNavHistoryItem* item = (FmNavHistoryItem*)fm_nav_history_get_cur(page->nav_history);
+        /* NOTE: ignoring const modifier due to invalid pre-1.0.2 design */
         item->scroll_pos = scroll_pos;
 #endif
         fm_folder_reload(folder);