[gimp] Add GtkWidget::window_state_event() implementation to GimpImageWindow



commit fb046b097da957b3389b12a3be5da7c8706ddb8b
Author: Michael Natterer <mitch gimp org>
Date:   Wed Sep 23 13:40:52 2009 +0200

    Add GtkWidget::window_state_event() implementation to GimpImageWindow
    
    Keep an own window_state member around and update it accordingly.
    Chain up in GimpDisplayShell's window_state_event() impl.

 app/display/gimpdisplayshell.c |    2 +
 app/display/gimpimagewindow.c  |   52 +++++++++++++++++++++++++++-------------
 app/display/gimpimagewindow.h  |    2 +
 3 files changed, 39 insertions(+), 17 deletions(-)
---
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index aacc944..5261ce2 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -643,6 +643,8 @@ gimp_display_shell_window_state_event (GtkWidget           *widget,
   GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget);
   Gimp             *gimp  = shell->display->gimp;
 
+  GTK_WIDGET_CLASS (parent_class)->window_state_event (widget, event);
+
   shell->window_state = event->new_window_state;
 
   if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 18749e0..62a99ea 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -30,6 +30,7 @@
 #include "gimpdisplayshell.h"
 #include "gimpimagewindow.h"
 
+#include "gimp-log.h"
 #include "gimp-intl.h"
 
 
@@ -42,20 +43,23 @@ enum
 
 /*  local function prototypes  */
 
-static GObject * gimp_image_window_constructor  (GType         type,
-                                                 guint         n_params,
+static GObject * gimp_image_window_constructor  (GType                type,
+                                                 guint                n_params,
                                                  GObjectConstructParam *params);
-static void      gimp_image_window_finalize     (GObject      *object);
-static void      gimp_image_window_set_property (GObject      *object,
-                                                 guint         property_id,
-                                                 const GValue *value,
-                                                 GParamSpec   *pspec);
-static void      gimp_image_window_get_property (GObject      *object,
-                                                 guint         property_id,
-                                                 GValue       *value,
-                                                 GParamSpec   *pspec);
+static void      gimp_image_window_finalize     (GObject             *object);
+static void      gimp_image_window_set_property (GObject             *object,
+                                                 guint                property_id,
+                                                 const GValue        *value,
+                                                 GParamSpec          *pspec);
+static void      gimp_image_window_get_property (GObject             *object,
+                                                 guint                property_id,
+                                                 GValue              *value,
+                                                 GParamSpec          *pspec);
 
-static void      gimp_image_window_destroy      (GtkObject    *object);
+static void      gimp_image_window_destroy      (GtkObject           *object);
+
+static gboolean  gimp_image_window_window_state (GtkWidget           *widget,
+                                                 GdkEventWindowState *event);
 
 
 G_DEFINE_TYPE (GimpImageWindow, gimp_image_window, GIMP_TYPE_WINDOW)
@@ -68,13 +72,16 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
 {
   GObjectClass   *object_class     = G_OBJECT_CLASS (klass);
   GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class     = GTK_WIDGET_CLASS (klass);
+
+  object_class->constructor        = gimp_image_window_constructor;
+  object_class->finalize           = gimp_image_window_finalize;
+  object_class->set_property       = gimp_image_window_set_property;
+  object_class->get_property       = gimp_image_window_get_property;
 
-  object_class->constructor  = gimp_image_window_constructor;
-  object_class->finalize     = gimp_image_window_finalize;
-  object_class->set_property = gimp_image_window_set_property;
-  object_class->get_property = gimp_image_window_get_property;
+  gtk_object_class->destroy        = gimp_image_window_destroy;
 
-  gtk_object_class->destroy  = gimp_image_window_destroy;
+  widget_class->window_state_event = gimp_image_window_window_state;
 
   g_object_class_install_property (object_class, PROP_MENU_FACTORY,
                                    g_param_spec_object ("menu-factory",
@@ -171,6 +178,17 @@ gimp_image_window_destroy (GtkObject *object)
   GTK_OBJECT_CLASS (parent_class)->destroy (object);
 }
 
+static gboolean
+gimp_image_window_window_state (GtkWidget           *widget,
+                                GdkEventWindowState *event)
+{
+  GimpImageWindow *window = GIMP_IMAGE_WINDOW (widget);
+
+  window->window_state = event->new_window_state;
+
+  return FALSE;
+}
+
 
 /*  public functions  */
 
diff --git a/app/display/gimpimagewindow.h b/app/display/gimpimagewindow.h
index f942a0b..d28c657 100644
--- a/app/display/gimpimagewindow.h
+++ b/app/display/gimpimagewindow.h
@@ -37,6 +37,8 @@ struct _GimpImageWindow
   GimpWindow       parent_instance;
 
   GimpUIManager   *menubar_manager;
+
+  GdkWindowState   window_state;
 };
 
 struct _GimpImageWindowClass



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