vinagre r343 - in trunk: . src



Author: jwendell
Date: Thu May 29 20:06:51 2008
New Revision: 343
URL: http://svn.gnome.org/viewvc/vinagre?rev=343&view=rev

Log:
2008-05-29  Jonh Wendell <jwendell gnome org>

	* src/vinagre-window.c,
	* src/vinagre-tab.[ch]: Get rid of grabbing cursor. Keyboard is grabbed
	automatically.


Modified:
   trunk/ChangeLog
   trunk/src/vinagre-tab.c
   trunk/src/vinagre-tab.h
   trunk/src/vinagre-window.c

Modified: trunk/src/vinagre-tab.c
==============================================================================
--- trunk/src/vinagre-tab.c	(original)
+++ trunk/src/vinagre-tab.c	Thu May 29 20:06:51 2008
@@ -43,8 +43,6 @@
   VinagreConnection *conn;
   VinagreNotebook   *nb;
   VinagreWindow     *window;
-  GtkStatusbar      *status;
-  guint              status_id;
   gboolean           save_password;
   guint32            keyring_item_id;
   VinagreTabState    state;
@@ -53,6 +51,7 @@
   GtkWidget         *toolbar;
   GtkWidget         *ro_button;
   GtkWidget         *scaling_button;
+  gboolean           pointer_grab;
 };
 
 G_DEFINE_TYPE(VinagreTab, vinagre_tab, GTK_TYPE_VBOX)
@@ -107,7 +106,6 @@
 
   if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
     {
-      //vnc_display_force_grab  (VNC_DISPLAY(tab->priv->vnc), TRUE);
       gtk_widget_show (tab->priv->toolbar);
       ViewAutoDrawer_SetActive (VIEW_AUTODRAWER (tab->priv->layout), TRUE);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (tab->priv->scroll),
@@ -115,7 +113,6 @@
     }
   else
     {
-      //vnc_display_force_grab  (VNC_DISPLAY(tab->priv->vnc), FALSE);
       gtk_widget_hide (tab->priv->toolbar);
       ViewAutoDrawer_SetActive (VIEW_AUTODRAWER (tab->priv->layout), FALSE);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (tab->priv->scroll),
@@ -181,10 +178,6 @@
 {
   VinagreTab *tab = VINAGRE_TAB (object);
 
-  gtk_statusbar_pop (tab->priv->status, tab->priv->status_id);
-  gtk_action_group_set_sensitive (vinagre_window_get_sensitive_action (tab->priv->window),
-				  TRUE);
-
   g_signal_handlers_disconnect_by_func (tab->priv->window,
   					vinagre_tab_window_state_cb,
   					tab);
@@ -267,15 +260,14 @@
 {
   gchar *port;
 
-  tab->priv->status = GTK_STATUSBAR (vinagre_window_get_statusbar (tab->priv->window));
-  tab->priv->status_id = gtk_statusbar_get_context_id (tab->priv->status, "VNC Widget Messages");
-  
   port = g_strdup_printf ("%d", vinagre_connection_get_port (tab->priv->conn));
   
   if (!vnc_display_open_host (VNC_DISPLAY(tab->priv->vnc), vinagre_connection_get_host (tab->priv->conn), port))
     vinagre_utils_show_error (_("Error connecting to host."), NULL);
 
   vnc_display_set_pointer_local (VNC_DISPLAY(tab->priv->vnc), TRUE);
+  vnc_display_set_keyboard_grab (VNC_DISPLAY(tab->priv->vnc), TRUE);
+  vnc_display_set_pointer_grab (VNC_DISPLAY(tab->priv->vnc), TRUE);
 
   g_free (port);
   gtk_widget_grab_focus (tab->priv->vnc);
@@ -506,10 +498,6 @@
   vinagre_tab_save_password (tab);
   vinagre_tab_add_recent_used (tab);
 
-  gtk_statusbar_push (tab->priv->status,
-		      tab->priv->status_id,
-		      _("Press Ctrl+Alt to grab the cursor"));
-
   tab->priv->state = VINAGRE_TAB_STATE_CONNECTED;
   vinagre_window_update_machine_menu_sensitivity (tab->priv->window);
 
@@ -591,43 +579,23 @@
   }
 }
 
-static void vnc_grab_cb (VncDisplay *vnc, VinagreTab *tab)
+static void
+vnc_pointer_grab_cb (VncDisplay *vnc, VinagreTab *tab)
 {
-  gtk_statusbar_pop (tab->priv->status,
-		     tab->priv->status_id);
-
-  gtk_statusbar_push (tab->priv->status,
-		      tab->priv->status_id,
-		      _("Press Ctrl+Alt to release the cursor"));
-
-  gtk_action_group_set_sensitive (vinagre_window_get_main_action (tab->priv->window),
-				  FALSE);
-  gtk_action_group_set_sensitive (vinagre_window_get_sensitive_action (tab->priv->window),
-				  FALSE);
-
-  if (vinagre_window_is_fullscreen (tab->priv->window))
-    gtk_notebook_set_show_tabs (GTK_NOTEBOOK (tab->priv->nb), FALSE);
+  tab->priv->pointer_grab = TRUE;
+  vinagre_window_set_title (tab->priv->window);
 }
 
-static void vnc_bell_cb (VncDisplay *vnc, VinagreTab *tab)
+static void
+vnc_pointer_ungrab_cb (VncDisplay *vnc, VinagreTab *tab)
 {
-  gdk_window_beep (GTK_WIDGET (tab->priv->window)->window);
+  tab->priv->pointer_grab = FALSE;
+  vinagre_window_set_title (tab->priv->window);
 }
 
-static void vnc_ungrab_cb (VncDisplay *vnc, VinagreTab *tab)
+static void vnc_bell_cb (VncDisplay *vnc, VinagreTab *tab)
 {
-  gtk_statusbar_pop (tab->priv->status, tab->priv->status_id);
-  gtk_statusbar_push (tab->priv->status,
-		      tab->priv->status_id,
-		      _("Press Ctrl+Alt to grab the cursor"));
-
-  gtk_action_group_set_sensitive (vinagre_window_get_main_action (tab->priv->window),
-				  TRUE);
-  gtk_action_group_set_sensitive (vinagre_window_get_sensitive_action (tab->priv->window),
-				  TRUE);
-
-  if (vinagre_window_is_fullscreen (tab->priv->window))
-    gtk_notebook_set_show_tabs (GTK_NOTEBOOK (tab->priv->nb), TRUE);
+  gdk_window_beep (GTK_WIDGET (tab->priv->window)->window);
 }
 
 static gboolean
@@ -780,6 +748,7 @@
   tab->priv->keyring_item_id = 0;
   tab->priv->state = VINAGRE_TAB_STATE_INITIALIZING;
   tab->priv->clipboard_str = NULL;
+  tab->priv->pointer_grab = FALSE;
 
   /* Create the scrolled window */
   tab->priv->scroll = gtk_scrolled_window_new (NULL, NULL);
@@ -825,12 +794,12 @@
 
   g_signal_connect (tab->priv->vnc,
 		    "vnc-pointer-grab",
-		    G_CALLBACK (vnc_grab_cb),
+		    G_CALLBACK (vnc_pointer_grab_cb),
 		    tab);
 
   g_signal_connect (tab->priv->vnc,
 		    "vnc-pointer-ungrab",
-		    G_CALLBACK (vnc_ungrab_cb),
+		    G_CALLBACK (vnc_pointer_ungrab_cb),
 		    tab);
 
   g_signal_connect (tab->priv->vnc,
@@ -1088,4 +1057,11 @@
   return (res != NULL) ? VINAGRE_TAB (res) : NULL;
 }
 
+gboolean
+vinagre_tab_is_pointer_grab (VinagreTab *tab) {
+  g_return_if_fail (VINAGRE_IS_TAB (tab));
+
+  return tab->priv->pointer_grab;
+}
+
 /* vim: ts=8 */

Modified: trunk/src/vinagre-tab.h
==============================================================================
--- trunk/src/vinagre-tab.h	(original)
+++ trunk/src/vinagre-tab.h	Thu May 29 20:06:51 2008
@@ -97,7 +97,7 @@
 VinagreTabState   vinagre_tab_get_state		(VinagreTab *tab);
 VinagreTab	  *vinagre_tab_get_from_connection (VinagreConnection *conn);
 
-
+gboolean	  vinagre_tab_is_pointer_grab	(VinagreTab *tab);
 G_END_DECLS
 
 #endif  /* __VINAGRE_TAB_H__  */

Modified: trunk/src/vinagre-window.c
==============================================================================
--- trunk/src/vinagre-window.c	(original)
+++ trunk/src/vinagre-window.c	Thu May 29 20:06:51 2008
@@ -801,7 +801,7 @@
 void
 vinagre_window_set_title (VinagreWindow *window)
 {
-  gchar *title, *name;
+  gchar *title, *name, *grab;
 
   if (window->priv->active_tab == NULL)
     {
@@ -809,13 +809,20 @@
       return;
     }
 
+  if (vinagre_tab_is_pointer_grab (VINAGRE_TAB (window->priv->active_tab)))
+    grab = g_strdup_printf (" (%s)", _("Press Ctrl+Alt to release the cursor"));
+  else
+    grab = g_strdup ("");
+
   name = vinagre_connection_get_best_name (vinagre_tab_get_conn (VINAGRE_TAB (window->priv->active_tab)));
-  title = g_strdup_printf ("%s - %s",
+  title = g_strdup_printf ("%s%s - %s",
 			   name,
+			   grab,
 			   g_get_application_name ());
   gtk_window_set_title (GTK_WINDOW (window), title);
   g_free (title);
   g_free (name);
+  g_free (grab);
 }
 
 static void



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