diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-08-18 19:20:35 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-08-18 19:20:35 +0400 |
commit | 22b30da565de53a0a1d34079d72b08fdb54ec8e3 (patch) | |
tree | 3961db6cd06907f41ca64a8ddff92baa36d318aa /source/blender/windowmanager | |
parent | 44e4c5f8316b34835c7900dc649bf8a1570afc0a (diff) | |
parent | e982e9b04f13be046d194643ed28aaedd6181f3b (diff) |
Merged changes in the trunk up to revision 49986.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/SConscript | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 87 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_types.h | 48 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_apple.c | 4 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_cursors.c | 6 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 6 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 14 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_init_exit.c | 26 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_jobs.c | 351 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 42 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_subwindow.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 6 | ||||
-rw-r--r-- | source/blender/windowmanager/wm_event_types.h | 18 |
14 files changed, 334 insertions, 279 deletions
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index c7546196af8..dae0e9193c2 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -37,6 +37,7 @@ set(INC ../makesdna ../makesrna ../nodes + ../compositor ../render/extern/include ../../gameengine/BlenderRoutines ../../../intern/elbeem/extern diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript index 5819ae2545a..de340ec4c9a 100644 --- a/source/blender/windowmanager/SConscript +++ b/source/blender/windowmanager/SConscript @@ -10,7 +10,7 @@ sources = env.Glob('intern/*.c') incs = '. ../editors/include ../python ../makesdna ../blenlib ../blenkernel' incs += ' ../nodes ../imbuf ../blenloader ../render/extern/include' incs += ' ../radiosity/extern/include' -incs += ' ../makesrna ../gpu ../blenfont ../bmesh' +incs += ' ../makesrna ../gpu ../blenfont ../bmesh ../compositor' incs += ' ../freestyle' incs += ' #/intern/guardedalloc #/intern/memutil #/intern/ghost' diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index ee7b44fb1e9..588be336afa 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -65,9 +65,9 @@ struct ImBuf; typedef struct wmJob wmJob; /* general API */ -void WM_setprefsize (int stax, int stay, int sizx, int sizy); -void WM_setinitialstate_fullscreen(void); -void WM_setinitialstate_normal(void); +void WM_init_state_size_set (int stax, int stay, int sizx, int sizy); +void WM_init_state_fullscreen_set(void); +void WM_init_state_normal_set(void); void WM_init (struct bContext *C, int argc, const char **argv); void WM_exit_ext (struct bContext *C, const short do_python); @@ -82,7 +82,7 @@ void WM_check (struct bContext *C); struct wmWindow *WM_window_open (struct bContext *C, struct rcti *rect); - /* defines for 'type' WM_window_open_temp */ + /* defines for 'type' WM_window_open_temp */ #define WM_WINDOW_RENDER 0 #define WM_WINDOW_USERPREFS 1 #define WM_WINDOW_FILESEL 2 @@ -92,21 +92,21 @@ void WM_window_open_temp (struct bContext *C, struct rcti *position, int type); /* files */ -int WM_read_homefile_exec(struct bContext *C, struct wmOperator *op); -int WM_read_homefile (struct bContext *C, struct ReportList *reports, short from_memory); -int WM_write_homefile (struct bContext *C, struct wmOperator *op); -void WM_read_file (struct bContext *C, const char *filepath, struct ReportList *reports); -int WM_write_file (struct bContext *C, const char *target, int fileflags, struct ReportList *reports, int copy); -void WM_autosave_init (struct wmWindowManager *wm); +int WM_homefile_read_exec(struct bContext *C, struct wmOperator *op); +int WM_homefile_read(struct bContext *C, struct ReportList *reports, short from_memory); +int WM_homefile_write_exec(struct bContext *C, struct wmOperator *op); +void WM_file_read(struct bContext *C, const char *filepath, struct ReportList *reports); +int WM_file_write(struct bContext *C, const char *target, int fileflags, struct ReportList *reports, int copy); +void WM_autosave_init(struct wmWindowManager *wm); /* mouse cursors */ void WM_cursor_set (struct wmWindow *win, int curs); void WM_cursor_modal (struct wmWindow *win, int curs); void WM_cursor_restore (struct wmWindow *win); void WM_cursor_wait (int val); -void WM_cursor_grab(struct wmWindow *win, int wrap, int hide, int *bounds); -void WM_cursor_ungrab(struct wmWindow *win); -void WM_timecursor (struct wmWindow *win, int nr); +void WM_cursor_grab_enable(struct wmWindow *win, int wrap, int hide, int *bounds); +void WM_cursor_grab_disable(struct wmWindow *win); +void WM_cursor_time (struct wmWindow *win, int nr); void *WM_paint_cursor_activate(struct wmWindowManager *wm, int (*poll)(struct bContext *C), @@ -182,7 +182,7 @@ void WM_operator_free (struct wmOperator *op); void WM_operator_stack_clear(struct wmWindowManager *wm); struct wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet); -struct GHashIterator *WM_operatortype_iter(void); +struct GHashIterator *WM_operatortype_iter(void); void WM_operatortype_append (void (*opfunc)(struct wmOperatorType*)); void WM_operatortype_append_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); void WM_operatortype_append_macro_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata); @@ -243,11 +243,11 @@ void WM_operator_bl_idname(char *to, const char *from); void WM_operator_py_idname(char *to, const char *from); /* *************** menu types ******************** */ -void WM_menutype_init(void); -struct MenuType *WM_menutype_find(const char *idname, int quiet); -int WM_menutype_add(struct MenuType* mt); -void WM_menutype_freelink(struct MenuType* mt); -void WM_menutype_free(void); +void WM_menutype_init(void); +struct MenuType *WM_menutype_find(const char *idname, int quiet); +int WM_menutype_add(struct MenuType* mt); +void WM_menutype_freelink(struct MenuType* mt); +void WM_menutype_free(void); /* default operator callbacks for border/circle/lasso */ int WM_border_select_invoke (struct bContext *C, struct wmOperator *op, struct wmEvent *event); @@ -297,24 +297,45 @@ void wmOrtho (float x1, float x2, float y1, float y2, float n, float f); void wmOrtho2 (float x1, float x2, float y1, float y2); /* utilities */ -void WM_set_framebuffer_index_color(int index); +void WM_framebuffer_index_set(int index); int WM_framebuffer_to_index(unsigned int col); /* threaded Jobs Manager */ -#define WM_JOB_PRIORITY 1 -#define WM_JOB_EXCL_RENDER 2 -#define WM_JOB_PROGRESS 4 -#define WM_JOB_SUSPEND 8 - -struct wmJob *WM_jobs_get(struct wmWindowManager *wm, struct wmWindow *win, void *owner, const char *name, int flag); - -int WM_jobs_test(struct wmWindowManager *wm, void *owner); +enum { + WM_JOB_PRIORITY = (1 << 0), + WM_JOB_EXCL_RENDER = (1 << 1), + WM_JOB_PROGRESS = (1 << 2), + WM_JOB_SUSPEND = (1 << 3) +}; + +/* identifying jobs by owner alone is unreliable, this isnt saved, order can change */ +enum { + WM_JOB_TYPE_ANY = -1, + WM_JOB_TYPE_COMPOSITE, + WM_JOB_TYPE_RENDER, + WM_JOB_TYPE_RENDER_PREVIEW, /* UI preview */ + WM_JOB_TYPE_SCREENCAST, + WM_JOB_TYPE_OBJECT_SIM_OCEAN, + WM_JOB_TYPE_OBJECT_SIM_FLUID, + WM_JOB_TYPE_OBJECT_BAKE_TEXTURE, + WM_JOB_TYPE_FILESEL_THUMBNAIL, + WM_JOB_TYPE_CLIP_BUILD_PROXY, + WM_JOB_TYPE_CLIP_TRACK_MARKERS, + WM_JOB_TYPE_CLIP_SOLVE_CAMERA, + WM_JOB_TYPE_SEQ_BUILD_PROXY, + /* add as needed, screencast, seq proxy build + * if having hard coded values is a problem */ +}; + +struct wmJob *WM_jobs_get(struct wmWindowManager *wm, struct wmWindow *win, void *owner, const char *name, int flag, int job_type); + +int WM_jobs_test(struct wmWindowManager *wm, void *owner, int job_type); float WM_jobs_progress(struct wmWindowManager *wm, void *owner); -char *WM_jobs_name(struct wmWindowManager *wm, void *owner); +char *WM_jobs_name(struct wmWindowManager *wm, void *owner); int WM_jobs_is_running(struct wmJob *); -void * WM_jobs_get_customdata(struct wmJob *); -void WM_jobs_customdata(struct wmJob *, void *customdata, void (*free)(void *)); +void *WM_jobs_customdata_get(struct wmJob *); +void WM_jobs_customdata_set(struct wmJob *, void *customdata, void (*free)(void *)); void WM_jobs_timer(struct wmJob *, double timestep, unsigned int note, unsigned int endnote); void WM_jobs_callbacks(struct wmJob *, void (*startjob)(void *, short *, short *, float *), @@ -330,8 +351,8 @@ void WM_jobs_stop_all(struct wmWindowManager *wm); int WM_jobs_has_running(struct wmWindowManager *wm); /* clipboard */ -char *WM_clipboard_text_get(int selection); -void WM_clipboard_text_set(char *buf, int selection); +char *WM_clipboard_text_get(int selection); +void WM_clipboard_text_set(char *buf, int selection); /* progress */ void WM_progress_set(struct wmWindow *win, float progress); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index bcba7a76ec8..1f0a0d87cf4 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -28,10 +28,14 @@ * \ingroup wm */ -/* +#ifndef __WM_TYPES_H__ +#define __WM_TYPES_H__ + +/** * Overview of WM structs * ====================== * + * <pre> * > wmWindowManager (window manager stores a list of windows) * > > wmWindow (window has an active screen) * > > > bScreen (link to ScrAreas via 'areabase') @@ -39,11 +43,12 @@ * > > > > > SpaceLink (base struct for space data for all different space types) * > > > > ScrArea (stores multiple regions via 'regionbase') * > > > > > ARegion - * + * </pre> * * Window Layout * ============= * + * <pre> * wmWindow -> bScreen * +----------------------------------------------------------+ * |+-----------------------------------------+-------------+ | @@ -63,11 +68,12 @@ * ||+-------++----------+-------------------+| | | * |+-----------------------------------------+-------------+ | * +----------------------------------------------------------+ - * + * </pre> * * Space Data * ========== * + * <pre> * ScrArea's store a list of space data (SpaceLinks), each of unique type. * The first one is the displayed in the UI, others are added as needed. * @@ -85,19 +91,17 @@ * +-----------------------------+ | * | | * +------------------------------+ + * </pre> * * A common way to get the space from the ScrArea: - * + * <pre> * if (sa->spacetype == SPACE_VIEW3D) { * View3D *v3d = sa->spacedata.first; * ... * } - * + * </pre> */ -#ifndef __WM_TYPES_H__ -#define __WM_TYPES_H__ - #ifdef __cplusplus extern "C" { #endif @@ -455,28 +459,28 @@ typedef struct wmTabletData { typedef enum { /* motion progress, for modal handlers */ P_NOT_STARTED, - P_STARTING, // <-- - P_IN_PROGRESS, // <-- only these are sent for NDOF motion - P_FINISHING, // <-- + P_STARTING, /* <-- */ + P_IN_PROGRESS, /* <-- only these are sent for NDOF motion*/ + P_FINISHING, /* <-- */ P_FINISHED - } wmProgress; +} wmProgress; typedef struct wmNDOFMotionData { /* awfully similar to GHOST_TEventNDOFMotionData... */ - // Each component normally ranges from -1 to +1, but can exceed that. - // These use blender standard view coordinates, with positive rotations being CCW about the axis. + /* Each component normally ranges from -1 to +1, but can exceed that. + * These use blender standard view coordinates, with positive rotations being CCW about the axis. */ union { - float tvec[3]; // translation + float tvec[3]; /* translation */ struct { float tx, ty, tz; }; - }; + }; union { - float rvec[3]; // rotation: + float rvec[3]; /* rotation: */ struct { float rx, ry, rz; }; - }; - // axis = (rx,ry,rz).normalized - // amount = (rx,ry,rz).magnitude [in revolutions, 1.0 = 360 deg] - float dt; // time since previous NDOF Motion event - wmProgress progress; // is this the first event, the last, or one of many in between? + }; + /* axis = (rx,ry,rz).normalized */ + /* amount = (rx,ry,rz).magnitude [in revolutions, 1.0 = 360 deg] */ + float dt; /* time since previous NDOF Motion event */ + wmProgress progress; /* is this the first event, the last, or one of many in between? */ } wmNDOFMotionData; typedef struct wmTimer { diff --git a/source/blender/windowmanager/intern/wm_apple.c b/source/blender/windowmanager/intern/wm_apple.c index 71d074e340f..a7bd43986dd 100644 --- a/source/blender/windowmanager/intern/wm_apple.c +++ b/source/blender/windowmanager/intern/wm_apple.c @@ -124,14 +124,14 @@ void wm_set_apple_prefsize(int scr_x, int scr_y) short top, left, bottom, right; getMacAvailableBounds(&top, &left, &bottom, &right); - WM_setprefsize(left + 10, scr_y - bottom + 10, right - left - 20, bottom - 64); + WM_init_state_size_set(left + 10, scr_y - bottom + 10, right - left - 20, bottom - 64); G.windowstate = 0; } else { /* 40 + 684 + (headers) 22 + 22 = 768, the powerbook screen height */ - WM_setprefsize(120, 40, 850, 684); + WM_init_state_size_set(120, 40, 850, 684); G.windowstate = 0; } } diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index bb985802e23..6fc6a57ade1 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -179,7 +179,7 @@ void WM_cursor_wait(int val) } } -void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) +void WM_cursor_grab_enable(wmWindow *win, int wrap, int hide, int *bounds) { /* Only grab cursor when not running debug. * It helps not to get a stuck WM when hitting a breakpoint @@ -202,7 +202,7 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) } } -void WM_cursor_ungrab(wmWindow *win) +void WM_cursor_grab_disable(wmWindow *win) { if ((G.debug & G_DEBUG) == 0) { if (win && win->ghostwin) { @@ -239,7 +239,7 @@ int wm_cursor_arrow_move(wmWindow *win, wmEvent *event) /* afer this you can call restore too */ -void WM_timecursor(wmWindow *win, int nr) +void WM_cursor_time(wmWindow *win, int nr) { /* 10 8x8 digits */ static char number_bitmaps[10][8] = { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index e3ad425d0f8..10a383df5c9 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -938,7 +938,7 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, } } - WM_cursor_grab(CTX_wm_window(C), wrap, FALSE, bounds); + WM_cursor_grab_enable(CTX_wm_window(C), wrap, FALSE, bounds); } /* cancel UI handlers, typically tooltips that can hang around @@ -1202,7 +1202,7 @@ void WM_event_remove_handlers(bContext *C, ListBase *handlers) CTX_wm_region_set(C, region); } - WM_cursor_ungrab(CTX_wm_window(C)); + WM_cursor_grab_disable(CTX_wm_window(C)); WM_operator_free(handler->op); } else if (handler->ui_remove) { @@ -1432,7 +1432,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand /* remove modal handler, operator itself should have been canceled and freed */ if (retval & (OPERATOR_CANCELLED | OPERATOR_FINISHED)) { - WM_cursor_ungrab(CTX_wm_window(C)); + WM_cursor_grab_disable(CTX_wm_window(C)); BLI_remlink(handlers, handler); wm_event_free_handler(handler); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 36e2cbae296..979fb9425fc 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -358,7 +358,7 @@ static int wm_read_exotic(Scene *UNUSED(scene), const char *name) return retval; } -void WM_read_file(bContext *C, const char *filepath, ReportList *reports) +void WM_file_read(bContext *C, const char *filepath, ReportList *reports) { int retval; @@ -488,7 +488,7 @@ void WM_read_file(bContext *C, const char *filepath, ReportList *reports) /* called on startup, (context entirely filled with NULLs) */ /* or called for 'New File' */ /* op can be NULL */ -int WM_read_homefile(bContext *C, ReportList *UNUSED(reports), short from_memory) +int WM_homefile_read(bContext *C, ReportList *UNUSED(reports), short from_memory) { ListBase wmbase; char tstr[FILE_MAX]; @@ -583,10 +583,10 @@ int WM_read_homefile(bContext *C, ReportList *UNUSED(reports), short from_memory return TRUE; } -int WM_read_homefile_exec(bContext *C, wmOperator *op) +int WM_homefile_read_exec(bContext *C, wmOperator *op) { int from_memory = strcmp(op->type->idname, "WM_OT_read_factory_settings") == 0; - return WM_read_homefile(C, op->reports, from_memory) ? OPERATOR_FINISHED : OPERATOR_CANCELLED; + return WM_homefile_read(C, op->reports, from_memory) ? OPERATOR_FINISHED : OPERATOR_CANCELLED; } void WM_read_history(void) @@ -761,7 +761,7 @@ int write_crash_blend(void) } } -int WM_write_file(bContext *C, const char *target, int fileflags, ReportList *reports, int copy) +int WM_file_write(bContext *C, const char *target, int fileflags, ReportList *reports, int copy) { Library *li; int len; @@ -860,7 +860,7 @@ int WM_write_file(bContext *C, const char *target, int fileflags, ReportList *re } /* operator entry */ -int WM_write_homefile(bContext *C, wmOperator *op) +int WM_homefile_write_exec(bContext *C, wmOperator *op) { wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); @@ -998,6 +998,6 @@ void wm_autosave_read(bContext *C, ReportList *reports) char filename[FILE_MAX]; wm_autosave_location(filename); - WM_read_file(C, filename, reports); + WM_file_read(C, filename, reports); } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 8ea644d6e5c..af24ea81fe6 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -113,6 +113,7 @@ #include "BKE_depsgraph.h" #include "BKE_sound.h" +#include "COM_compositor.h" static void wm_init_reports(bContext *C) { @@ -152,7 +153,7 @@ void WM_init(bContext *C, int argc, const char **argv) BLI_init_srgb_conversion(); /* get the default database, plus a wm */ - WM_read_homefile(C, NULL, G.factory_startup); + WM_homefile_read(C, NULL, G.factory_startup); BLF_lang_set(NULL); @@ -161,7 +162,7 @@ void WM_init(bContext *C, int argc, const char **argv) * initializing space types and other internal data. * * However cant redo this at the moment. Solution is to load python - * before WM_read_homefile() or make py-drivers check if python is running. + * before WM_homefile_read() or make py-drivers check if python is running. * Will try fix when the crash can be repeated. - campbell. */ #ifdef WITH_PYTHON @@ -211,7 +212,6 @@ void WM_init(bContext *C, int argc, const char **argv) #ifdef WITH_COMPOSITOR if (1) { extern void *COM_linker_hack; - extern void *COM_execute; COM_linker_hack = COM_execute; } #endif @@ -367,19 +367,19 @@ static void wait_for_console_key(void) /* note, doesnt run exit() call WM_exit() for that */ void WM_exit_ext(bContext *C, const short do_python) { - wmWindow *win; + wmWindowManager *wm = C ? CTX_wm_manager(C) : NULL; sound_exit(); - /* first wrap up running stuff, we assume only the active WM is running */ /* modal handlers are on window level freed, others too? */ /* note; same code copied in wm_files.c */ - if (C && CTX_wm_manager(C)) { - - WM_jobs_stop_all(CTX_wm_manager(C)); - - for (win = CTX_wm_manager(C)->windows.first; win; win = win->next) { + if (C && wm) { + wmWindow *win; + + WM_jobs_stop_all(wm); + + for (win = wm->windows.first; win; win = win->next) { CTX_wm_window_set(C, win); /* needed by operator close callbacks */ WM_event_remove_handlers(C, &win->handlers); @@ -408,12 +408,16 @@ void WM_exit_ext(bContext *C, const short do_python) ED_preview_free_dbase(); /* frees a Main dbase, before free_blender! */ - if (C && CTX_wm_manager(C)) + if (C && wm) wm_free_reports(C); /* before free_blender! - since the ListBases get freed there */ BKE_sequencer_free_clipboard(); /* sequencer.c */ BKE_tracking_clipboard_free(); +#ifdef WITH_COMPOSITOR + COM_deinitialize(); +#endif + free_blender(); /* blender.c, does entire library and spacetypes */ // free_matcopybuf(); free_anim_copybuf(); diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index bd7b4694471..e3d6b0f73e1 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -114,7 +114,7 @@ struct wmJob { /* internal */ void *owner; int flag; - short suspended, running, ready, do_update, stop; + short suspended, running, ready, do_update, stop, job_type; float progress; /* for display in header, identification */ @@ -136,13 +136,13 @@ struct wmJob { */ static wmJob *wm_job_find(wmWindowManager *wm, void *owner, const char *name) { - wmJob *steve, *found = NULL; + wmJob *wm_job, *found = NULL; - for (steve = wm->jobs.first; steve; steve = steve->next) - if (steve->owner == owner) { - found = steve; - if (name && strcmp(steve->name, name) == 0) - return steve; + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) + if (wm_job->owner == owner) { + found = wm_job; + if (name && strcmp(wm_job->name, name) == 0) + return wm_job; } return found; @@ -153,112 +153,118 @@ static wmJob *wm_job_find(wmWindowManager *wm, void *owner, const char *name) /* returns current or adds new job, but doesnt run it */ /* every owner only gets a single job, adding a new one will stop running stop and * when stopped it starts the new one */ -wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag) +wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type) { - wmJob *steve = wm_job_find(wm, owner, name); + wmJob *wm_job = wm_job_find(wm, owner, name); - if (steve == NULL) { - steve = MEM_callocN(sizeof(wmJob), "new job"); + if (wm_job == NULL) { + wm_job = MEM_callocN(sizeof(wmJob), "new job"); - BLI_addtail(&wm->jobs, steve); - steve->win = win; - steve->owner = owner; - steve->flag = flag; - BLI_strncpy(steve->name, name, sizeof(steve->name)); + BLI_addtail(&wm->jobs, wm_job); + wm_job->win = win; + wm_job->owner = owner; + wm_job->flag = flag; + wm_job->job_type = job_type; + BLI_strncpy(wm_job->name, name, sizeof(wm_job->name)); } - return steve; + return wm_job; } /* returns true if job runs, for UI (progress) indicators */ -int WM_jobs_test(wmWindowManager *wm, void *owner) +int WM_jobs_test(wmWindowManager *wm, void *owner, int job_type) { - wmJob *steve; + wmJob *wm_job; /* job can be running or about to run (suspended) */ - for (steve = wm->jobs.first; steve; steve = steve->next) - if (steve->owner == owner) - if (steve->running || steve->suspended) - return 1; + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) { + if (wm_job->owner == owner) { + if (job_type == WM_JOB_TYPE_ANY || (wm_job->job_type == job_type)) { + if (wm_job->running || wm_job->suspended) { + return TRUE; + } + } + } + } - return 0; + return FALSE; } float WM_jobs_progress(wmWindowManager *wm, void *owner) { - wmJob *steve = wm_job_find(wm, owner, NULL); + wmJob *wm_job = wm_job_find(wm, owner, NULL); - if (steve && steve->flag & WM_JOB_PROGRESS) - return steve->progress; + if (wm_job && wm_job->flag & WM_JOB_PROGRESS) + return wm_job->progress; return 0.0; } char *WM_jobs_name(wmWindowManager *wm, void *owner) { - wmJob *steve = wm_job_find(wm, owner, NULL); + wmJob *wm_job = wm_job_find(wm, owner, NULL); - if (steve) - return steve->name; + if (wm_job) + return wm_job->name; return NULL; } -int WM_jobs_is_running(wmJob *steve) +int WM_jobs_is_running(wmJob *wm_job) { - return steve->running; + return wm_job->running; } -void *WM_jobs_get_customdata(wmJob *steve) +void *WM_jobs_customdata_get(wmJob *wm_job) { - if (!steve->customdata) { - return steve->run_customdata; + if (!wm_job->customdata) { + return wm_job->run_customdata; } else { - return steve->customdata; + return wm_job->customdata; } } -void WM_jobs_customdata(wmJob *steve, void *customdata, void (*free)(void *)) +void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void (*free)(void *)) { /* pending job? just free */ - if (steve->customdata) - steve->free(steve->customdata); + if (wm_job->customdata) + wm_job->free(wm_job->customdata); - steve->customdata = customdata; - steve->free = free; + wm_job->customdata = customdata; + wm_job->free = free; - if (steve->running) { + if (wm_job->running) { /* signal job to end */ - steve->stop = 1; + wm_job->stop = TRUE; } } -void WM_jobs_timer(wmJob *steve, double timestep, unsigned int note, unsigned int endnote) +void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote) { - steve->timestep = timestep; - steve->note = note; - steve->endnote = endnote; + wm_job->timestep = timestep; + wm_job->note = note; + wm_job->endnote = endnote; } -void WM_jobs_callbacks(wmJob *steve, +void WM_jobs_callbacks(wmJob *wm_job, void (*startjob)(void *, short *, short *, float *), void (*initjob)(void *), void (*update)(void *), void (*endjob)(void *)) { - steve->startjob = startjob; - steve->initjob = initjob; - steve->update = update; - steve->endjob = endjob; + wm_job->startjob = startjob; + wm_job->initjob = initjob; + wm_job->update = update; + wm_job->endjob = endjob; } static void *do_job_thread(void *job_v) { - wmJob *steve = job_v; + wmJob *wm_job = job_v; - steve->startjob(steve->run_customdata, &steve->stop, &steve->do_update, &steve->progress); - steve->ready = 1; + wm_job->startjob(wm_job->run_customdata, &wm_job->stop, &wm_job->do_update, &wm_job->progress); + wm_job->ready = TRUE; return NULL; } @@ -266,36 +272,38 @@ static void *do_job_thread(void *job_v) /* don't allow same startjob to be executed twice */ static void wm_jobs_test_suspend_stop(wmWindowManager *wm, wmJob *test) { - wmJob *steve; - int suspend = 0; + wmJob *wm_job; + int suspend = FALSE; /* job added with suspend flag, we wait 1 timer step before activating it */ if (test->flag & WM_JOB_SUSPEND) { - suspend = 1; + suspend = TRUE; test->flag &= ~WM_JOB_SUSPEND; } else { /* check other jobs */ - for (steve = wm->jobs.first; steve; steve = steve->next) { + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) { /* obvious case, no test needed */ - if (steve == test || !steve->running) continue; + if (wm_job == test || !wm_job->running) { + continue; + } /* if new job is not render, then check for same startjob */ if (0 == (test->flag & WM_JOB_EXCL_RENDER)) - if (steve->startjob != test->startjob) + if (wm_job->startjob != test->startjob) continue; /* if new job is render, any render job should be stopped */ if (test->flag & WM_JOB_EXCL_RENDER) - if (0 == (steve->flag & WM_JOB_EXCL_RENDER)) + if (0 == (wm_job->flag & WM_JOB_EXCL_RENDER)) continue; - suspend = 1; + suspend = TRUE; /* if this job has higher priority, stop others */ if (test->flag & WM_JOB_PRIORITY) { - steve->stop = 1; - // printf("job stopped: %s\n", steve->name); + wm_job->stop = TRUE; + // printf("job stopped: %s\n", wm_job->name); } } } @@ -307,110 +315,113 @@ static void wm_jobs_test_suspend_stop(wmWindowManager *wm, wmJob *test) /* if job running, the same owner gave it a new job */ /* if different owner starts existing startjob, it suspends itself */ -void WM_jobs_start(wmWindowManager *wm, wmJob *steve) +void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job) { - if (steve->running) { + if (wm_job->running) { /* signal job to end and restart */ - steve->stop = 1; - // printf("job started a running job, ending... %s\n", steve->name); + wm_job->stop = TRUE; + // printf("job started a running job, ending... %s\n", wm_job->name); } else { - if (steve->customdata && steve->startjob) { + if (wm_job->customdata && wm_job->startjob) { - wm_jobs_test_suspend_stop(wm, steve); + wm_jobs_test_suspend_stop(wm, wm_job); - if (steve->suspended == 0) { + if (wm_job->suspended == FALSE) { /* copy to ensure proper free in end */ - steve->run_customdata = steve->customdata; - steve->run_free = steve->free; - steve->free = NULL; - steve->customdata = NULL; - steve->running = 1; + wm_job->run_customdata = wm_job->customdata; + wm_job->run_free = wm_job->free; + wm_job->free = NULL; + wm_job->customdata = NULL; + wm_job->running = TRUE; - if (steve->initjob) - steve->initjob(steve->run_customdata); + if (wm_job->initjob) + wm_job->initjob(wm_job->run_customdata); - steve->stop = 0; - steve->ready = 0; - steve->progress = 0.0; + wm_job->stop = FALSE; + wm_job->ready = FALSE; + wm_job->progress = 0.0; - // printf("job started: %s\n", steve->name); + // printf("job started: %s\n", wm_job->name); - BLI_init_threads(&steve->threads, do_job_thread, 1); - BLI_insert_thread(&steve->threads, steve); + BLI_init_threads(&wm_job->threads, do_job_thread, 1); + BLI_insert_thread(&wm_job->threads, wm_job); } /* restarted job has timer already */ - if (steve->wt == NULL) - steve->wt = WM_event_add_timer(wm, steve->win, TIMERJOBS, steve->timestep); + if (wm_job->wt == NULL) + wm_job->wt = WM_event_add_timer(wm, wm_job->win, TIMERJOBS, wm_job->timestep); if (G.debug & G_DEBUG_JOBS) - steve->start_time = PIL_check_seconds_timer(); + wm_job->start_time = PIL_check_seconds_timer(); } else printf("job fails, not initialized\n"); } } /* stop job, free data completely */ -static void wm_jobs_kill_job(wmWindowManager *wm, wmJob *steve) +static void wm_jobs_kill_job(wmWindowManager *wm, wmJob *wm_job) { - if (steve->running) { + if (wm_job->running) { /* signal job to end */ - steve->stop = 1; - BLI_end_threads(&steve->threads); + wm_job->stop = TRUE; + BLI_end_threads(&wm_job->threads); - if (steve->endjob) - steve->endjob(steve->run_customdata); + if (wm_job->endjob) + wm_job->endjob(wm_job->run_customdata); } - if (steve->wt) - WM_event_remove_timer(wm, steve->win, steve->wt); - if (steve->customdata) - steve->free(steve->customdata); - if (steve->run_customdata) - steve->run_free(steve->run_customdata); + if (wm_job->wt) + WM_event_remove_timer(wm, wm_job->win, wm_job->wt); + if (wm_job->customdata) + wm_job->free(wm_job->customdata); + if (wm_job->run_customdata) + wm_job->run_free(wm_job->run_customdata); - /* remove steve */ - BLI_remlink(&wm->jobs, steve); - MEM_freeN(steve); + /* remove wm_job */ + BLI_remlink(&wm->jobs, wm_job); + MEM_freeN(wm_job); } void WM_jobs_stop_all(wmWindowManager *wm) { - wmJob *steve; + wmJob *wm_job; - while ((steve = wm->jobs.first)) - wm_jobs_kill_job(wm, steve); + while ((wm_job = wm->jobs.first)) + wm_jobs_kill_job(wm, wm_job); } /* signal job(s) from this owner or callback to stop, timer is required to get handled */ void WM_jobs_stop(wmWindowManager *wm, void *owner, void *startjob) { - wmJob *steve; + wmJob *wm_job; - for (steve = wm->jobs.first; steve; steve = steve->next) - if (steve->owner == owner || steve->startjob == startjob) - if (steve->running) - steve->stop = 1; + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) { + if (wm_job->owner == owner || wm_job->startjob == startjob) { + if (wm_job->running) { + wm_job->stop = TRUE; + } + } + } } /* actually terminate thread and job timer */ void WM_jobs_kill(wmWindowManager *wm, void *owner, void (*startjob)(void *, short int *, short int *, float *)) { - wmJob *steve; + wmJob *wm_job; - steve = wm->jobs.first; - while (steve) { - if (steve->owner == owner || steve->startjob == startjob) { - wmJob *bill = steve; - steve = steve->next; + wm_job = wm->jobs.first; + while (wm_job) { + if (wm_job->owner == owner || wm_job->startjob == startjob) { + wmJob *bill = wm_job; + wm_job = wm_job->next; wm_jobs_kill_job(wm, bill); } else { - steve = steve->next; + wm_job = wm_job->next; } } } @@ -419,11 +430,11 @@ void WM_jobs_kill(wmWindowManager *wm, void *owner, void (*startjob)(void *, sho /* kill job entirely, also removes timer itself */ void wm_jobs_timer_ended(wmWindowManager *wm, wmTimer *wt) { - wmJob *steve; + wmJob *wm_job; - for (steve = wm->jobs.first; steve; steve = steve->next) { - if (steve->wt == wt) { - wm_jobs_kill_job(wm, steve); + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) { + if (wm_job->wt == wt) { + wm_jobs_kill_job(wm, wm_job); return; } } @@ -432,85 +443,85 @@ void wm_jobs_timer_ended(wmWindowManager *wm, wmTimer *wt) /* hardcoded to event TIMERJOBS */ void wm_jobs_timer(const bContext *C, wmWindowManager *wm, wmTimer *wt) { - wmJob *steve = wm->jobs.first, *stevenext; + wmJob *wm_job, *wm_jobnext; float total_progress = 0.f; float jobs_progress = 0; - for (; steve; steve = stevenext) { - stevenext = steve->next; + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_jobnext) { + wm_jobnext = wm_job->next; - if (steve->wt == wt) { + if (wm_job->wt == wt) { /* running threads */ - if (steve->threads.first) { + if (wm_job->threads.first) { /* always call note and update when ready */ - if (steve->do_update || steve->ready) { - if (steve->update) - steve->update(steve->run_customdata); - if (steve->note) - WM_event_add_notifier(C, steve->note, NULL); + if (wm_job->do_update || wm_job->ready) { + if (wm_job->update) + wm_job->update(wm_job->run_customdata); + if (wm_job->note) + WM_event_add_notifier(C, wm_job->note, NULL); - if (steve->flag & WM_JOB_PROGRESS) + if (wm_job->flag & WM_JOB_PROGRESS) WM_event_add_notifier(C, NC_WM | ND_JOB, NULL); - steve->do_update = FALSE; + wm_job->do_update = FALSE; } - if (steve->ready) { - if (steve->endjob) - steve->endjob(steve->run_customdata); + if (wm_job->ready) { + if (wm_job->endjob) + wm_job->endjob(wm_job->run_customdata); /* free own data */ - steve->run_free(steve->run_customdata); - steve->run_customdata = NULL; - steve->run_free = NULL; + wm_job->run_free(wm_job->run_customdata); + wm_job->run_customdata = NULL; + wm_job->run_free = NULL; - // if (steve->stop) printf("job ready but stopped %s\n", steve->name); - // else printf("job finished %s\n", steve->name); + // if (wm_job->stop) printf("job ready but stopped %s\n", wm_job->name); + // else printf("job finished %s\n", wm_job->name); if (G.debug & G_DEBUG_JOBS) { - printf("Job '%s' finished in %f seconds\n", steve->name, - PIL_check_seconds_timer() - steve->start_time); + printf("Job '%s' finished in %f seconds\n", wm_job->name, + PIL_check_seconds_timer() - wm_job->start_time); } - steve->running = 0; - BLI_end_threads(&steve->threads); + wm_job->running = FALSE; + BLI_end_threads(&wm_job->threads); - if (steve->endnote) - WM_event_add_notifier(C, steve->endnote, NULL); + if (wm_job->endnote) + WM_event_add_notifier(C, wm_job->endnote, NULL); WM_event_add_notifier(C, NC_WM | ND_JOB, NULL); - /* new job added for steve? */ - if (steve->customdata) { - // printf("job restarted with new data %s\n", steve->name); - WM_jobs_start(wm, steve); + /* new job added for wm_job? */ + if (wm_job->customdata) { + // printf("job restarted with new data %s\n", wm_job->name); + WM_jobs_start(wm, wm_job); } else { - WM_event_remove_timer(wm, steve->win, steve->wt); - steve->wt = NULL; + WM_event_remove_timer(wm, wm_job->win, wm_job->wt); + wm_job->wt = NULL; - /* remove steve */ - BLI_remlink(&wm->jobs, steve); - MEM_freeN(steve); + /* remove wm_job */ + BLI_remlink(&wm->jobs, wm_job); + MEM_freeN(wm_job); } } - else if (steve->flag & WM_JOB_PROGRESS) { + else if (wm_job->flag & WM_JOB_PROGRESS) { /* accumulate global progress for running jobs */ jobs_progress++; - total_progress += steve->progress; + total_progress += wm_job->progress; } } - else if (steve->suspended) { - WM_jobs_start(wm, steve); + else if (wm_job->suspended) { + WM_jobs_start(wm, wm_job); } } - else if (steve->threads.first && !steve->ready) { - if (steve->flag & WM_JOB_PROGRESS) { + else if (wm_job->threads.first && !wm_job->ready) { + if (wm_job->flag & WM_JOB_PROGRESS) { /* accumulate global progress for running jobs */ jobs_progress++; - total_progress += steve->progress; + total_progress += wm_job->progress; } } } @@ -530,11 +541,13 @@ void wm_jobs_timer(const bContext *C, wmWindowManager *wm, wmTimer *wt) int WM_jobs_has_running(wmWindowManager *wm) { - wmJob *steve; + wmJob *wm_job; - for (steve = wm->jobs.first; steve; steve = steve->next) - if (steve->running) - return 1; + for (wm_job = wm->jobs.first; wm_job; wm_job = wm_job->next) { + if (wm_job->running) { + return TRUE; + } + } - return 0; + return FALSE; } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 52436b6564c..67cd202591d 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -326,7 +326,7 @@ static int wm_macro_modal(bContext *C, wmOperator *op, wmEvent *event) } } - WM_cursor_grab(CTX_wm_window(C), wrap, FALSE, bounds); + WM_cursor_grab_enable(CTX_wm_window(C), wrap, FALSE, bounds); } } } @@ -965,7 +965,7 @@ int WM_operator_check_ui_enabled(const bContext *C, const char *idname) wmWindowManager *wm = CTX_wm_manager(C); Scene *scene = CTX_data_scene(C); - return !(ED_undo_valid(C, idname) == 0 || WM_jobs_test(wm, scene)); + return !(ED_undo_valid(C, idname) == 0 || WM_jobs_test(wm, scene, WM_JOB_TYPE_ANY)); } wmOperator *WM_operator_last_redo(const bContext *C) @@ -1575,7 +1575,7 @@ static void WM_OT_save_homefile(wmOperatorType *ot) ot->description = "Make the current file the default .blend file"; ot->invoke = WM_operator_confirm; - ot->exec = WM_write_homefile; + ot->exec = WM_homefile_write_exec; ot->poll = WM_operator_winactive; } @@ -1586,7 +1586,7 @@ static void WM_OT_read_homefile(wmOperatorType *ot) ot->description = "Open the default file (doesn't save the current file)"; ot->invoke = WM_operator_confirm; - ot->exec = WM_read_homefile_exec; + ot->exec = WM_homefile_read_exec; /* ommit poll to run in background mode */ } @@ -1597,7 +1597,7 @@ static void WM_OT_read_factory_settings(wmOperatorType *ot) ot->description = "Load default file and user preferences"; ot->invoke = WM_operator_confirm; - ot->exec = WM_read_homefile_exec; + ot->exec = WM_homefile_read_exec; /* ommit poll to run in background mode */ } @@ -1664,11 +1664,11 @@ static int wm_open_mainfile_exec(bContext *C, wmOperator *op) else G.f &= ~G_SCRIPT_AUTOEXEC; - /* XXX wm in context is not set correctly after WM_read_file -> crash */ + /* XXX wm in context is not set correctly after WM_file_read -> crash */ /* do it before for now, but is this correct with multiple windows? */ WM_event_add_notifier(C, NC_WINDOW, NULL); - WM_read_file(C, path, op->reports); + WM_file_read(C, path, op->reports); return OPERATOR_FINISHED; } @@ -1866,6 +1866,8 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) static void WM_OT_link_append(wmOperatorType *ot) { + PropertyRNA *prop; + ot->name = "Link/Append from Library"; ot->idname = "WM_OT_link_append"; ot->description = "Link or Append from a Library .blend file"; @@ -1881,11 +1883,17 @@ static void WM_OT_link_append(wmOperatorType *ot) WM_FILESEL_FILEPATH | WM_FILESEL_DIRECTORY | WM_FILESEL_FILENAME | WM_FILESEL_RELPATH | WM_FILESEL_FILES, FILE_DEFAULTDISPLAY); - RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending"); - RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects"); - RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); - RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); -} + /* better not save _any_ settings for this operator */ + /* properties */ + prop = RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); +} /* *************** recover last session **************** */ @@ -1895,13 +1903,13 @@ static int wm_recover_last_session_exec(bContext *C, wmOperator *op) G.fileflags |= G_FILE_RECOVER; - /* XXX wm in context is not set correctly after WM_read_file -> crash */ + /* XXX wm in context is not set correctly after WM_file_read -> crash */ /* do it before for now, but is this correct with multiple windows? */ WM_event_add_notifier(C, NC_WINDOW, NULL); /* load file */ BLI_make_file_string("/", filename, BLI_temporary_dir(), "quit.blend"); - WM_read_file(C, filename, op->reports); + WM_file_read(C, filename, op->reports); G.fileflags &= ~G_FILE_RECOVER; return OPERATOR_FINISHED; @@ -1927,12 +1935,12 @@ static int wm_recover_auto_save_exec(bContext *C, wmOperator *op) G.fileflags |= G_FILE_RECOVER; - /* XXX wm in context is not set correctly after WM_read_file -> crash */ + /* XXX wm in context is not set correctly after WM_file_read -> crash */ /* do it before for now, but is this correct with multiple windows? */ WM_event_add_notifier(C, NC_WINDOW, NULL); /* load file */ - WM_read_file(C, path, op->reports); + WM_file_read(C, path, op->reports); G.fileflags &= ~G_FILE_RECOVER; @@ -2047,7 +2055,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) } #endif - if (WM_write_file(C, path, fileflags, op->reports, copy) != 0) + if (WM_file_write(C, path, fileflags, op->reports, copy) != 0) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_WM | ND_FILESAVE, NULL); diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index 529910d220e..c9fb2644cfa 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -376,7 +376,7 @@ unsigned int index_to_framebuffer(int index) #endif -void WM_set_framebuffer_index_color(int index) +void WM_framebuffer_index_set(int index) { const int col = index_to_framebuffer(index); cpack(col); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 28e50f1655e..c2aa99352e9 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -1202,7 +1202,7 @@ void wm_get_cursor_position(wmWindow *win, int *x, int *y) /* called whem no ghost system was initialized */ -void WM_setprefsize(int stax, int stay, int sizx, int sizy) +void WM_init_state_size_set(int stax, int stay, int sizx, int sizy) { wm_init_state.start_x = stax; /* left hand pos */ wm_init_state.start_y = stay; /* bottom pos */ @@ -1212,13 +1212,13 @@ void WM_setprefsize(int stax, int stay, int sizx, int sizy) } /* for borderless and border windows set from command-line */ -void WM_setinitialstate_fullscreen(void) +void WM_init_state_fullscreen_set(void) { wm_init_state.windowstate = GHOST_kWindowStateFullScreen; wm_init_state.override_flag |= WIN_OVERRIDE_WINSTATE; } -void WM_setinitialstate_normal(void) +void WM_init_state_normal_set(void) { wm_init_state.windowstate = GHOST_kWindowStateNormal; wm_init_state.override_flag |= WIN_OVERRIDE_WINSTATE; diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 30f6c564688..95a8a7db635 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -285,25 +285,29 @@ enum { /* for event checks */ /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */ -#define ISTEXTINPUT(event) (event >=' ' && event <=255) +#define ISTEXTINPUT(event) (event >= ' ' && event <= 255) /* test whether the event is a key on the keyboard */ -#define ISKEYBOARD(event) (event >=' ' && event <=320) +#define ISKEYBOARD(event) (event >= ' ' && event <= 320) /* test whether the event is a modifier key */ -#define ISKEYMODIFIER(event) ((event >= LEFTCTRLKEY && event <= LEFTSHIFTKEY) || event == OSKEY) +#define ISKEYMODIFIER(event) ((event >= LEFTCTRLKEY && event <= LEFTSHIFTKEY) || event == OSKEY) /* test whether the event is a mouse button */ -#define ISMOUSE(event) (event >= LEFTMOUSE && event <= MOUSEROTATE) +#define ISMOUSE(event) (event >= LEFTMOUSE && event <= MOUSEROTATE) /* test whether the event is tweak event */ -#define ISTWEAK(event) (event >= EVT_TWEAK_L && event <= EVT_GESTURE) +#define ISTWEAK(event) (event >= EVT_TWEAK_L && event <= EVT_GESTURE) /* test whether the event is a NDOF event */ -#define ISNDOF(event) (event >= NDOF_MOTION && event < NDOF_LAST) +#define ISNDOF(event) (event >= NDOF_MOTION && event < NDOF_LAST) /* test whether event type is acceptable as hotkey, excluding modifiers */ -#define ISHOTKEY(event) ((ISKEYBOARD(event) || ISMOUSE(event) || ISNDOF(event)) && event!=ESCKEY && !(event>=LEFTCTRLKEY && event<=LEFTSHIFTKEY) && !(event>=UNKNOWNKEY && event<=GRLESSKEY)) +#define ISHOTKEY(event) \ + ((ISKEYBOARD(event) || ISMOUSE(event) || ISNDOF(event)) && \ + (event != ESCKEY) && \ + (event >= LEFTCTRLKEY && event <= LEFTSHIFTKEY) == FALSE && \ + (event >= UNKNOWNKEY && event <= GRLESSKEY) == FALSE) /* **************** BLENDER GESTURE EVENTS (0x5000) **************** */ |