gnome-commander r1899 - in trunk: . src



Author: epiotr
Date: Mon Jul 21 18:50:27 2008
New Revision: 1899
URL: http://svn.gnome.org/viewvc/gnome-commander?rev=1899&view=rev

Log:
Fix for setting the current working directory to the remote inactive one (CTRL+., CTRL+LEFT/RIGHT)

Modified:
   trunk/ChangeLog
   trunk/src/gnome-cmd-file-selector.cc
   trunk/src/gnome-cmd-file-selector.h
   trunk/src/gnome-cmd-user-actions.cc

Modified: trunk/src/gnome-cmd-file-selector.cc
==============================================================================
--- trunk/src/gnome-cmd-file-selector.cc	(original)
+++ trunk/src/gnome-cmd-file-selector.cc	Mon Jul 21 18:50:27 2008
@@ -89,33 +89,6 @@
  *******************************/
 
 
-void gnome_cmd_file_selector_set_same_directory (GnomeCmdMainWin *mw, FileSelectorID fsID, FileSelectorID otherID)
-{
-    g_return_if_fail (mw!=NULL);
-    g_return_if_fail (mw->priv!=NULL);
-
-    GnomeCmdFileSelector *fs = gnome_cmd_main_win_get_fs (mw, fsID);
-    GnomeCmdFileSelector *other = gnome_cmd_main_win_get_fs (mw, !fsID);
-
-    gboolean fs_is_active = fs->priv->active;
-
-    if (fs_is_active)
-        gnome_cmd_file_selector_set_directory (fs, gnome_cmd_file_selector_get_directory (other));
-    else
-    {
-        GnomeCmdFile *file = gnome_cmd_file_list_get_selected_file (other->list);
-
-        if (file && file->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
-            gnome_cmd_file_selector_goto_directory (fs, gnome_cmd_file_get_real_path (file));
-        else
-            gnome_cmd_file_selector_set_directory (fs, gnome_cmd_file_selector_get_directory (other));
-    }
-
-    gnome_cmd_file_selector_set_active (other, !fs_is_active);
-    gnome_cmd_file_selector_set_active (fs, fs_is_active);
-}
-
-
 inline void show_list_popup (GnomeCmdFileSelector *fs)
 {
     // create the popup menu
@@ -242,20 +215,25 @@
 
 inline void set_connection (GnomeCmdFileSelector *fs, GnomeCmdCon *con, GnomeCmdDir *dir=NULL)
 {
-    fs->priv->con = con;
-    fs->priv->dir_history = gnome_cmd_con_get_dir_history (con);
+    gboolean con_change_needed = fs->priv->con==con;
 
-    if (fs->priv->lwd)
-    {
-        gnome_cmd_dir_cancel_monitoring (fs->priv->lwd);
-        gnome_cmd_dir_unref (fs->priv->lwd);
-        fs->priv->lwd = NULL;
-    }
-    if (fs->priv->cwd)
+    if (!con_change_needed)
     {
-        gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
-        gnome_cmd_dir_unref (fs->priv->cwd);
-        fs->priv->cwd = NULL;
+        fs->priv->con = con;
+        fs->priv->dir_history = gnome_cmd_con_get_dir_history (con);
+
+        if (fs->priv->lwd)
+        {
+            gnome_cmd_dir_cancel_monitoring (fs->priv->lwd);
+            gnome_cmd_dir_unref (fs->priv->lwd);
+            fs->priv->lwd = NULL;
+        }
+        if (fs->priv->cwd)
+        {
+            gnome_cmd_dir_cancel_monitoring (fs->priv->cwd);
+            gnome_cmd_dir_unref (fs->priv->cwd);
+            fs->priv->cwd = NULL;
+        }
     }
 
     if (!dir)
@@ -264,7 +242,8 @@
 
     gnome_cmd_file_selector_set_directory (fs, dir);
 
-    gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), con);
+    if (!con_change_needed)
+        gnome_cmd_combo_select_data (GNOME_CMD_COMBO (fs->con_combo), con);
 }
 
 
@@ -1767,6 +1746,31 @@
 }
 
 
+void gnome_cmd_file_selector_set_directory_to_opposite (GnomeCmdMainWin *mw, FileSelectorID fsID)
+{
+    g_return_if_fail (mw!=NULL);
+
+    GnomeCmdFileSelector *fs = gnome_cmd_main_win_get_fs (mw, fsID);
+    GnomeCmdFileSelector *other = gnome_cmd_main_win_get_fs (mw, !fsID);
+
+    GnomeCmdDir *dir = gnome_cmd_file_selector_get_directory (other);
+    gboolean fs_is_active = fs->priv->active;
+
+    if (!fs_is_active)
+    {
+        GnomeCmdFile *file = gnome_cmd_file_list_get_selected_file (other->list);
+
+        if (file && file->info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
+            dir = gnome_cmd_dir_new_from_info (file->info, dir);
+    }
+
+    set_connection (fs, other->priv->con, dir);
+
+    gnome_cmd_file_selector_set_active (other, !fs_is_active);
+    gnome_cmd_file_selector_set_active (fs, fs_is_active);
+}
+
+
 void gnome_cmd_file_selector_update_connections (GnomeCmdFileSelector *fs)
 {
     g_return_if_fail (GNOME_CMD_IS_FILE_SELECTOR (fs));

Modified: trunk/src/gnome-cmd-file-selector.h
==============================================================================
--- trunk/src/gnome-cmd-file-selector.h	(original)
+++ trunk/src/gnome-cmd-file-selector.h	Mon Jul 21 18:50:27 2008
@@ -83,7 +83,7 @@
 GnomeCmdDir *gnome_cmd_file_selector_get_directory (GnomeCmdFileSelector *fs);
 void gnome_cmd_file_selector_set_directory (GnomeCmdFileSelector *fs, GnomeCmdDir *dir);
 
-void gnome_cmd_file_selector_set_same_directory (GnomeCmdMainWin *mw, FileSelectorID fsID, FileSelectorID otherID);
+void gnome_cmd_file_selector_set_directory_to_opposite (GnomeCmdMainWin *mw, FileSelectorID fsID);
 
 void gnome_cmd_file_selector_goto_directory (GnomeCmdFileSelector *fs, const gchar *dir);
 

Modified: trunk/src/gnome-cmd-user-actions.cc
==============================================================================
--- trunk/src/gnome-cmd-user-actions.cc	(original)
+++ trunk/src/gnome-cmd-user-actions.cc	Mon Jul 21 18:50:27 2008
@@ -1272,25 +1272,25 @@
 
 void view_in_left_pane (GtkMenuItem *menuitem, gpointer not_used)
 {
-    gnome_cmd_file_selector_set_same_directory ((GnomeCmdMainWin *) GTK_WIDGET (main_win), LEFT, RIGHT);
+    gnome_cmd_file_selector_set_directory_to_opposite ((GnomeCmdMainWin *) GTK_WIDGET (main_win), LEFT);
 }
 
 
 void view_in_right_pane (GtkMenuItem *menuitem, gpointer not_used)
 {
-    gnome_cmd_file_selector_set_same_directory ((GnomeCmdMainWin *) GTK_WIDGET (main_win), RIGHT, LEFT);
+    gnome_cmd_file_selector_set_directory_to_opposite ((GnomeCmdMainWin *) GTK_WIDGET (main_win), RIGHT);
 }
 
 
 void view_in_active_pane (GtkMenuItem *menuitem, gpointer not_used)
 {
-    gnome_cmd_file_selector_set_same_directory ((GnomeCmdMainWin *) GTK_WIDGET (main_win), ACTIVE, INACTIVE);
+    gnome_cmd_file_selector_set_directory_to_opposite ((GnomeCmdMainWin *) GTK_WIDGET (main_win), ACTIVE);
 }
 
 
 void view_in_inactive_pane (GtkMenuItem *menuitem, gpointer not_used)
 {
-    gnome_cmd_file_selector_set_same_directory ((GnomeCmdMainWin *) GTK_WIDGET (main_win), INACTIVE, ACTIVE);
+    gnome_cmd_file_selector_set_directory_to_opposite ((GnomeCmdMainWin *) GTK_WIDGET (main_win), INACTIVE);
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]