diff options
Diffstat (limited to 'Panel.h')
-rw-r--r-- | Panel.h | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -13,16 +13,24 @@ in the source distribution for its full text. #include "Object.h" #include "Vector.h" +#include "FunctionBar.h" typedef struct Panel_ Panel; typedef enum HandlerResult_ { - HANDLED, - IGNORED, - BREAK_LOOP + HANDLED = 0x01, + IGNORED = 0x02, + BREAK_LOOP = 0x04, + REDRAW = 0x08, + RESCAN = 0x10, + SYNTH_KEY = 0x20, } HandlerResult; -#define EVENT_SETSELECTED -1 +#define EVENT_SET_SELECTED -1 + +#define EVENT_HEADER_CLICK(x_) (-10000 + x_) +#define EVENT_IS_HEADER_CLICK(ev_) (ev_ >= -10000 && ev_ <= -9000) +#define EVENT_HEADER_CLICK_GET_X(ev_) (ev_ + 10000) typedef HandlerResult(*Panel_EventHandler)(Panel*, int); @@ -42,13 +50,17 @@ struct Panel_ { Vector* items; int selected; int oldSelected; - char* eventHandlerBuffer; + void* eventHandlerState; int scrollV; short scrollH; bool needsRedraw; + FunctionBar* currentBar; + FunctionBar* defaultBar; RichString header; }; +#define Panel_setDefaultBar(this_) do{ (this_)->currentBar = (this_)->defaultBar; }while(0) + #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) @@ -64,11 +76,11 @@ struct Panel_ { extern PanelClass Panel_class; -Panel* Panel_new(int x, int y, int w, int h, bool owner, ObjectClass* type); +Panel* Panel_new(int x, int y, int w, int h, bool owner, ObjectClass* type, FunctionBar* fuBar); void Panel_delete(Object* cast); -void Panel_init(Panel* this, int x, int y, int w, int h, ObjectClass* type, bool owner); +void Panel_init(Panel* this, int x, int y, int w, int h, ObjectClass* type, bool owner, FunctionBar* fuBar); void Panel_done(Panel* this); |