From eae2942474fa06b369b3fc6ebdeddad90ca38d43 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 19 Feb 2019 13:57:11 +1100 Subject: WM: move UI handler to it's own type --- source/blender/windowmanager/wm_event_system.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'source/blender/windowmanager/wm_event_system.h') diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h index e585d40ebb9..3e9793521ae 100644 --- a/source/blender/windowmanager/wm_event_system.h +++ b/source/blender/windowmanager/wm_event_system.h @@ -44,6 +44,7 @@ struct wmEventHandler_KeymapFn { enum eWM_EventHandlerType { WM_HANDLER_TYPE_DEFAULT, WM_HANDLER_TYPE_GIZMO, + WM_HANDLER_TYPE_UI, }; typedef struct wmEventHandler { @@ -67,13 +68,6 @@ typedef struct wmEventHandler { struct ARegion *op_region; /* for derived/modal handlers */ short op_region_type; /* for derived/modal handlers */ - /* ui handler */ - wmUIHandlerFunc ui_handle; /* callback receiving events */ - wmUIHandlerRemoveFunc ui_remove; /* callback when handler is removed */ - void *ui_userdata; /* user data pointer */ - struct ScrArea *ui_area; /* for derived/modal handlers */ - struct ARegion *ui_region; /* for derived/modal handlers */ - struct ARegion *ui_menu; /* for derived/modal handlers */ /* drop box handler */ ListBase *dropboxes; @@ -87,6 +81,22 @@ typedef struct wmEventHandler_Gizmo { struct wmGizmoMap *gizmo_map; } wmEventHandler_Gizmo; +/** #WM_HANDLER_TYPE_UI */ +typedef struct wmEventHandler_UI { + wmEventHandler base; + + wmUIHandlerFunc handle_fn; /* callback receiving events */ + wmUIHandlerRemoveFunc remove_fn; /* callback when handler is removed */ + void *user_data; /* user data pointer */ + + /** Store context for this handler for derived/modal handlers. */ + struct { + struct ScrArea *area; + struct ARegion *region; + struct ARegion *menu; + } context; +} wmEventHandler_UI; + /* wm_event_system.c */ void wm_event_free_all (wmWindow *win); void wm_event_free (wmEvent *event); -- cgit v1.2.3