# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1314383813 0 # Node ID fb92778105b21a10bdeaebd7777cf44e681bf5b3 # Parent b2e060f43329e1d41ec517e70b3f9dc8f782a991 Fixes some major window positioning problems in GTK3... and some minor ones in GTK2. diff -r b2e060f43329 -r fb92778105b2 gtk/dw.c --- a/gtk/dw.c Fri Aug 26 02:44:15 2011 +0000 +++ b/gtk/dw.c Fri Aug 26 18:36:53 2011 +0000 @@ -2476,7 +2476,7 @@ } height = max(50,text_height)+100; - x = ( - (text_width+60+extra_width))/2; + x = (dw_screen_width() - (text_width+60+extra_width))/2; y = (dw_screen_height() - height)/2; dw_window_set_pos_size(entrywindow, x, y, (text_width+60+extra_width), height); @@ -9473,6 +9473,9 @@ GtkWidget *mdi; #endif + if(!handle) + return; + DW_MUTEX_LOCK; #if GTK_MAJOR_VERSION > 1 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) @@ -9482,8 +9485,18 @@ else #endif { - if(handle && handle->window) - gdk_window_move(handle->window, x, y); + GdkWindow *window = NULL; + + if(GTK_IS_WINDOW(handle)) + { +#if GTK_MAJOR_VERSION > 1 + gtk_window_move(GTK_WINDOW(handle), x, y); +#else + gtk_widget_set_uposition(handle, x, y); +#endif + } + else if((window = gtk_widget_get_window(handle))) + gdk_window_move(window, x, y); } DW_MUTEX_UNLOCK; } @@ -9506,6 +9519,7 @@ if(!handle) return; + DW_MUTEX_LOCK; #if GTK_MAJOR_VERSION > 1 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) @@ -9518,7 +9532,11 @@ if(GTK_IS_WINDOW(handle)) { dw_window_set_size(handle, width, height); +#if GTK_MAJOR_VERSION > 1 + gtk_window_move(GTK_WINDOW(handle), x, y); +#else gtk_widget_set_uposition(handle, x, y); +#endif } else if(handle->window) { diff -r b2e060f43329 -r fb92778105b2 gtk3/dw.c --- a/gtk3/dw.c Fri Aug 26 02:44:15 2011 +0000 +++ b/gtk3/dw.c Fri Aug 26 18:36:53 2011 +0000 @@ -2303,7 +2303,7 @@ } height = max(50,text_height)+100; - x = ( - (text_width+60+extra_width))/2; + x = (dw_screen_width() - (text_width+60+extra_width))/2; y = (dw_screen_height() - height)/2; dw_window_set_pos_size(entrywindow, x, y, (text_width+60+extra_width), height); @@ -8384,6 +8384,9 @@ int _locked_by_me = FALSE; GtkWidget *mdi; + if(!handle) + return; + DW_MUTEX_LOCK; if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) { @@ -8391,8 +8394,12 @@ } else { - if(handle && gtk_widget_get_window(handle)) - gdk_window_move(gtk_widget_get_window(handle), x, y); + GdkWindow *window = NULL; + + if(GTK_IS_WINDOW(handle)) + gtk_window_move(GTK_WINDOW(handle), x, y); + else if((window = gtk_widget_get_window(handle))) + gdk_window_move(window, x, y); } DW_MUTEX_UNLOCK; } @@ -8413,6 +8420,7 @@ if(!handle) return; + DW_MUTEX_LOCK; if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) { @@ -8420,17 +8428,17 @@ } else { + GdkWindow *window = NULL; + if(GTK_IS_WINDOW(handle)) { dw_window_set_size(handle, width, height); -#if 0 /* TODO: Deprecated with no replaced... what to do here? */ - gtk_widget_set_uposition(handle, x, y); -#endif - } - else if(gtk_widget_get_window(handle)) - { - gdk_window_resize(gtk_widget_get_window(handle), width, height); - gdk_window_move(gtk_widget_get_window(handle), x, y); + gtk_window_move(GTK_WINDOW(handle), x, y); + } + else if((window = gtk_widget_get_window(handle))) + { + gdk_window_resize(window, width, height); + gdk_window_move(window, x, y); } } DW_MUTEX_UNLOCK;