diff gtk3/dw.c @ 1121:fb92778105b2

Fixes some major window positioning problems in GTK3... and some minor ones in GTK2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 26 Aug 2011 18:36:53 +0000
parents 63dd52ba9a8f
children e52c710e6d08
line wrap: on
line diff
--- 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;