add a frame trigger function
authorBenoît Gschwind <doth.gschwind@gmail.com>
Thu, 14 Feb 2008 21:17:22 +0000 (22:17 +0100)
committerDana Jansens <danakj@orodu.net>
Thu, 21 Feb 2008 17:05:34 +0000 (12:05 -0500)
engines/concept/plugin.c
engines/concept/plugin.h
engines/default/plugin.c
engines/default/plugin.h
openbox/engine_interface.h

index 30f52e6144edfbb22586e06a55021d94447fa9ed..9778c4412cc284771a2e48151d7695ae02537285 100644 (file)
@@ -1119,27 +1119,39 @@ ObFramePlugin plugin = { 0, //gpointer handler;
         frame_adjust_shape, //void (*frame_adjust_shape) (gpointer self);
         frame_grab, //void (*frame_adjust_area) (gpointer self, gboolean moved, gboolean resized, gboolean fake);
         frame_ungrab, frame_context, //void (*frame_adjust_state) (gpointer self);
-        frame_set_is_visible, frame_set_is_focus, frame_set_is_max_vert,
-                frame_set_is_max_horz, frame_set_is_shaded,
-
-        frame_flash_start, frame_flash_stop, frame_begin_iconify_animation,
-                frame_end_iconify_animation, frame_iconify_animating,
-
-        frame_set_decorations,
+        frame_set_is_visible, /* */
+        frame_set_is_focus, /* */
+        frame_set_is_max_vert, /* */
+        frame_set_is_max_horz, /* */
+        frame_set_is_shaded, /* */
+        frame_flash_start, /* */
+        frame_flash_stop, /* */
+        frame_begin_iconify_animation, /* */
+        frame_end_iconify_animation, /* */
+        frame_iconify_animating, /* */
+
+        frame_set_decorations, /* */
         /* This give the window area */
-        frame_get_window_area, frame_set_client_area,
+        frame_get_window_area, /* */
+        frame_set_client_area, /* */
         /* Draw the frame */
-        frame_update_layout, frame_update_skin,
-
-        frame_set_hover_flag, frame_set_press_flag,
+        frame_update_layout, /* */
+        frame_update_skin, /* */
 
-        frame_get_window,
+        frame_set_hover_flag, /* */
+        frame_set_press_flag, /* */
 
-        frame_get_size, frame_get_decorations,
+        frame_get_window, /* */
+        frame_get_size, /* */
+        frame_get_decorations, /* */
 
-        frame_is_visible, frame_is_max_horz, frame_is_max_vert,
+        frame_is_visible, /* */
+        frame_is_max_horz, frame_is_max_vert, /* */
+        
+        NULL, /* */
 
-        load_theme_config,
+        load_theme_config, /* */
 
         /* This fields are fill by openbox. */
         0, //Display * ob_display;
index 0f22499ca0a7e509dadd35de514fc3e28eb38e04..0182320be74c826dcdab7f5d21d074468a23ef23 100644 (file)
@@ -162,7 +162,7 @@ void frame_end_iconify_animation(gpointer self);
 gboolean frame_iconify_animating(gpointer _self);
 
 /* Set the layout wanted by client */
-void frame_update_state(gpointer, ObFrameState);
+/*void frame_update_state(gpointer, ObFrameState);*/
 /* This give the allowed area for client window */
 Rect frame_get_window_area(gpointer);
 void frame_set_client_area(gpointer, Rect);
index a8adc866292fd0d32333b7f86a62143c1c30c93a..9040fb3466b6c0b57efeb0fd2d48bd3507d3dc53 100644 (file)
@@ -1778,6 +1778,48 @@ void layout_title(ObDefaultFrame * self)
         XUnmapWindow(plugin.ob_display, self->label);
 }
 
+void frame_trigger(gpointer frame, ObFrameTrigger trigger_name)
+{
+    switch(trigger_name)
+    {
+    case OB_TRIGGER_NORMAL:
+        /* TODO */
+        break;
+    case OB_TRIGGER_INCONIFIED:
+        /* TODO */
+        break;
+    case OB_TRIGGER_SHADED:
+        /* TODO */
+        break;
+    case OB_TRIGGER_MAX:
+        /* TODO */
+        break;
+    case OB_TRIGGER_MAX_VERT:
+        /* TODO */
+        break;
+    case OB_TRIGGER_MAX_HORZ:
+        /* TODO */
+        break;
+    case OB_TRIGGER_NO_BORDER:
+        /* TODO */
+        break;
+    case OB_TRIGGER_PLUGIN1:
+        /* TODO */
+        break;
+    case OB_TRIGGER_PLUGIN2:
+        /* TODO */
+        break;
+    case OB_TRIGGER_PLUGIN3:
+        /* TODO */
+        break;
+    case OB_TRIGGER_PLUGIN4:
+        /* TODO */
+        break;
+    default:
+        break;
+    }
+}
+
 ObFramePlugin plugin = { 0, //gpointer handler;
         "libdefault.la", //gchar * filename;
         "Default", //gchar * name;
@@ -1790,34 +1832,47 @@ ObFramePlugin plugin = { 0, //gpointer handler;
         frame_adjust_shape, //void (*frame_adjust_shape) (gpointer self);
         frame_grab, //void (*frame_adjust_area) (gpointer self, gboolean moved, gboolean resized, gboolean fake);
         frame_ungrab, frame_context, //void (*frame_adjust_state) (gpointer self);
-        frame_set_is_visible, frame_set_is_focus, frame_set_is_max_vert,
-                frame_set_is_max_horz, frame_set_is_shaded,
-
-        frame_flash_start, frame_flash_stop, frame_begin_iconify_animation,
-                frame_end_iconify_animation, frame_iconify_animating,
-
-        frame_set_decorations,
+        frame_set_is_visible, /* */
+        frame_set_is_focus, /* */
+        frame_set_is_max_vert, /* */
+        frame_set_is_max_horz, /* */
+        frame_set_is_shaded, /* */
+
+        frame_flash_start, /* */
+        frame_flash_stop, /* */
+        frame_begin_iconify_animation, /* */
+        frame_end_iconify_animation, /* */
+        frame_iconify_animating, /* */
+
+        frame_set_decorations, /* */
         /* This give the window area */
-        frame_get_window_area, frame_set_client_area,
+        frame_get_window_area, /* */
+        frame_set_client_area, /* */
         /* Draw the frame */
-        frame_update_layout, frame_update_skin,
+        frame_update_layout, /* */
+        frame_update_skin, /* */
 
-        frame_set_hover_flag, frame_set_press_flag,
+        frame_set_hover_flag, /* */
+        frame_set_press_flag, /* */
 
-        frame_get_window,
+        frame_get_window,/* */
 
-        frame_get_size, frame_get_decorations,
+        frame_get_size, /* */
+        frame_get_decorations, /* */
 
-        frame_is_visible, frame_is_max_horz, frame_is_max_vert,
+        frame_is_visible, /* */
+        frame_is_max_horz, /* */
+        frame_is_max_vert, /* */
+        
+        NULL, /* */
 
-        load_theme_config,
+        load_theme_config, /* */
 
         /* This fields are fill by openbox. */
         0, //Display * ob_display;
         0, //gint ob_screen;
         0, //RrInstance *ob_rr_inst;
-        //     0, //RrTheme    *ob_rr_theme;
-                0, //gboolean config_theme_keepborder;
+        0, //gboolean config_theme_keepborder;
         0, //struct _ObClient *focus_cycle_target;
         0, //gchar *config_title_layout;
         FALSE, //gboolean moveresize_in_progress;
index b2c3a7df14930878a2623a3f2846c72959adebc7..32fc01036e4ebcfa4a6c6929999f5c13703fc7a9 100644 (file)
@@ -218,6 +218,8 @@ void free_theme_statics(gpointer self);
 gboolean frame_animate_iconify(gpointer self);
 void frame_adjust_cursors(gpointer self);
 
+void frame_trigger(gpointer, ObFrameTrigger);
+
 /* Global for renderframe.c only */
 extern ObFramePlugin plugin;
 #define OBDEFAULTFRAME(x) ((ObDefaultFrame *)(x))
index e7d4c67095eff39ee2d9ebfad37e573596f1c659..6909eb2a2ed25c262e33b4a6d9627e753fc29245 100644 (file)
@@ -87,16 +87,22 @@ typedef enum
     OB_BUTTON_ICONIFY = 5
 } ObFrameButton;
 
+/* The plugin must implement standars triggers and is free to use other
+ * It's mimic signal (USR1 and USR2) */
 typedef enum
 {
-    OB_FRAME_STATE_NORMAL,
-    OB_FRAME_STATE_INCONIFIED,
-    OB_FRAME_STATE_SHADED,
-    OB_FRAME_STATE_MAX,
-    OB_FRAME_STATE_MAX_VERT,
-    OB_FRAME_STATE_MAX_HORZ,
-    OB_FRAME_STATE_NO_BORDER
-} ObFrameState;
+    OB_TRIGGER_NORMAL,
+    OB_TRIGGER_INCONIFIED,
+    OB_TRIGGER_SHADED,
+    OB_TRIGGER_MAX,
+    OB_TRIGGER_MAX_VERT,
+    OB_TRIGGER_MAX_HORZ,
+    OB_TRIGGER_NO_BORDER,
+    OB_TRIGGER_PLUGIN1,
+    OB_TRIGGER_PLUGIN2,
+    OB_TRIGGER_PLUGIN3,
+    OB_TRIGGER_PLUGIN4, /* ... */
+} ObFrameTrigger;
 
 struct _ObFramePlugin
 {
@@ -147,9 +153,10 @@ struct _ObFramePlugin
     Rect (*frame_get_window_area)(gpointer);
     /* set the requested client area */
     void (*frame_set_client_area)(gpointer, Rect);
-    /* Draw the frame */
+    /* Update size, move/resize windows */
     void (*frame_update_layout)(gpointer self, gboolean is_resize,
             gboolean is_fake);
+    /* Update skin, color/texture windows */ 
     void (*frame_update_skin)(gpointer);
 
     void (*frame_set_hover_flag)(gpointer, ObFrameButton);
@@ -163,6 +170,9 @@ struct _ObFramePlugin
     gboolean (*frame_is_visible)(gpointer);
     gboolean (*frame_is_max_horz)(gpointer);
     gboolean (*frame_is_max_vert)(gpointer);
+    
+    /* This must implement triggers (currently not used) */
+    void (*frame_trigger)(gpointer, ObFrameTrigger);
 
     gint (*load_theme_config)(const RrInstance *inst, const gchar *name,
             const gchar * path, XrmDatabase db, RrFont *active_window_font,