openbox/action.h (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
#ifndef __action_h #define __action_h #include "client.h" /* These have to all have a Client* at the top even if they don't use it, so that I can set it blindly later on. So every function will have a Client* available (possibly NULL though) if it wants it. */ struct AnyAction { Client *c; }; struct DirectionalAction{ Client *c; int direction; }; struct Execute { Client *c; char *path; }; struct ClientAction { Client *c; }; struct MoveResizeRelative { Client *c; int delta; }; struct SendToDesktop { Client *c; guint desk; gboolean follow; }; struct SendToNextPreviousDesktop { Client *c; gboolean wrap; gboolean follow; }; struct Desktop { Client *c; guint desk; }; struct Layer { Client *c; int layer; /* < 0 = below, 0 = normal, > 0 = above */ }; struct NextPreviousDesktop { Client *c; gboolean wrap; }; struct MoveResize { Client *c; int x; int y; guint32 corner; /* prop_atoms.net_wm_moveresize_* */ guint button; }; struct ShowMenu { Client *c; char *name; int x; int y; }; struct CycleWindows { Client *c; gboolean linear; gboolean forward; gboolean final; gboolean cancel; }; union ActionData { struct AnyAction any; struct DirectionalAction diraction; struct Execute execute; struct ClientAction client; struct MoveResizeRelative relative; struct SendToDesktop sendto; struct SendToNextPreviousDesktop sendtonextprev; struct Desktop desktop; struct NextPreviousDesktop nextprevdesktop; struct MoveResize moveresize; struct ShowMenu showmenu; struct CycleWindows cycle; struct Layer layer; }; typedef struct { /* The func member acts like an enum to tell which one of the structs in the data union are valid. */ void (*func)(union ActionData *data); union ActionData data; } Action; Action *action_new(void (*func)(union ActionData *data)); /* Creates a new Action from the name of the action A few action types need data set after making this call still. Check if the returned action's "func" is one of these. action_execute - the path needs to be set action_restart - the path can optionally be set action_desktop - the destination desktop needs to be set action_move_relative_horz - the delta action_move_relative_vert - the delta action_resize_relative_horz - the delta action_resize_relative_vert - the delta */ Action *action_from_string(char *name); void action_free(Action *a); /* Execute */ void action_execute(union ActionData *data); /* ClientAction */ void action_focus(union ActionData *data); /* ClientAction */ void action_unfocus(union ActionData *data); /* ClientAction */ void action_iconify(union ActionData *data); /* ClientAction */ void action_raise(union ActionData *data); /* ClientAction */ void action_lower(union ActionData *data); /* ClientAction */ void action_focusraise(union ActionData *data); /* ClientAction */ void action_close(union ActionData *data); /* ClientAction */ void action_kill(union ActionData *data); /* ClientAction */ void action_shade(union ActionData *data); /* ClientAction */ void action_shadelower(union ActionData *data); /* ClientAction */ void action_unshaderaise(union ActionData *data); /* ClientAction */ void action_unshade(union ActionData *data); /* ClientAction */ void action_toggle_shade(union ActionData *data); /* ClientAction */ void action_toggle_omnipresent(union ActionData *data); /* MoveResizeRelative */ void action_move_relative_horz(union ActionData *data); /* MoveResizeRelative */ void action_move_relative_vert(union ActionData *data); /* MoveResizeRelative */ void action_resize_relative_horz(union ActionData *data); /* MoveResizeRelative */ void action_resize_relative_vert(union ActionData *data); /* ClientAction */ void action_maximize_full(union ActionData *data); /* ClientAction */ void action_unmaximize_full(union ActionData *data); /* ClientAction */ void action_toggle_maximize_full(union ActionData *data); /* ClientAction */ void action_maximize_horz(union ActionData *data); /* ClientAction */ void action_unmaximize_horz(union ActionData *data); /* ClientAction */ void action_toggle_maximize_horz(union ActionData *data); /* ClientAction */ void action_maximize_vert(union ActionData *data); /* ClientAction */ void action_unmaximize_vert(union ActionData *data); /* ClientAction */ void action_toggle_maximize_vert(union ActionData *data); /* SendToDesktop */ void action_send_to_desktop(union ActionData *data); /* SendToNextPreviousDesktop */ void action_send_to_next_desktop(union ActionData *data); /* SendToNextPreviousDesktop */ void action_send_to_previous_desktop(union ActionData *data); /* Desktop */ void action_desktop(union ActionData *data); /* NextPreviousDesktop */ void action_next_desktop(union ActionData *data); /* NextPreviousDesktop */ void action_previous_desktop(union ActionData *data); /* NextPreviousDesktop */ void action_next_desktop_column(union ActionData *data); /* NextPreviousDesktop */ void action_previous_desktop_column(union ActionData *data); /* NextPreviousDesktop */ void action_next_desktop_row(union ActionData *data); /* NextPreviousDesktop */ void action_previous_desktop_row(union ActionData *data); /* ClientAction */ void action_toggle_decorations(union ActionData *data); /* MoveResize */ void action_moveresize(union ActionData *data); /* Execute */ void action_restart(union ActionData *data); /* Any */ void action_exit(union ActionData *data); /* ShowMenu */ void action_showmenu(union ActionData *data); /* CycleWindows */ void action_cycle_windows(union ActionData *data); /* DirectionalAction */ void action_directional_focus(union ActionData *data); /* DirectionalAction */ void action_movetoedge(union ActionData *data); /* Layer */ void action_send_to_layer(union ActionData *data); /* Layer */ void action_toggle_layer(union ActionData *data); #endif |