diff options
author | Havoc Pennington <hp@src.gnome.org> | 2000-07-09 04:15:30 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2000-07-09 04:15:30 +0000 |
commit | 2331f8409b883bdbd757596ecc37a6e2e901e05d (patch) | |
tree | 3dd6d2e06a7ea2abaff85ba0004e55bca04387a0 | |
parent | 7d952d8f1c3cd29405ce5a0fe8c3e40eb42e5505 (diff) | |
download | gdk-pixbuf-2331f8409b883bdbd757596ecc37a6e2e901e05d.tar.gz |
sync to home
-rw-r--r-- | gtk/gtkenums.h | 3 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 26 |
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) { |