Commit: 8c250c9b7379752046de6cf35c86d9015f4c5f60 Author: Julian Eisel Date: Sat Apr 8 17:23:14 2017 +0200 Branches: workspaces https://developer.blender.org/rB8c250c9b7379752046de6cf35c86d9015f4c5f60
General cleanup of workspace files (naming, function ordering, etc) =================================================================== M source/blender/blenkernel/BKE_workspace.h M source/blender/blenkernel/intern/workspace.c M source/blender/editors/include/ED_screen.h M source/blender/editors/screen/screen_ops.c M source/blender/editors/screen/workspace_edit.c M source/blender/editors/screen/workspace_layout_edit.c M source/blender/makesrna/intern/rna_screen.c M source/blender/windowmanager/intern/wm_event_system.c M source/blender/windowmanager/intern/wm_window.c =================================================================== diff --git a/source/blender/blenkernel/BKE_workspace.h b/source/blender/blenkernel/BKE_workspace.h index c66952096d2..77d4af49257 100644 --- a/source/blender/blenkernel/BKE_workspace.h +++ b/source/blender/blenkernel/BKE_workspace.h @@ -52,16 +52,19 @@ typedef struct WorkSpaceLayout WorkSpaceLayout; /* Create, delete, init */ WorkSpace *BKE_workspace_add(struct Main *bmain, const char *name); -void BKE_workspace_free(WorkSpace *ws); +void BKE_workspace_free(WorkSpace *workspace); void BKE_workspace_remove(WorkSpace *workspace, struct Main *bmain); WorkSpaceInstanceHook *BKE_workspace_instance_hook_create(const struct Main *bmain); void BKE_workspace_instance_hook_free(WorkSpaceInstanceHook *hook, const struct Main *bmain); struct WorkSpaceLayout *BKE_workspace_layout_add( - WorkSpace *workspace, struct bScreen *screen, const char *name) ATTR_NONNULL(); + WorkSpace *workspace, + struct bScreen *screen, + const char *name) ATTR_NONNULL(); void BKE_workspace_layout_remove( - WorkSpace *workspace, WorkSpaceLayout *layout, struct Main *bmain) ATTR_NONNULL(); + WorkSpace *workspace, WorkSpaceLayout *layout, + struct Main *bmain) ATTR_NONNULL(); /* -------------------------------------------------------------------- */ @@ -77,9 +80,7 @@ void BKE_workspaces_transform_orientation_remove( const struct TransformOrientation *orientation) ATTR_NONNULL(); WorkSpaceLayout *BKE_workspace_layout_find( - const WorkSpace *ws, const struct bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -WorkSpaceLayout *BKE_workspace_layout_find_exec( - const WorkSpace *ws, const struct bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; + const WorkSpace *workspace, const struct bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; #define BKE_workspace_layout_iter_begin(_layout, _start_layout) \ for (WorkSpaceLayout *_layout = _start_layout, *_layout##_next; _layout; _layout = _layout##_next) { \ @@ -98,19 +99,18 @@ WorkSpaceLayout *BKE_workspace_layout_iter_circular( /* -------------------------------------------------------------------- */ /* Getters/Setters */ -WorkSpace *BKE_workspace_temp_store_get(WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -void BKE_workspace_temp_store_set(WorkSpaceInstanceHook *hook, WorkSpace *workspace) ATTR_NONNULL(1); WorkSpace *BKE_workspace_active_get(WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; void BKE_workspace_active_set(WorkSpaceInstanceHook *hook, WorkSpace *workspace) ATTR_NONNULL(1); struct ID *BKE_workspace_id_get(WorkSpace *workspace); const char *BKE_workspace_name_get(const WorkSpace *workspace); -WorkSpaceLayout *BKE_workspace_active_layout_get_from_workspace( - const WorkSpaceInstanceHook *hook, const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +WorkSpace *BKE_workspace_next_get(const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +WorkSpace *BKE_workspace_prev_get(const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +WorkSpace *BKE_workspace_temp_store_get(WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +void BKE_workspace_temp_store_set(WorkSpaceInstanceHook *hook, WorkSpace *workspace) ATTR_NONNULL(1); WorkSpaceLayout *BKE_workspace_active_layout_get(const WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -void BKE_workspace_active_layout_set( - WorkSpaceInstanceHook *hook, WorkSpaceLayout *layout) ATTR_NONNULL(1); -void BKE_workspace_active_layout_set_for_workspace( - WorkSpaceInstanceHook *hook, WorkSpace *workspace, WorkSpaceLayout *layout) ATTR_NONNULL(1); +void BKE_workspace_active_layout_set(WorkSpaceInstanceHook *hook, WorkSpaceLayout *layout) ATTR_NONNULL(1); +WorkSpaceLayout *BKE_workspace_temp_layout_store_get(const WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +void BKE_workspace_temp_layout_store_set(WorkSpaceInstanceHook *hook, WorkSpaceLayout *layout) ATTR_NONNULL(1); struct bScreen *BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; void BKE_workspace_active_screen_set( WorkSpaceInstanceHook *hook, struct WorkSpace *workspace, struct bScreen *screen) ATTR_NONNULL(1); @@ -121,11 +121,6 @@ void BKE_workspace_object_mode_set(WorkSpace *workspace, const enum O struct SceneLayer *BKE_workspace_render_layer_get(const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; void BKE_workspace_render_layer_set(WorkSpace *workspace, struct SceneLayer *layer) ATTR_NONNULL(1); struct ListBase *BKE_workspace_layouts_get(WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -WorkSpaceLayout *BKE_workspace_temp_layout_store_get(const WorkSpaceInstanceHook *hook) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -void BKE_workspace_temp_layout_store_set(WorkSpaceInstanceHook *hook, WorkSpaceLayout *layout) ATTR_NONNULL(1); - -WorkSpace *BKE_workspace_next_get(const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -WorkSpace *BKE_workspace_prev_get(const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; const char *BKE_workspace_layout_name_get(const WorkSpaceLayout *layout) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; void BKE_workspace_layout_name_set(WorkSpace *workspace, WorkSpaceLayout *layout, const char *new_name) ATTR_NONNULL(); @@ -134,9 +129,16 @@ void BKE_workspace_layout_screen_set(WorkSpaceLayout *layout, struct WorkSpaceLayout *BKE_workspace_layout_next_get(const WorkSpaceLayout *layout) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; WorkSpaceLayout *BKE_workspace_layout_prev_get(const WorkSpaceLayout *layout) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +WorkSpaceLayout *BKE_workspace_hook_layout_for_workspace_get( + const WorkSpaceInstanceHook *hook, const WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; +void BKE_workspace_hook_layout_for_workspace_set( + WorkSpaceInstanceHook *hook, WorkSpace *workspace, WorkSpaceLayout *layout) ATTR_NONNULL(1); struct ListBase *BKE_workspace_hook_layout_relations_get(WorkSpace *workspace) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; + struct WorkSpaceDataRelation *BKE_workspace_relation_next_get(const struct WorkSpaceDataRelation *relation) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT; -void BKE_workspace_relation_data_get(const struct WorkSpaceDataRelation *relation, void **parent, void **data) ATTR_NONNULL(); +void BKE_workspace_relation_data_get( + const struct WorkSpaceDataRelation *relation, + void **parent, void **data) ATTR_NONNULL(); void BKE_workspace_relation_data_set(struct WorkSpaceDataRelation *relation, void *parent, void *data) ATTR_NONNULL(); /* -------------------------------------------------------------------- */ diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c index feffc672701..3c3e7aefe5d 100644 --- a/source/blender/blenkernel/intern/workspace.c +++ b/source/blender/blenkernel/intern/workspace.c @@ -45,18 +45,43 @@ #include "MEM_guardedalloc.h" -bool workspaces_is_screen_used(const Main *bmain, bScreen *screen); - /* -------------------------------------------------------------------- */ /* Internal utils */ -static void workspace_name_set(WorkSpace *workspace, WorkSpaceLayout *layout, const char *new_name) +/** + * Only to be called by #BKE_libblock_alloc_notest! Always use BKE_workspace_add to add a new workspace. + */ +WorkSpace *workspace_alloc(void) +{ + return MEM_callocN(sizeof(WorkSpace), __func__); +} + +static void workspace_layout_name_set( + WorkSpace *workspace, WorkSpaceLayout *layout, const char *new_name) { BLI_strncpy(layout->name, new_name, sizeof(layout->name)); BLI_uniquename(&workspace->layouts, layout, "Layout", '.', offsetof(WorkSpaceLayout, name), sizeof(layout->name)); } -static void workspace_relation_add(ListBase *relation_list, void *parent, void *data) +/** + * This should only be used directly when it is to be expected that there isn't + * a layout within \a workspace that wraps \a screen. Usually - especially outside + * of BKE_workspace - #BKE_workspace_layout_find should be used! + */ +static WorkSpaceLayout *workspace_layout_find_exec( + const WorkSpace *workspace, const bScreen *screen) +{ + for (WorkSpaceLayout *layout = workspace->layouts.first; layout; layout = layout->next) { + if (layout->screen == screen) { + return layout; + } + } + + return NULL; +} + +static void workspace_relation_add( + ListBase *relation_list, void *parent, void *data) { WorkSpaceDataRelation *relation = MEM_mallocN(sizeof(*relation), __func__); relation->parent = parent; @@ -64,13 +89,15 @@ static void workspace_relation_add(ListBase *relation_list, void *parent, void * /* add to head, if we switch back to it soon we find it faster. */ BLI_addhead(relation_list, relation); } -static void workspace_relation_remove(ListBase *relation_list, WorkSpaceDataRelation *relation) +static void workspace_relation_remove( + ListBase *relation_list, WorkSpaceDataRelation *relation) { BLI_remlink(relation_list, relation); MEM_freeN(relation); } -static void workspace_ensure_updated_relation(ListBase *relation_list, void *parent, void *data) +static void workspace_relation_ensure_updated( + ListBase *relation_list, void *parent, void *data) { for (WorkSpaceDataRelation *relation = relation_list->first; relation; relation = relation->next) { if (relation->parent == parent) { @@ -86,7 +113,8 @@ static void workspace_ensure_updated_relation(ListBase *relation_list, void *par workspace_relation_add(relation_list, parent, data); } -static void *workspace_relation_get_data_matching_parent(const ListBase *relation_list, const void *parent) +static void *workspace_relation_get_data_matching_parent( + const ListBase *relation_list, const void *parent) { for (WorkSpaceDataRelation *relation = relation_list->first; relation; relation = relation->next) { if (rel @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs