[gtk+/client-side-decorations: 38/92] fix GtkPlug to always force cs-decorations off
- From: Cody Russell <bratsche src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/client-side-decorations: 38/92] fix GtkPlug to always force cs-decorations off
- Date: Fri, 16 Apr 2010 19:30:18 +0000 (UTC)
commit ceec85b195ff532e601732e7666f739c1cc028db
Author: Cody Russell <crussell canonical com>
Date: Mon Jun 8 13:07:52 2009 -0500
fix GtkPlug to always force cs-decorations off
gtk/gtkplug.c | 3 +++
gtk/gtkwindow.c | 35 ++++++++++++++++++++++++++++++-----
gtk/gtkwindow.h | 1 +
3 files changed, 34 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c
index 52d2b92..5522210 100644
--- a/gtk/gtkplug.c
+++ b/gtk/gtkplug.c
@@ -188,6 +188,7 @@ gtk_plug_class_init (GtkPlugClass *class)
GDK_TYPE_WINDOW,
GTK_PARAM_READABLE));
+
/**
* GtkPlug::embedded:
* @plug: the object on which the signal was emitted
@@ -212,6 +213,8 @@ gtk_plug_init (GtkPlug *plug)
window = GTK_WINDOW (plug);
window->type = GTK_WINDOW_TOPLEVEL;
+
+ gtk_window_disable_client_side_decorations (window);
}
static void
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index de4125e..4307a82 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -212,6 +212,7 @@ struct _GtkWindowPrivate
gboolean client_side_decorated;
GdkWMDecoration client_side_decorations;
GdkWMDecoration old_decorations;
+ gboolean disable_client_side_decorations;
GdkWindowTypeHint type_hint;
@@ -1032,6 +1033,7 @@ gtk_window_init (GtkWindow *window)
priv->client_side_decorated = TRUE;
gtk_window_set_client_side_decorations (window, GDK_DECOR_BORDER | GDK_DECOR_TITLE | GDK_DECOR_MAXIMIZE);
priv->old_decorations = 0;
+ priv->disable_client_side_decorations = FALSE;
label = gtk_label_new ("");
gtk_widget_show (label);
@@ -3196,6 +3198,29 @@ gtk_window_get_decorated (GtkWindow *window)
return window->decorated;
}
+/**
+ * gtk_window_disable_client_side_decorations:
+ * @window: a #GtkWindow
+ *
+ * Disables client-side window decorations for the given window.
+ * This is intended to be used by subclasses of GtkWindow that
+ * need to always disable client-side decorations, for example
+ * GtkPlug. Normally client-side decorations should be
+ * controlled through GtkWindow's client-side-decorated style
+ * property.
+ **/
+void
+gtk_window_disable_client_side_decorations (GtkWindow *window)
+{
+ GtkWindowPrivate *priv;
+
+ g_return_if_fail (GTK_IS_WINDOW (window));
+
+ priv = GTK_WINDOW_GET_PRIVATE (window);
+
+ priv->disable_client_side_decorations = TRUE;
+}
+
void
gtk_window_set_client_side_decorations (GtkWindow *window,
GdkWMDecoration setting)
@@ -5026,15 +5051,18 @@ gtk_window_unmap (GtkWidget *widget)
static gboolean
is_client_side_decorated (GtkWindow *window)
{
+ GtkWindowPrivate *priv;
gboolean client_side_decorated;
+ priv = GTK_WINDOW_GET_PRIVATE (window);
+
gtk_widget_style_get (GTK_WIDGET (window),
"client-side-decorated", &client_side_decorated,
NULL);
- return 1 && window->decorated; // XXX - remove this :)
+ return 1 && window->decorated && !priv->disable_client_side_decorations; // XXX - remove this :)
- return client_side_decorated && window->decorated;
+ return client_side_decorated && window->decorated && !priv->disable_client_side_decorations;
}
static void
@@ -5647,7 +5675,6 @@ static gboolean
gtk_window_button_press_event (GtkWidget *widget,
GdkEventButton *event)
{
- GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE (widget);
gint x = event->x;
gint y = event->y;
@@ -7231,8 +7258,6 @@ static void
gtk_window_paint (GtkWidget *widget,
GdkRectangle *area)
{
- GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE (widget);
-
#if 0
if (is_client_side_decorated (GTK_WINDOW (widget)))
{
diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h
index 9d3c05c..3356a72 100644
--- a/gtk/gtkwindow.h
+++ b/gtk/gtkwindow.h
@@ -277,6 +277,7 @@ gboolean gtk_window_get_decorated (GtkWindow *window);
void gtk_window_set_client_side_decorations (GtkWindow *window,
GdkWMDecoration decoration);
GdkWMDecoration gtk_window_get_client_side_decorations (GtkWindow *window);
+void gtk_window_disable_client_side_decorations (GtkWindow *window);
void gtk_window_set_deletable (GtkWindow *window,
gboolean setting);
gboolean gtk_window_get_deletable (GtkWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]