Make the dock a context and add actions LowerDock and RaiseDock
[dana/openbox.git] / openbox / frame.h
index fd5adf7..915c08d 100644 (file)
@@ -21,7 +21,7 @@
 #define __frame_h
 
 #include "geom.h"
-#include "render/render.h"
+#include "obrender/render.h"
 
 typedef struct _ObFrame ObFrame;
 
@@ -53,6 +53,7 @@ typedef enum {
     /*! This is a special context, which occurs while dragging a window in
       a move/resize */
     OB_FRAME_CONTEXT_MOVE_RESIZE,
+    OB_FRAME_CONTEXT_DOCK,
     OB_FRAME_NUM_CONTEXTS
 } ObFrameContext;
 
@@ -84,7 +85,8 @@ struct _ObFrame
 
     Window    window;
 
-    Strut     size;
+    Strut     size;    /* the size of the frame */
+    Strut     oldsize; /* the size of the frame last told to the client */
     Rect      area;
     gboolean  visible;
 
@@ -190,12 +192,14 @@ struct _ObFrame
     gboolean  flashing;
     gboolean  flash_on;
     GTimeVal  flash_end;
+    guint     flash_timer;
 
     /*! Is the frame currently in an animation for iconify or restore.
       0 means that it is not animating. > 0 means it is animating an iconify.
       < 0 means it is animating a restore.
     */
     gint iconify_animation_going;
+    guint iconify_animation_timer;
     GTimeVal  iconify_animation_end;
 };
 
@@ -205,6 +209,9 @@ void frame_free(ObFrame *self);
 void frame_show(ObFrame *self);
 void frame_hide(ObFrame *self);
 void frame_adjust_theme(ObFrame *self);
+#ifdef SHAPE
+void frame_adjust_shape_kind(ObFrame *self, int kind);
+#endif
 void frame_adjust_shape(ObFrame *self);
 void frame_adjust_area(ObFrame *self, gboolean moved,
                        gboolean resized, gboolean fake);
@@ -218,6 +225,16 @@ void frame_release_client(ObFrame *self);
 
 ObFrameContext frame_context_from_string(const gchar *name);
 
+/*! Parses a ObFrameContext from a string of space-separated context names.
+  @names The list of context names, the first of which is removed from the
+         string.
+  @cx The ObFrameContext is returned here.  If an invalid name is found, this
+      is set to OB_FRAME_CONTEXT_NONE.
+  @return TRUE if there was something to read in @names, FALSE if it was an
+          empty input.
+*/
+gboolean frame_next_context_from_string(gchar *names, ObFrameContext *cx);
+
 ObFrameContext frame_context(struct _ObClient *self, Window win,
                              gint x, gint y);