Attached is the patch for window properties.

Comments suggestions ?
? prop.patch
Index: include/directfb.h
===================================================================
RCS file: /cvs/directfb/DirectFB/include/directfb.h,v
retrieving revision 1.304
diff -u -r1.304 directfb.h
--- include/directfb.h	17 Jul 2006 13:12:21 -0000	1.304
+++ include/directfb.h	1 Aug 2006 20:14:01 -0000
@@ -4324,6 +4324,34 @@
    /** Appearance and Behaviour **/
 
      /*
+      * Set property controlling appearance and behaviour of the window.
+      */
+     DFBResult (*SetProperty) (
+          IDirectFBWindow               *thiz,
+          char                          *key,
+          void                          *value,
+          void                          **old_value
+     );
+
+     /*
+      * Get property controlling appearance and behaviour of the window.
+      */
+     DFBResult (*GetProperty) (
+          IDirectFBWindow               *thiz,
+          char                          *key,
+          void                          **value
+     );
+
+     /*
+      * Remove property controlling appearance and behaviour of the window.
+      */
+     DFBResult (*RemoveProperty) (
+          IDirectFBWindow               *thiz,
+          char                          *key,
+          void                          **value
+     );
+
+     /*
       * Set options controlling appearance and behaviour of the window.
       */
      DFBResult (*SetOptions) (
Index: src/core/wm.c
===================================================================
RCS file: /cvs/directfb/DirectFB/src/core/wm.c,v
retrieving revision 1.12
diff -u -r1.12 wm.c
--- src/core/wm.c	16 Jul 2006 10:15:29 -0000	1.12
+++ src/core/wm.c	1 Aug 2006 20:14:02 -0000
@@ -563,6 +563,7 @@
 
      return wm_local->funcs->GetInsets(stack,window,insets);
 }
+
 /**
  Give the wm a chance to override the windows configuration 
 **/
@@ -652,6 +653,65 @@
      return ret;
 }
 
+/**
+ * Let the wm set a property on a window 
+ */
+DFBResult
+dfb_wm_set_window_property( CoreWindowStack  *stack,
+					 CoreWindow       *window,
+                     char             *key,
+                     void             *value,
+                     void             **old_value)
+{
+     D_ASSERT( wm_local != NULL );
+     D_ASSERT( wm_local->funcs != NULL );
+     D_ASSERT( wm_local->funcs->SetWindowProperty != NULL );
+
+     D_ASSERT( stack != NULL );
+
+     return wm_local->funcs->SetWindowProperty(stack,wm_local->data,stack->stack_data,
+                                                    window,window->window_data,
+                                                    key,value,old_value);
+}
+
+/**
+ * get the wm  property on a window 
+ */
+DFBResult
+dfb_wm_get_window_property( CoreWindowStack  *stack,
+					 CoreWindow       *window,
+                     char             *key,
+                     void             **value)
+{
+     D_ASSERT( wm_local != NULL );
+     D_ASSERT( wm_local->funcs != NULL );
+     D_ASSERT( wm_local->funcs->GetWindowProperty != NULL );
+
+     D_ASSERT( stack != NULL );
+
+     return wm_local->funcs->GetWindowProperty(stack,wm_local->data,stack->stack_data,
+                                                window,window->window_data,key,value);
+}
+
+/**
+ * remove th wm  property on a window 
+ */
+DFBResult
+dfb_wm_remove_window_property( CoreWindowStack  *stack,
+					 CoreWindow       *window,
+                     char             *key,
+                     void             **value)
+{
+     D_ASSERT( wm_local != NULL );
+     D_ASSERT( wm_local->funcs != NULL );
+     D_ASSERT( wm_local->funcs->RemoveWindowProperty != NULL );
+
+     D_ASSERT( stack != NULL );
+
+     return wm_local->funcs->RemoveWindowProperty(stack,wm_local->data,stack->stack_data,
+                                                    window,window->window_data,key,value);
+}
+
 DFBResult
 dfb_wm_set_window_config( CoreWindow             *window,
                           const CoreWindowConfig *config,
Index: src/core/wm.h
===================================================================
RCS file: /cvs/directfb/DirectFB/src/core/wm.h,v
retrieving revision 1.11
diff -u -r1.11 wm.h
--- src/core/wm.h	16 Jul 2006 10:15:29 -0000	1.11
+++ src/core/wm.h	1 Aug 2006 20:14:02 -0000
@@ -185,6 +185,30 @@
 
 
    /** Window **/
+    DFBResult (*SetWindowProperty)( CoreWindowStack  *stack,
+                                    void             *wm_data,
+                                    void             *stack_data,
+					                CoreWindow       *window,
+                                    void             *window_data,
+                                    char             *key,
+                                    void             *value,
+                                    void             **old_value);
+
+    DFBResult (*GetWindowProperty)( CoreWindowStack  *stack,
+                                    void             *wm_data,
+                                    void             *stack_data,
+					                CoreWindow       *window,
+                                    void             *window_data,
+                                    char             *key,
+                                    void             **value);
+
+    DFBResult (*RemoveWindowProperty)( CoreWindowStack  *stack,
+                                       void             *wm_data,
+                                       void             *stack_data,
+					                   CoreWindow       *window,
+                                       void             *window_data,
+                                       char             *key,
+                                       void             **value);
 
      DFBResult (*GetInsets)         ( CoreWindowStack        *stack,
                                       CoreWindow             *window,
@@ -296,7 +320,23 @@
                                       CoreWindow             *window,
                                       DFBInsets              *insets );
 
-DFBResult dfb_wm_preconfigure_window( CoreWindowStack        *stack,
+DFBResult dfb_wm_set_window_property ( CoreWindowStack  *stack,
+					                  CoreWindow       *window,
+                                      char             *key,
+                                      void             *value,
+                                      void             **old_value);
+
+DFBResult dfb_wm_get_window_property ( CoreWindowStack  *stack,
+					                  CoreWindow       *window,
+                                      char             *key,
+                                      void             **value);
+
+DFBResult dfb_wm_remove_window_property ( CoreWindowStack  *stack,
+					                  CoreWindow       *window,
+                                      char             *key,
+                                      void             **value);
+
+DFBResult dfb_wm_preconfigure_window ( CoreWindowStack        *stack,
                                       CoreWindow             *window );
 
 
Index: src/core/wm_module.h
===================================================================
RCS file: /cvs/directfb/DirectFB/src/core/wm_module.h,v
retrieving revision 1.9
diff -u -r1.9 wm_module.h
--- src/core/wm_module.h	16 Jul 2006 10:15:29 -0000	1.9
+++ src/core/wm_module.h	1 Aug 2006 20:14:02 -0000
@@ -120,6 +120,31 @@
                                      CoreWindow             *window,
                                      void                   *window_data );
 
+static DFBResult wm_set_window_property( CoreWindowStack        *stack,
+                                       void                   *wm_data,
+                                       void                   *stack_data,
+                                       CoreWindow             *window,
+                                       void                   *window_data,
+                                       char                   *key,
+                                       void                   *value, 
+                                       void                   **old_value );
+
+static DFBResult wm_get_window_property( CoreWindowStack        *stack,
+                                       void                   *wm_data,
+                                       void                   *stack_data,
+                                       CoreWindow             *window,
+                                       void                   *window_data,
+                                       char                   *key,
+                                       void                   **ret_value );
+
+static DFBResult wm_remove_window_property( CoreWindowStack        *stack,
+                                       void                   *wm_data,
+                                       void                   *stack_data,
+                                       CoreWindow             *window,
+                                       void                   *window_data,
+                                       char                   *key,
+                                       void                   **ret_value );
+
 static DFBResult wm_add_window     ( CoreWindowStack        *stack,
                                      void                   *wm_data,
                                      void                   *stack_data,
@@ -201,7 +226,10 @@
 
      StartDesktop:     	  wm_start_desktop,
      GetInsets:     	  wm_get_insets,
-     PreConfigureWindow:     wm_preconfigure_window,
+     PreConfigureWindow:  wm_preconfigure_window,
+     SetWindowProperty:   wm_set_window_property,
+     GetWindowProperty:   wm_get_window_property,
+     RemoveWindowProperty:wm_remove_window_property,
      AddWindow:           wm_add_window,
      RemoveWindow:        wm_remove_window,
      SetWindowConfig:     wm_set_window_config,
Index: src/windows/idirectfbwindow.c
===================================================================
RCS file: /cvs/directfb/DirectFB/src/windows/idirectfbwindow.c,v
retrieving revision 1.86
diff -u -r1.86 idirectfbwindow.c
--- src/windows/idirectfbwindow.c	11 Jun 2006 16:33:00 -0000	1.86
+++ src/windows/idirectfbwindow.c	1 Aug 2006 20:14:03 -0000
@@ -344,6 +344,55 @@
 }
 
 static DFBResult
+IDirectFBWindow_SetProperty( IDirectFBWindow  *thiz,
+                            char *key, void *value, void **old_value )
+{
+     DIRECT_INTERFACE_GET_DATA(IDirectFBWindow)
+
+     /* Check arguments */
+     if (data->destroyed)
+          return DFB_DESTROYED;
+
+     if (!key)
+          return DFB_INVARG;
+
+     return dfb_wm_set_window_property(data->window->stack,data->window,key,value,old_value);
+}
+
+static DFBResult
+IDirectFBWindow_GetProperty( IDirectFBWindow  *thiz,char *key,
+                            void **ret_value )
+{
+     DIRECT_INTERFACE_GET_DATA(IDirectFBWindow)
+
+     if (data->destroyed)
+          return DFB_DESTROYED;
+
+     if (!key)
+          return DFB_INVARG;
+
+     if (!ret_value)
+          return DFB_INVARG;
+
+     return dfb_wm_get_window_property(data->window->stack,data->window,key,ret_value);
+}
+
+static DFBResult
+IDirectFBWindow_RemoveProperty( IDirectFBWindow  *thiz,char *key,
+                            void **ret_value )
+{
+     DIRECT_INTERFACE_GET_DATA(IDirectFBWindow)
+
+     if (data->destroyed)
+          return DFB_DESTROYED;
+
+     if (!key)
+          return DFB_INVARG;
+
+     return dfb_wm_remove_window_property(data->window->stack,data->window,key,ret_value);
+}
+
+static DFBResult
 IDirectFBWindow_SetOptions( IDirectFBWindow  *thiz,
                             DFBWindowOptions  options )
 {
@@ -832,6 +881,9 @@
      thiz->GetPosition = IDirectFBWindow_GetPosition;
      thiz->GetSize = IDirectFBWindow_GetSize;
      thiz->GetSurface = IDirectFBWindow_GetSurface;
+     thiz->SetProperty = IDirectFBWindow_SetProperty;
+     thiz->GetProperty = IDirectFBWindow_GetProperty;
+     thiz->RemoveProperty = IDirectFBWindow_RemoveProperty;
      thiz->SetOptions = IDirectFBWindow_SetOptions;
      thiz->GetOptions = IDirectFBWindow_GetOptions;
      thiz->SetColorKey = IDirectFBWindow_SetColorKey;
Index: wm/default/default.c
===================================================================
RCS file: /cvs/directfb/DirectFB/wm/default/default.c,v
retrieving revision 1.31
diff -u -r1.31 default.c
--- wm/default/default.c	16 Jul 2006 10:15:29 -0000	1.31
+++ wm/default/default.c	1 Aug 2006 20:14:04 -0000
@@ -2795,6 +2795,7 @@
 	return DFB_OK;
 }
 
+
 static DFBResult
 wm_preconfigure_window( CoreWindowStack *stack,
                void            *wm_data,
@@ -2806,6 +2807,44 @@
 }
 
 static DFBResult
+wm_set_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            *value,
+               void            **old_value)
+{
+	return DFB_OK;
+}
+
+static DFBResult
+wm_get_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            **value)
+{
+	return DFB_OK;
+}
+
+
+static DFBResult
+wm_remove_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            **value)
+{
+	return DFB_OK;
+}
+
+static DFBResult
 wm_add_window( CoreWindowStack *stack,
                void            *wm_data,
                void            *stack_data,
Index: wm/unique/unique.c
===================================================================
RCS file: /cvs/directfb/DirectFB/wm/unique/unique.c,v
retrieving revision 1.14
diff -u -r1.14 unique.c
--- wm/unique/unique.c	16 Jul 2006 10:15:29 -0000	1.14
+++ wm/unique/unique.c	1 Aug 2006 20:14:05 -0000
@@ -564,6 +564,44 @@
 }
 
 static DFBResult
+wm_set_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            *value,
+               void            **old_value)
+{
+	return DFB_OK;
+}
+
+static DFBResult
+wm_get_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            **value)
+{
+	return DFB_OK;
+}
+
+
+static DFBResult
+wm_remove_window_property( CoreWindowStack *stack,
+               void            *wm_data,
+               void            *stack_data,
+               CoreWindow      *window,
+               void            *window_data,
+               char            *key,
+               void            **value)
+{
+	return DFB_OK;
+}
+
+static DFBResult
 wm_add_window( CoreWindowStack *stack,
                void            *wm_data,
                void            *stack_data,
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to