vinagre r278 - in branches/unstable: . src



Author: jwendell
Date: Thu Apr  3 20:08:16 2008
New Revision: 278
URL: http://svn.gnome.org/viewvc/vinagre?rev=278&view=rev

Log:
2008-04-03  Jonh Wendell <jwendell gnome org>

	* src/vinagre-tab.[ch],
	* src/vinagre-window.[ch]: Better handles menus sensitivity.
	* src/vinagre-bookmarks.c,
	* src/vinagre-commands.c:
	- Don't crash when adding a bookmark after the connection is closed. (LP: #205303).
	- Ignore NULL hosts in bookmarks file.


Modified:
   branches/unstable/ChangeLog
   branches/unstable/src/vinagre-bookmarks.c
   branches/unstable/src/vinagre-commands.c
   branches/unstable/src/vinagre-tab.c
   branches/unstable/src/vinagre-tab.h
   branches/unstable/src/vinagre-window-private.h
   branches/unstable/src/vinagre-window.c
   branches/unstable/src/vinagre-window.h

Modified: branches/unstable/src/vinagre-bookmarks.c
==============================================================================
--- branches/unstable/src/vinagre-bookmarks.c	(original)
+++ branches/unstable/src/vinagre-bookmarks.c	Thu Apr  3 20:08:16 2008
@@ -214,6 +214,8 @@
   g_return_val_if_fail (VINAGRE_IS_BOOKMARKS (book), FALSE);
   g_return_val_if_fail (VINAGRE_IS_CONNECTION (conn), FALSE);
 
+  g_object_ref (conn);
+
   glade_file = vinagre_utils_get_glade_filename ();
   xml = glade_xml_new (glade_file, "add_to_bookmarks_dialog", NULL);
   dialog = glade_xml_get_widget (xml, "add_to_bookmarks_dialog");
@@ -244,6 +246,7 @@
 
   gtk_widget_destroy (GTK_WIDGET (dialog));
   g_object_unref (G_OBJECT (xml));
+  g_object_unref (conn);
 
   return (result == GTK_RESPONSE_OK);
 }
@@ -492,14 +495,18 @@
       gchar *s_value;
       gint i_value;
 
+      s_value = g_key_file_get_string (book->priv->file, conns[i], "host", NULL);
+      if (!s_value)
+        continue;
+
       conn = vinagre_connection_new ();
       vinagre_connection_set_name (conn, conns[i]);
-
-      s_value = g_key_file_get_string (book->priv->file, conns[i], "host", NULL);
       vinagre_connection_set_host (conn, s_value);
       g_free (s_value);
 
       i_value = g_key_file_get_integer (book->priv->file, conns[i], "port", NULL);
+      if (i_value == 0)
+        i_value = 5900;
       vinagre_connection_set_port (conn, i_value);
 
       book->priv->conns = g_slist_prepend (book->priv->conns, conn);

Modified: branches/unstable/src/vinagre-commands.c
==============================================================================
--- branches/unstable/src/vinagre-commands.c	(original)
+++ branches/unstable/src/vinagre-commands.c	Thu Apr  3 20:08:16 2008
@@ -243,22 +243,27 @@
 vinagre_cmd_bookmarks_add (GtkAction     *action,
 			   VinagreWindow *window)
 {
+  GtkWidget         *tab;
   VinagreConnection *conn;
   gchar             *name;
 
   g_return_if_fail (VINAGRE_IS_WINDOW (window));
 
-  conn = vinagre_tab_get_conn (VINAGRE_TAB (window->priv->active_tab));
+  tab = window->priv->active_tab;
+  conn = vinagre_tab_get_conn (VINAGRE_TAB (tab));
   g_return_if_fail (VINAGRE_IS_CONNECTION (conn));
 
   vinagre_bookmarks_add (window->priv->book,
                          conn,
                          GTK_WINDOW (window));
 
-  name = vinagre_connection_get_best_name (conn);
-  vinagre_tab_set_title (VINAGRE_TAB (window->priv->active_tab),
-			 name);
-  g_free (name);
+  if (window->priv->active_tab == tab)
+    {
+      name = vinagre_connection_get_best_name (conn);
+      vinagre_tab_set_title (VINAGRE_TAB (window->priv->active_tab),
+			     name);
+      g_free (name);
+    }
 }
 
 void

Modified: branches/unstable/src/vinagre-tab.c
==============================================================================
--- branches/unstable/src/vinagre-tab.c	(original)
+++ branches/unstable/src/vinagre-tab.c	Thu Apr  3 20:08:16 2008
@@ -44,6 +44,7 @@
   guint              status_id;
   gboolean           save_password;
   guint32            keyring_item_id;
+  VinagreTabState    state;
 };
 
 G_DEFINE_TYPE(VinagreTab, vinagre_tab, GTK_TYPE_VBOX)
@@ -469,7 +470,8 @@
 		      tab->priv->status_id,
 		      _("Press Ctrl+Alt to grab the cursor"));
 
-  _vinagre_window_add_machine_connected (tab->priv->window);
+  tab->priv->state = VINAGRE_TAB_STATE_CONNECTED;
+  vinagre_window_update_machine_menu_sensitivity (tab->priv->window);
 
   /* Emits the signal saying that we have connected to the machine */
   g_signal_emit (G_OBJECT (tab),
@@ -581,6 +583,7 @@
   tab->priv = VINAGRE_TAB_GET_PRIVATE (tab);
   tab->priv->save_password = FALSE;
   tab->priv->keyring_item_id = 0;
+  tab->priv->state = VINAGRE_TAB_STATE_INITIALIZING;
 
   /* Create the scrolled window */
   tab->priv->scroll = gtk_scrolled_window_new (NULL, NULL);
@@ -811,4 +814,12 @@
   return vnc_display_get_scaling (VNC_DISPLAY (tab->priv->vnc));
 }
 
+VinagreTabState
+vinagre_tab_get_state (VinagreTab *tab)
+{
+  g_return_if_fail (VINAGRE_IS_TAB (tab));
+
+  return tab->priv->state;
+}
+
 /* vim: ts=8 */

Modified: branches/unstable/src/vinagre-tab.h
==============================================================================
--- branches/unstable/src/vinagre-tab.h	(original)
+++ branches/unstable/src/vinagre-tab.h	Thu Apr  3 20:08:16 2008
@@ -41,6 +41,14 @@
 #include "vinagre-notebook.h"
 #include "vinagre-window.h"
 
+typedef enum
+{
+  VINAGRE_TAB_STATE_INITIALIZING = 1,
+  VINAGRE_TAB_STATE_CONNECTED,
+  VINAGRE_TAB_STATE_INVALID
+} VinagreTabState;
+
+
 struct _VinagreTab 
 {
   GtkVBox vbox;
@@ -81,6 +89,9 @@
 
 gboolean	  vinagre_tab_set_scaling	(VinagreTab *tab, gboolean active);
 gboolean	  vinagre_tab_get_scaling	(VinagreTab *tab);
+
+VinagreTabState   vinagre_tab_get_state		(VinagreTab *tab);
+
 G_END_DECLS
 
 #endif  /* __VINAGRE_TAB_H__  */

Modified: branches/unstable/src/vinagre-window-private.h
==============================================================================
--- branches/unstable/src/vinagre-window-private.h	(original)
+++ branches/unstable/src/vinagre-window-private.h	Thu Apr  3 20:08:16 2008
@@ -70,7 +70,6 @@
 
   gulong	  signal_notebook;
   gulong	  signal_clipboard;
-  gint            machines_connected;
 };
 
 

Modified: branches/unstable/src/vinagre-window.c
==============================================================================
--- branches/unstable/src/vinagre-window.c	(original)
+++ branches/unstable/src/vinagre-window.c	Thu Apr  3 20:08:16 2008
@@ -467,8 +467,8 @@
 
 }
 
-static void
-set_machine_menu_sensitivity (VinagreWindow *window)
+void
+vinagre_window_update_machine_menu_sensitivity (VinagreWindow *window)
 {
   gboolean active;
 
@@ -477,7 +477,8 @@
   active = gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 0;
   gtk_action_group_set_sensitive (window->priv->action_group, active);
 
-  active = window->priv->machines_connected > 0;
+  active = (window->priv->active_tab) &&
+	   (vinagre_tab_get_state (VINAGRE_TAB (window->priv->active_tab)) == VINAGRE_TAB_STATE_CONNECTED);
   gtk_action_group_set_sensitive (window->priv->machine_connected_action_group, active);
 }
 
@@ -796,7 +797,7 @@
 
   vinagre_window_set_title (window);
   update_toggle_machine_items (window);
-  _vinagre_window_del_machine_connected (window);
+  vinagre_window_update_machine_menu_sensitivity (window);
 }
 
 static void
@@ -811,6 +812,7 @@
 
   vinagre_window_set_title (window);
   update_toggle_machine_items (window);
+  vinagre_window_update_machine_menu_sensitivity (window);
 }
 
 static void 
@@ -831,6 +833,7 @@
 
   vinagre_window_set_title (window);
   update_toggle_machine_items (window);
+  vinagre_window_update_machine_menu_sensitivity (window);
 }
 
 static void
@@ -900,7 +903,6 @@
   window->priv->fav_conn_selected = NULL;
   window->priv->fullscreen = FALSE;
   window->priv->signal_notebook = 0;
-  window->priv->machines_connected = 0;
 
   window->priv->book = vinagre_bookmarks_get_default ();
 
@@ -933,7 +935,7 @@
   gtk_widget_grab_focus (window->priv->hpaned);
 
   init_widgets_visibility (window);
-  set_machine_menu_sensitivity (window);
+  vinagre_window_update_machine_menu_sensitivity (window);
 
   vinagre_window_update_bookmarks_list_menu (window);
   g_signal_connect_swapped (window->priv->book,
@@ -1095,25 +1097,4 @@
   return window->priv->manager;
 }
 
-void
-_vinagre_window_add_machine_connected (VinagreWindow *window)
-{
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-
-  window->priv->machines_connected++;
-  set_machine_menu_sensitivity (window);
-}
-
-void
-_vinagre_window_del_machine_connected (VinagreWindow *window)
-{
-  g_return_if_fail (VINAGRE_IS_WINDOW (window));
-
-  if (window->priv->machines_connected > 0)
-    {
-      window->priv->machines_connected--;
-      set_machine_menu_sensitivity (window);
-    }
-}
-
 /* vim: ts=8 */

Modified: branches/unstable/src/vinagre-window.h
==============================================================================
--- branches/unstable/src/vinagre-window.h	(original)
+++ branches/unstable/src/vinagre-window.h	Thu Apr  3 20:08:16 2008
@@ -90,9 +90,7 @@
 void		vinagre_window_toggle_fullscreen	(VinagreWindow *window);
 void		vinagre_window_set_title		(VinagreWindow *window);
 
-void		_vinagre_window_add_machine_connected	(VinagreWindow *window);
-void		_vinagre_window_del_machine_connected	(VinagreWindow *window);
-
+void		vinagre_window_update_machine_menu_sensitivity (VinagreWindow	*window);
 G_END_DECLS
 
 #endif  /* __VINAGRE_WINDOW_H__  */



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