[Xfce4-commits] <exo:master> Support hexadecimal xid and center on parent.
Nick Schermer
noreply at xfce.org
Wed Dec 28 13:38:01 CET 2011
Updating branch refs/heads/master
to bc19cf06369df4ce5cfa5275f9282471220cc678 (commit)
from 2e899a10f9b62039453ff5583ac954bb1d03d628 (commit)
commit bc19cf06369df4ce5cfa5275f9282471220cc678
Author: Nick Schermer <nick at xfce.org>
Date: Wed Dec 28 13:27:52 2011 +0100
Support hexadecimal xid and center on parent.
exo-desktop-item-edit/main.c | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/exo-desktop-item-edit/main.c b/exo-desktop-item-edit/main.c
index eca4ba4..b17a1bb 100644
--- a/exo-desktop-item-edit/main.c
+++ b/exo-desktop-item-edit/main.c
@@ -64,7 +64,7 @@ static gchar *opt_comment = NULL;
static gchar *opt_command = NULL;
static gchar *opt_url = NULL;
static gchar *opt_icon = NULL;
-static gint opt_xid = 0;
+static gint64 opt_xid = 0;
@@ -83,7 +83,7 @@ static GOptionEntry option_entries[] =
{ "url", 0, 0, G_OPTION_ARG_STRING, &opt_url, N_ ("Preset URL when creating a link"), NULL, },
{ "icon", 0, 0, G_OPTION_ARG_STRING, &opt_icon, N_ ("Preset icon when creating a desktop file"), NULL, },
{ "version", 'V', 0, G_OPTION_ARG_NONE, &opt_version, N_ ("Print version information and exit"), NULL, },
- { "xid", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &opt_xid, NULL, NULL, },
+ { "xid", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT64, &opt_xid, NULL, NULL, },
{ NULL, },
};
@@ -139,6 +139,7 @@ main (int argc, char **argv)
gchar **dirs;
guint i;
const gchar *mode_dir;
+ gint ox, oy, ow, oh;
/* setup translation domain */
xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
@@ -403,7 +404,7 @@ main (int argc, char **argv)
if (G_UNLIKELY (opt_xid != 0))
{
/* try to determine the window for the id */
- xwindow = gdk_window_foreign_new (opt_xid);
+ xwindow = gdk_window_foreign_new ((GdkNativeWindow) opt_xid);
if (G_LIKELY (xwindow != NULL))
{
/* realize the dialog first... */
@@ -411,6 +412,16 @@ main (int argc, char **argv)
/* ...and set the "transient for" relation */
gdk_window_set_transient_for (dialog->window, xwindow);
+ gtk_window_set_screen (GTK_WINDOW (dialog), gdk_window_get_screen (xwindow));
+
+ /* center on parent */
+ gdk_window_get_root_origin (xwindow, &ox, &oy);
+ gdk_window_get_geometry (xwindow, NULL, NULL, &ow, &oh, NULL);
+
+ ox += (ow - dialog->allocation.width) / 2;
+ oy += (oh - dialog->allocation.height) / 2;
+
+ gtk_window_move (GTK_WINDOW (dialog), MAX (ox, 0), MAX (oy, 0));
}
}
#endif
More information about the Xfce4-commits
mailing list