[gtk+] Add gtk_widget_set_window()



commit cc8927a5896121ffa8bcbc192b8a3b794a4d812f
Author: Michael Natterer <mitch gimp org>
Date:   Fri Aug 28 16:51:48 2009 +0200

    Add gtk_widget_set_window()
    
    New function as replacement for setting widget->window directly.
    Should only be used in GtkWidget::realize().

 gtk/gtk.symbols |    1 +
 gtk/gtkwidget.c |   35 +++++++++++++++++++++++++++++++++--
 gtk/gtkwidget.h |    5 ++++-
 3 files changed, 38 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index bd13c92..5d5cbec 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -5088,6 +5088,7 @@ gtk_widget_set_tooltip_markup
 gtk_widget_set_tooltip_text
 gtk_widget_set_tooltip_window
 gtk_widget_set_visible
+gtk_widget_set_window
 gtk_widget_shape_combine_mask
 gtk_widget_input_shape_combine_mask
 gtk_widget_show
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 0f29020..9ee2218 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -5737,8 +5737,8 @@ gtk_widget_is_drawable (GtkWidget *widget)
 {
   g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  return ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0 &&
-          (GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0);
+  return ((GTK_WIDGET_FLAGS (widget) & GTK_VISIBLE) != 0 &&
+          (GTK_WIDGET_FLAGS (widget) & GTK_MAPPED) != 0);
 }
 
 /**
@@ -10836,6 +10836,37 @@ gtk_widget_set_allocation (GtkWidget           *widget,
 }
 
 /**
+ * gtk_widget_set_window:
+ * @widget: a #GtkWidget
+ * @window: a #GdkWindow
+ *
+ * Sets a widget's window. This function should only be used in a
+ * widget's GtkWidget::realize() implementation. The %window passed is
+ * usually either new window created with gdk_window_new(), or the
+ * window of its parent widget as returned by
+ * gtk_widget_get_parent_window().
+ *
+ * Widgets must indicate whether they will create their own #GdkWindow
+ * by calling gtk_widget_set_has_window(). This is usually done in the
+ * widget's init() function.
+ *
+ * Since: 2.18
+ */
+void
+gtk_widget_set_window (GtkWidget *widget,
+                       GdkWindow *window)
+{
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (window == NULL || GDK_IS_WINDOW (window));
+
+  if (widget->window != window)
+    {
+      widget->window = window;
+      g_object_notify (G_OBJECT (widget), "window");
+    }
+}
+
+/**
  * gtk_widget_get_window:
  * @widget: a #GtkWidget
  *
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index eb972c9..d00beeb 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -609,7 +609,10 @@ GdkWindow           * gtk_widget_get_parent_window      (GtkWidget    *widget);
 void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
 							 gboolean      is_visible);
 gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
-GdkWindow*            gtk_widget_get_window             (GtkWidget    *widget);
+
+void                  gtk_widget_set_window             (GtkWidget    *widget,
+                                                         GdkWindow    *window);
+GdkWindow           * gtk_widget_get_window             (GtkWidget    *widget);
 
 void                  gtk_widget_get_allocation         (GtkWidget     *widget,
                                                          GtkAllocation *allocation);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]