changeset 521:e3d6f2aac90c

Implemented dw_window_set_pos/get_pos/etc.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 16 Mar 2004 07:25:35 +0000
parents 2fe16658d18b
children 29547598b909
files dwtest.c gtk/dw.c
diffstat 2 files changed, 95 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/dwtest.c	Tue Mar 16 06:58:18 2004 +0000
+++ b/dwtest.c	Tue Mar 16 07:25:35 2004 +0000
@@ -837,6 +837,7 @@
 	dw_box_pack_start(mdi2box, bb, 60, 30, FALSE, FALSE, 0);
 	dw_window_set_size(mdi2w, 200, 100);
 	dw_window_show(mdi2w);
+	dw_window_set_pos(mdi2w, 200, 200);
 }
 
 /*
--- a/gtk/dw.c	Tue Mar 16 06:58:18 2004 +0000
+++ b/gtk/dw.c	Tue Mar 16 07:25:35 2004 +0000
@@ -501,6 +501,20 @@
 		gtk_widget_queue_resize (GTK_WIDGET (widget));
 }
 
+static void gtk_mdi_get_pos(GtkMdi *mdi, GtkWidget *widget, gint *x, gint *y)
+{
+	GtkMdiChild *child;
+
+	g_return_if_fail (GTK_IS_MDI (mdi));
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+
+	child = get_child (mdi, widget);
+	g_return_if_fail (child);
+
+	*x = child->x;
+	*y = child->y;
+}
+
 static void gtk_mdi_tile(GtkMdi *mdi)
 {
 	int i, n;
@@ -7626,10 +7640,22 @@
 void dw_window_set_pos(HWND handle, unsigned long x, unsigned long y)
 {
 	int _locked_by_me = FALSE;
-
-	DW_MUTEX_LOCK;
-	if(handle && handle->window)
-		gdk_window_move(handle->window, x, y);
+#if GTK_MAJOR_VERSION > 1
+	GtkWidget *mdi;
+#endif
+
+	DW_MUTEX_LOCK;
+#if GTK_MAJOR_VERSION > 1
+	if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
+	{
+		gtk_mdi_move(GTK_MDI(mdi), handle, x, y);
+	}
+	else
+#endif
+	{
+		if(handle && handle->window)
+			gdk_window_move(handle->window, x, y);
+	}
 	DW_MUTEX_UNLOCK;
 }
 
@@ -7645,20 +7671,32 @@
 void dw_window_set_pos_size(HWND handle, unsigned long x, unsigned long y, unsigned long width, unsigned long height)
 {
 	int _locked_by_me = FALSE;
+#if GTK_MAJOR_VERSION > 1
+	GtkWidget *mdi;
+#endif
 
 	if(!handle)
 		return;
 
 	DW_MUTEX_LOCK;
-	if(GTK_IS_WINDOW(handle))
-	{
-		dw_window_set_size(handle, width, height);
-		gtk_widget_set_uposition(handle, x, y);
-	}
-	else if(handle->window)
-	{
-		gdk_window_resize(handle->window, width, height);
-		gdk_window_move(handle->window, x, y);
+#if GTK_MAJOR_VERSION > 1
+	if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
+	{
+		gtk_mdi_move(GTK_MDI(mdi), handle, x, y);
+	}
+	else
+#endif
+	{
+		if(GTK_IS_WINDOW(handle))
+		{
+			dw_window_set_size(handle, width, height);
+			gtk_widget_set_uposition(handle, x, y);
+		}
+		else if(handle->window)
+		{
+			gdk_window_resize(handle->window, width, height);
+			gdk_window_move(handle->window, x, y);
+		}
 	}
 	DW_MUTEX_UNLOCK;
 }
@@ -7676,33 +7714,49 @@
 {
 	int _locked_by_me = FALSE;
 	gint gx, gy, gwidth, gheight, gdepth;
-
-	if(handle && handle->window)
-	{
-		DW_MUTEX_LOCK;
-
-		gdk_window_get_geometry(handle->window, &gx, &gy, &gwidth, &gheight, &gdepth);
-		gdk_window_get_root_origin(handle->window, &gx, &gy);
-		if(x)
-			*x = gx;
-		if(y)
-			*y = gy;
-		if(GTK_IS_WINDOW(handle))
-		{
-			if(width)
-				*width = gwidth + _dw_border_width;
-			if(height)
-				*height = gheight + _dw_border_height;
-		}
-		else
-		{
-			if(width)
-				*width = gwidth;
-			if(height)
-				*height = gheight;
-		}
-		DW_MUTEX_UNLOCK;
-	}
+#if GTK_MAJOR_VERSION > 1
+	GtkWidget *mdi;
+#endif
+
+	DW_MUTEX_LOCK;
+#if GTK_MAJOR_VERSION > 1
+	if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
+	{
+		gint myx, myy;
+
+		gtk_mdi_get_pos(GTK_MDI(mdi), handle, &myx, &myy);
+		*x = myx;
+		*y = myy;
+	}
+	else
+#endif
+	{
+		if(handle && handle->window)
+		{
+
+			gdk_window_get_geometry(handle->window, &gx, &gy, &gwidth, &gheight, &gdepth);
+			gdk_window_get_root_origin(handle->window, &gx, &gy);
+			if(x)
+				*x = gx;
+			if(y)
+				*y = gy;
+			if(GTK_IS_WINDOW(handle))
+			{
+				if(width)
+					*width = gwidth + _dw_border_width;
+				if(height)
+					*height = gheight + _dw_border_height;
+			}
+			else
+			{
+				if(width)
+					*width = gwidth;
+				if(height)
+					*height = gheight;
+			}
+		}
+	}
+	DW_MUTEX_UNLOCK;
 }
 
 /*