All pastes #35615 Raw Edit

Anonymous

public text v1 · immutable
#35615 ·published 2006-01-03 15:13 UTC
rendered paste body
Index: gedit-app.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/gedit-app.c,v
retrieving revision 1.2
diff -u -p -r1.2 gedit-app.c
--- gedit-app.c	12 Dec 2005 17:27:55 -0000	1.2
+++ gedit-app.c	3 Jan 2006 15:05:29 -0000
@@ -189,11 +189,11 @@ gedit_app_create_window_real (GeditApp  
 			      gboolean     set_geometry,
 			      const gchar *role)
 {
-	GtkWindow *window;
+	GeditWindow *window;
 
 	gedit_debug (DEBUG_APP);
-	
-	window = GTK_WINDOW (g_object_new (GEDIT_TYPE_WINDOW, NULL));
+
+	window = g_object_new (GEDIT_TYPE_WINDOW, NULL);
 
 	gedit_debug_message (DEBUG_APP, "Window created");
 
@@ -213,34 +213,40 @@ gedit_app_create_window_real (GeditApp  
 	if (set_geometry)
 	{
 		GdkWindowState state;
-		
+
 		state = gedit_prefs_manager_get_window_state ();
 
 		if ((state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
 		{
-			gtk_window_set_default_size (window,
+			gtk_window_set_default_size (GTK_WINDOW (window),
 						     gedit_prefs_manager_get_default_window_width (),
 						     gedit_prefs_manager_get_default_window_height ());
 
-			gtk_window_maximize (window);
+			gtk_window_maximize (GTK_WINDOW (window));
 		}
 		else
 		{
-			gtk_window_set_default_size (window, 
+			gtk_window_set_default_size (GTK_WINDOW (window),
 						     gedit_prefs_manager_get_window_width (),
 						     gedit_prefs_manager_get_window_height ());
 
-			gtk_window_unmaximize (window);
+			gtk_window_unmaximize (GTK_WINDOW (window));
 		}
 
 		if ((state & GDK_WINDOW_STATE_STICKY ) != 0)
-			gtk_window_stick (window);
+			gtk_window_stick (GTK_WINDOW (window));
 		else
-			gtk_window_unstick (window);
+			gtk_window_unstick (GTK_WINDOW (window));
 	}
-	
+
 	app->priv->windows = g_list_prepend (app->priv->windows,
 					     window);
+
+	/* if this is our first window make it active asap:
+	 * active_window should never be NULL if there are windows
+	 */
+	if (app->priv->active_window == NULL)
+		app->priv->active_window = window;
 	
 	g_signal_connect (window, 
 			  "focus_in_event",
@@ -255,7 +261,7 @@ gedit_app_create_window_real (GeditApp  
 			  G_CALLBACK (window_destroy),
 			  app);
 
-	return GEDIT_WINDOW (window);
+	return window;
 }
 
 GeditWindow *
@@ -292,6 +298,14 @@ gedit_app_get_active_window (GeditApp *a
 {
 	g_return_val_if_fail (GEDIT_IS_APP (app), NULL);
 
+	/* make sure our active window is always realized:
+	 * this is needed on startup if we launch two gedit fast
+	 * enough that the second instance comes up before the
+	 * first one shows its window.
+	 */
+	if (!GTK_WIDGET_REALIZED (GTK_WIDGET (app->priv->active_window)))
+		gtk_widget_realize (GTK_WIDGET (app->priv->active_window));
+
 	return app->priv->active_window;
 }
 
@@ -306,6 +320,8 @@ _gedit_app_get_window_in_workspace (Gedi
 
 	/* first try if the active window */
 	window = app->priv->active_window;
+
+	g_return_val_if_fail (GEDIT_IS_WINDOW (window), NULL);
 	ws = gedit_utils_get_window_workspace (GTK_WINDOW (window));
 
 	if (ws != workspace && ws != GEDIT_ALL_WORKSPACES)
Index: gedit-utils.c
===================================================================
RCS file: /cvs/gnome/gedit/gedit/gedit-utils.c,v
retrieving revision 1.69
diff -u -p -r1.69 gedit-utils.c
--- gedit-utils.c	29 Dec 2005 15:13:39 -0000	1.69
+++ gedit-utils.c	3 Jan 2006 15:05:35 -0000
@@ -779,15 +779,20 @@ gedit_utils_get_current_workspace (GdkSc
 guint
 gedit_utils_get_window_workspace (GtkWindow *gtkwindow)
 {
-       GdkWindow *window = GTK_WIDGET (gtkwindow)->window;
-       GdkDisplay *display = gdk_drawable_get_display (window);
-
+       GdkWindow *window;
+       GdkDisplay *display;
        Atom type;
        gint format;
        gulong nitems;
        gulong bytes_after;
        guint *workspace;
        guint ret = GEDIT_ALL_WORKSPACES;
+
+       g_return_val_if_fail (GTK_IS_WINDOW (gtkwindow), 0);
+       g_return_val_if_fail (GTK_WIDGET_REALIZED (GTK_WIDGET (gtkwindow)), 0);
+
+       window = GTK_WIDGET (gtkwindow)->window;
+       display = gdk_drawable_get_display (window);
 
        XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window),
                            gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP"),