summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@src.gnome.org>2000-07-09 04:15:30 +0000
committerHavoc Pennington <hp@src.gnome.org>2000-07-09 04:15:30 +0000
commit2331f8409b883bdbd757596ecc37a6e2e901e05d (patch)
tree3dd6d2e06a7ea2abaff85ba0004e55bca04387a0
parent7d952d8f1c3cd29405ce5a0fe8c3e40eb42e5505 (diff)
downloadgdk-pixbuf-2331f8409b883bdbd757596ecc37a6e2e901e05d.tar.gz
sync to home
-rw-r--r--gtk/gtkenums.h3
-rw-r--r--gtk/gtkwindow.c26
2 files changed, 26 insertions, 3 deletions
diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h
index 4efe82b77..0b129ff57 100644
--- a/gtk/gtkenums.h
+++ b/gtk/gtkenums.h
@@ -313,7 +313,8 @@ typedef enum
GTK_WIN_POS_NONE,
GTK_WIN_POS_CENTER,
GTK_WIN_POS_MOUSE,
- GTK_WIN_POS_CENTER_ALWAYS
+ GTK_WIN_POS_CENTER_ALWAYS,
+ GTK_WIN_POS_CENTER_ON_PARENT
} GtkWindowPosition;
/* Window types */
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 4f86df446..2b23cd60a 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -2137,13 +2137,20 @@ gtk_window_compute_reposition (GtkWindow *window,
gint *y)
{
GtkWidget *widget;
-
+ GtkWindowPosition pos;
+
widget = GTK_WIDGET (window);
*x = -1;
*y = -1;
+
+ pos = window->position;
+ if (pos == GTK_WIN_POS_CENTER_ON_PARENT &&
+ (window->transient_parent == NULL ||
+ !GTK_WIDGET_MAPPED (window->transient_parent))
+ pos = GTK_WIN_POS_NONE;
- switch (window->position)
+ switch (pos)
{
case GTK_WIN_POS_CENTER:
case GTK_WIN_POS_CENTER_ALWAYS:
@@ -2156,6 +2163,21 @@ gtk_window_compute_reposition (GtkWindow *window,
*y = (screen_height - new_height) / 2;
}
break;
+
+ case GTK_WIN_POS_CENTER_ON_PARENT:
+ if (window->use_uposition)
+ {
+ gint ox, oy;
+ gdk_window_get_origin (window->transient_parent->window,
+ &ox, &oy);
+
+ g_assert (window->transient_parent);
+
+ *x = ox + (window->transient_parent->allocation.width - new_width) / 2;
+ *y = oy + (window->transient_parent->allocation.height - new_height) / 2;
+ }
+ break;
+
case GTK_WIN_POS_MOUSE:
if (window->use_uposition)
{