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;
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);
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;
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;
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))
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
{
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);
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,