Blender  V3.3
Macros | Variables
undo_system.c File Reference
#include <stdio.h>
#include <string.h>
#include "CLG_log.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_sys_types.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "DNA_listBase.h"
#include "DNA_windowmanager_types.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_lib_override.h"
#include "BKE_main.h"
#include "BKE_undo_system.h"
#include "MEM_guardedalloc.h"

Go to the source code of this file.

Macros

#define undo_stack   _wm_undo_stack_disallow /* pass in as a variable always. */
 
#define WITH_GLOBAL_UNDO_KEEP_ONE
 
#define WITH_GLOBAL_UNDO_ENSURE_UPDATED
 
#define WITH_GLOBAL_UNDO_CORRECT_ORDER
 

Functions

Internal Callback Wrappers

UndoRefID is simply a way to avoid in-lining name copy and lookups, since it's easy to forget a single case when done inline (crashing in some cases).

static void undosys_id_ref_store (void *UNUSED(user_data), UndoRefID *id_ref)
 
static void undosys_id_ref_resolve (void *user_data, UndoRefID *id_ref)
 
static bool undosys_step_encode (bContext *C, Main *bmain, UndoStack *ustack, UndoStep *us)
 
static void undosys_step_decode (bContext *C, Main *bmain, UndoStack *ustack, UndoStep *us, const eUndoStepDir dir, bool is_final)
 
static void undosys_step_free_and_unlink (UndoStack *ustack, UndoStep *us)
 
Undo Stack
static void undosys_stack_validate (UndoStack *ustack, bool expect_non_empty)
 
UndoStack * BKE_undosys_stack_create (void)
 
void BKE_undosys_stack_destroy (UndoStack *ustack)
 
void BKE_undosys_stack_clear (UndoStack *ustack)
 
void BKE_undosys_stack_clear_active (UndoStack *ustack)
 
static void undosys_stack_clear_all_last (UndoStack *ustack, UndoStep *us)
 
static void undosys_stack_clear_all_first (UndoStack *ustack, UndoStep *us, UndoStep *us_exclude)
 
static bool undosys_stack_push_main (UndoStack *ustack, const char *name, struct Main *bmain)
 
void BKE_undosys_stack_init_from_main (UndoStack *ustack, struct Main *bmain)
 
void BKE_undosys_stack_init_from_context (UndoStack *ustack, bContext *C)
 
bool BKE_undosys_stack_has_undo (const UndoStack *ustack, const char *name)
 
UndoStep * BKE_undosys_stack_active_with_type (UndoStack *ustack, const UndoType *ut)
 
UndoStep * BKE_undosys_stack_init_or_active_with_type (UndoStack *ustack, const UndoType *ut)
 
void BKE_undosys_stack_limit_steps_and_memory (UndoStack *ustack, int steps, size_t memory_limit)
 
Undo Step
UndoStep * BKE_undosys_step_push_init_with_type (UndoStack *ustack, bContext *C, const char *name, const UndoType *ut)
 
UndoStep * BKE_undosys_step_push_init (UndoStack *ustack, bContext *C, const char *name)
 
eUndoPushReturn BKE_undosys_step_push_with_type (UndoStack *ustack, bContext *C, const char *name, const UndoType *ut)
 
eUndoPushReturn BKE_undosys_step_push (UndoStack *ustack, bContext *C, const char *name)
 
UndoStep * BKE_undosys_step_same_type_next (UndoStep *us)
 
UndoStep * BKE_undosys_step_same_type_prev (UndoStep *us)
 
UndoStep * BKE_undosys_step_find_by_name_with_type (UndoStack *ustack, const char *name, const UndoType *ut)
 
UndoStep * BKE_undosys_step_find_by_name (UndoStack *ustack, const char *name)
 
UndoStep * BKE_undosys_step_find_by_type (UndoStack *ustack, const UndoType *ut)
 
eUndoStepDir BKE_undosys_step_calc_direction (const UndoStack *ustack, const UndoStep *us_target, const UndoStep *us_reference)
 
static UndoStep * undosys_step_iter_first (UndoStep *us_reference, const eUndoStepDir undo_dir)
 
bool BKE_undosys_step_load_data_ex (UndoStack *ustack, bContext *C, UndoStep *us_target, UndoStep *us_reference, const bool use_skip)
 
bool BKE_undosys_step_load_data (UndoStack *ustack, bContext *C, UndoStep *us_target)
 
void BKE_undosys_step_load_from_index (UndoStack *ustack, bContext *C, const int index)
 
bool BKE_undosys_step_undo_with_data_ex (UndoStack *ustack, bContext *C, UndoStep *us_target, bool use_skip)
 
bool BKE_undosys_step_undo_with_data (UndoStack *ustack, bContext *C, UndoStep *us_target)
 
bool BKE_undosys_step_undo (UndoStack *ustack, bContext *C)
 
bool BKE_undosys_step_redo_with_data_ex (UndoStack *ustack, bContext *C, UndoStep *us_target, bool use_skip)
 
bool BKE_undosys_step_redo_with_data (UndoStack *ustack, bContext *C, UndoStep *us_target)
 
bool BKE_undosys_step_redo (UndoStack *ustack, bContext *C)
 
UndoType * BKE_undosys_type_append (void(*undosys_fn)(UndoType *))
 
void BKE_undosys_type_free_all (void)
 
Undo Stack Grouping

This enables skip while group-level is set. In general it's not allowed that UndoStack.step_active have 'skip' enabled.

This rule is relaxed for grouping, however it's important each call to BKE_undosys_stack_group_begin has a matching BKE_undosys_stack_group_end.

  • Levels are used so nesting is supported, where the last call to BKE_undosys_stack_group_end will set the active undo step that should not be skipped.
  • Correct begin/end is checked by an assert since any errors here will cause undo to consider all steps part of one large group.
  • Calls to begin/end with no undo steps being pushed is supported and does nothing.
void BKE_undosys_stack_group_begin (UndoStack *ustack)
 
void BKE_undosys_stack_group_end (UndoStack *ustack)
 
ID Reference Utilities

Unfortunately we need this for a handful of places.

static void UNUSED_FUNCTION (BKE_undosys_foreach_ID_ref(UndoStack *ustack, UndoTypeForEachIDRefFn foreach_ID_ref_fn, void *user_data))
 
Debug Helpers
void BKE_undosys_print (UndoStack *ustack)
 

Variables

static CLG_LogRef LOG = {"bke.undosys"}
 

Internal Nested Undo Checks

Make sure we're not running undo operations from 'step_encode', 'step_decode' callbacks. bugs caused by this situation aren't that hard to spot but aren't always so obvious. Best we have a check which shows the problem immediately.

#define WITH_NESTED_UNDO_CHECK
 
#define UNDO_NESTED_ASSERT(state)   BLI_assert(g_undo_callback_running == state)
 
#define UNDO_NESTED_CHECK_BEGIN
 
#define UNDO_NESTED_CHECK_END
 
static bool g_undo_callback_running = false
 

Undo Types

const UndoType * BKE_UNDOSYS_TYPE_IMAGE = NULL
 
const UndoType * BKE_UNDOSYS_TYPE_MEMFILE = NULL
 
const UndoType * BKE_UNDOSYS_TYPE_PAINTCURVE = NULL
 
const UndoType * BKE_UNDOSYS_TYPE_PARTICLE = NULL
 
const UndoType * BKE_UNDOSYS_TYPE_SCULPT = NULL
 
const UndoType * BKE_UNDOSYS_TYPE_TEXT = NULL
 
static ListBase g_undo_types = {NULL, NULL}
 
static const UndoType * BKE_undosys_type_from_context (bContext *C)
 

Detailed Description

Used by ED_undo.h, internal implementation.

Definition in file undo_system.c.

Macro Definition Documentation

◆ UNDO_NESTED_ASSERT

#define UNDO_NESTED_ASSERT (   state)    BLI_assert(g_undo_callback_running == state)

Definition at line 87 of file undo_system.c.

◆ UNDO_NESTED_CHECK_BEGIN

#define UNDO_NESTED_CHECK_BEGIN
Value:
{ \
UNDO_NESTED_ASSERT(false); \
g_undo_callback_running = true; \
} \
((void)0)
SyclQueue void void size_t num_bytes void

Definition at line 88 of file undo_system.c.

◆ UNDO_NESTED_CHECK_END

#define UNDO_NESTED_CHECK_END
Value:
{ \
UNDO_NESTED_ASSERT(true); \
g_undo_callback_running = false; \
} \
((void)0)

Definition at line 94 of file undo_system.c.

◆ undo_stack

#define undo_stack   _wm_undo_stack_disallow /* pass in as a variable always. */

Definition at line 32 of file undo_system.c.

◆ WITH_GLOBAL_UNDO_CORRECT_ORDER

#define WITH_GLOBAL_UNDO_CORRECT_ORDER

Make sure we don't apply edits on top of a newer memfile state, see: T56163.

Note
Keep an eye on this, could solve differently.

Definition at line 44 of file undo_system.c.

◆ WITH_GLOBAL_UNDO_ENSURE_UPDATED

#define WITH_GLOBAL_UNDO_ENSURE_UPDATED

Make sure all ID's created at the point we add an undo step that uses ID's.

Definition at line 38 of file undo_system.c.

◆ WITH_GLOBAL_UNDO_KEEP_ONE

#define WITH_GLOBAL_UNDO_KEEP_ONE

Odd requirement of Blender that we always keep a memfile undo in the stack.

Definition at line 35 of file undo_system.c.

◆ WITH_NESTED_UNDO_CHECK

#define WITH_NESTED_UNDO_CHECK

Definition at line 83 of file undo_system.c.

Function Documentation

◆ BKE_undosys_print()

void BKE_undosys_print ( UndoStack *  ustack)

◆ BKE_undosys_stack_active_with_type()

UndoStep* BKE_undosys_stack_active_with_type ( UndoStack *  ustack,
const UndoType *  ut 
)

◆ BKE_undosys_stack_clear()

void BKE_undosys_stack_clear ( UndoStack *  ustack)

◆ BKE_undosys_stack_clear_active()

void BKE_undosys_stack_clear_active ( UndoStack *  ustack)

◆ BKE_undosys_stack_create()

UndoStack* BKE_undosys_stack_create ( void  )

Definition at line 250 of file undo_system.c.

References MEM_callocN.

Referenced by ed_undo_push_exec(), and wm_file_read_post().

◆ BKE_undosys_stack_destroy()

void BKE_undosys_stack_destroy ( UndoStack *  ustack)

Definition at line 256 of file undo_system.c.

References BKE_undosys_stack_clear(), and MEM_freeN.

Referenced by ED_editors_exit(), and wm_close_and_free().

◆ BKE_undosys_stack_group_begin()

void BKE_undosys_stack_group_begin ( UndoStack *  ustack)

Definition at line 919 of file undo_system.c.

References BLI_assert, and UndoStack::group_level.

Referenced by ED_undo_group_begin().

◆ BKE_undosys_stack_group_end()

void BKE_undosys_stack_group_end ( UndoStack *  ustack)

◆ BKE_undosys_stack_has_undo()

bool BKE_undosys_stack_has_undo ( const UndoStack *  ustack,
const char *  name 
)

Definition at line 354 of file undo_system.c.

References BLI_listbase_is_empty(), BLI_rfindstring(), UndoStep::prev, and UndoStack::steps.

Referenced by ED_undo_is_valid().

◆ BKE_undosys_stack_init_from_context()

void BKE_undosys_stack_init_from_context ( UndoStack *  ustack,
bContext *  C 
)

◆ BKE_undosys_stack_init_from_main()

void BKE_undosys_stack_init_from_main ( UndoStack *  ustack,
struct Main *  bmain 
)

Definition at line 340 of file undo_system.c.

References IFACE_, UNDO_NESTED_ASSERT, and undosys_stack_push_main().

Referenced by wm_file_read_post().

◆ BKE_undosys_stack_init_or_active_with_type()

UndoStep* BKE_undosys_stack_init_or_active_with_type ( UndoStack *  ustack,
const UndoType *  ut 
)

◆ BKE_undosys_stack_limit_steps_and_memory()

void BKE_undosys_stack_limit_steps_and_memory ( UndoStack *  ustack,
int  steps,
size_t  memory_limit 
)
Parameters
stepsLimit the number of undo steps.
memory_limitLimit the amount of memory used by the undo stack.

Definition at line 383 of file undo_system.c.

References BKE_UNDOSYS_TYPE_MEMFILE, CLOG_INFO, UndoStep::data_size, ListBase::last, LOG, memory_limit, NULL, UndoStep::prev, UndoStep::skip, steps, UndoStack::steps, UndoStep::type, UNDO_NESTED_ASSERT, and undosys_stack_clear_all_first().

Referenced by ED_undo_push().

◆ BKE_undosys_step_calc_direction()

eUndoStepDir BKE_undosys_step_calc_direction ( const UndoStack *  ustack,
const UndoStep *  us_target,
const UndoStep *  us_reference 
)

Return direction of the undo/redo from us_reference (or ustack->step_active if NULL), and us_target.

Note
If us_reference and us_target are the same, we consider this is an undo.
Returns
-1 for undo, 1 for redo, 0 in case of error.

Definition at line 659 of file undo_system.c.

References BLI_assert, BLI_assert_msg, ELEM, UndoStep::next, NULL, UndoStep::prev, UndoStack::step_active, STEP_INVALID, STEP_REDO, and STEP_UNDO.

Referenced by BKE_undosys_step_load_data_ex(), BKE_undosys_step_redo_with_data_ex(), BKE_undosys_step_undo_with_data_ex(), and ed_undo_step_by_name().

◆ BKE_undosys_step_find_by_name()

UndoStep* BKE_undosys_step_find_by_name ( UndoStack *  ustack,
const char *  name 
)

Definition at line 644 of file undo_system.c.

References BLI_rfindstring(), and UndoStack::steps.

Referenced by ed_undo_step_by_name().

◆ BKE_undosys_step_find_by_name_with_type()

UndoStep* BKE_undosys_step_find_by_name_with_type ( UndoStack *  ustack,
const char *  name,
const UndoType *  ut 
)

Definition at line 630 of file undo_system.c.

References ListBase::last, NULL, UndoStack::steps, and STREQ.

◆ BKE_undosys_step_find_by_type()

UndoStep* BKE_undosys_step_find_by_type ( UndoStack *  ustack,
const UndoType *  ut 
)

Definition at line 649 of file undo_system.c.

References ListBase::last, NULL, and UndoStack::steps.

Referenced by memfile_undosys_step_encode().

◆ BKE_undosys_step_load_data()

bool BKE_undosys_step_load_data ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us_target 
)

Undo/Redo until the given us_target step becomes the active (currently loaded) one.

Definition at line 806 of file undo_system.c.

References BKE_undosys_step_load_data_ex(), C, and NULL.

Referenced by BKE_undosys_step_load_from_index().

◆ BKE_undosys_step_load_data_ex()

bool BKE_undosys_step_load_data_ex ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us_target,
UndoStep *  us_reference,
bool  use_skip 
)

Undo/Redo until the given us_target step becomes the active (currently loaded) one.

Note
Unless us_target is a 'skipped' one and use_skip is true, us_target will become the active step.
In case use_skip is true, the final target will always be beyond the given one (if the given one has to be skipped).
Parameters
us_referenceIf NULL, will be set to current active step in the undo stack. Otherwise, it is assumed to match the current state, and will be used as basis for the undo/redo process (i.e. all steps in-between us_reference and us_target will be processed).

Definition at line 718 of file undo_system.c.

References BKE_undosys_step_calc_direction(), BLI_assert, C, CLOG_ERROR, CLOG_INFO, G_MAIN, LOG, UndoStep::name, UndoType::name, UndoStep::next, NULL, UndoStep::prev, UndoStep::skip, UndoStack::step_active, STEP_INVALID, CLG_LogRef::type, UndoStep::type, UNDO_NESTED_ASSERT, undosys_stack_validate(), undosys_step_decode(), and undosys_step_iter_first().

Referenced by BKE_undosys_step_load_data(), BKE_undosys_step_redo_with_data_ex(), BKE_undosys_step_undo_with_data_ex(), and ed_undo_step_by_name().

◆ BKE_undosys_step_load_from_index()

void BKE_undosys_step_load_from_index ( UndoStack *  ustack,
struct bContext *  C,
int  index 
)

Undo/Redo until the step matching given index in the undo stack becomes the active (currently loaded) one.

Definition at line 812 of file undo_system.c.

References BKE_undosys_step_load_data(), BLI_assert, BLI_findlink(), C, UndoStep::skip, UndoStack::step_active, and UndoStack::steps.

Referenced by ed_undo_step_by_index().

◆ BKE_undosys_step_push()

eUndoPushReturn BKE_undosys_step_push ( UndoStack *  ustack,
bContext *  C,
const char *  name 
)

◆ BKE_undosys_step_push_init()

UndoStep* BKE_undosys_step_push_init ( UndoStack *  ustack,
bContext *  C,
const char *  name 
)

◆ BKE_undosys_step_push_init_with_type()

UndoStep* BKE_undosys_step_push_init_with_type ( UndoStack *  ustack,
struct bContext *  C,
const char *  name,
const UndoType *  ut 
)

◆ BKE_undosys_step_push_with_type()

eUndoPushReturn BKE_undosys_step_push_with_type ( UndoStack *  ustack,
struct bContext *  C,
const char *  name,
const UndoType *  ut 
)

◆ BKE_undosys_step_redo()

bool BKE_undosys_step_redo ( UndoStack *  ustack,
struct bContext *  C 
)

Redo one step from current active one.

Definition at line 869 of file undo_system.c.

References BKE_undosys_step_redo_with_data(), C, UndoStep::next, NULL, and UndoStack::step_active.

Referenced by ed_undo_step_direction().

◆ BKE_undosys_step_redo_with_data()

bool BKE_undosys_step_redo_with_data ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us_target 
)

Redo until us_target step becomes the active (currently loaded) one.

Note
See BKE_undosys_step_redo_with_data_ex for details.

Definition at line 864 of file undo_system.c.

References BKE_undosys_step_redo_with_data_ex(), and C.

Referenced by BKE_undosys_step_redo().

◆ BKE_undosys_step_redo_with_data_ex()

bool BKE_undosys_step_redo_with_data_ex ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us,
bool  use_skip 
)

Redo until us_target step becomes the active (currently loaded) one.

Warning
This function assumes that the given target step is after current active one.
Note
Unless us_target is a 'skipped' one and use_skip is true, us_target will become the active step.
In case use_skip is true, the final target will always be after the given one (if the given one has to be skipped).

Definition at line 850 of file undo_system.c.

References BKE_undosys_step_calc_direction(), BKE_undosys_step_load_data_ex(), BLI_assert, C, NULL, UndoStep::prev, and UndoStack::step_active.

Referenced by BKE_undosys_step_redo_with_data().

◆ BKE_undosys_step_same_type_next()

UndoStep* BKE_undosys_step_same_type_next ( UndoStep *  us)

Useful when we want to diff against previous undo data but can't be sure the types match.

Definition at line 604 of file undo_system.c.

References UndoStep::next, and UndoStep::type.

Referenced by memfile_undosys_step_free().

◆ BKE_undosys_step_same_type_prev()

UndoStep* BKE_undosys_step_same_type_prev ( UndoStep *  us)

Useful when we want to diff against previous undo data but can't be sure the types match.

Definition at line 617 of file undo_system.c.

References UndoStep::prev, and UndoStep::type.

◆ BKE_undosys_step_undo()

bool BKE_undosys_step_undo ( UndoStack *  ustack,
struct bContext *  C 
)

Undo one step from current active (currently loaded) one.

Definition at line 842 of file undo_system.c.

References BKE_undosys_step_undo_with_data(), C, NULL, UndoStep::prev, and UndoStack::step_active.

Referenced by ed_undo_step_direction().

◆ BKE_undosys_step_undo_with_data()

bool BKE_undosys_step_undo_with_data ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us_target 
)

Undo until us_target step becomes the active (currently loaded) one.

Note
See BKE_undosys_step_undo_with_data_ex for details.

Definition at line 837 of file undo_system.c.

References BKE_undosys_step_undo_with_data_ex(), and C.

Referenced by BKE_undosys_step_undo().

◆ BKE_undosys_step_undo_with_data_ex()

bool BKE_undosys_step_undo_with_data_ex ( UndoStack *  ustack,
struct bContext *  C,
UndoStep *  us,
bool  use_skip 
)

Undo until us_target step becomes the active (currently loaded) one.

Warning
This function assumes that the given target step is before current active one.
Note
Unless us_target is a 'skipped' one and use_skip is true, us_target will become the active step.
In case use_skip is true, the final target will always be before the given one (if the given one has to be skipped).

Definition at line 822 of file undo_system.c.

References BKE_undosys_step_calc_direction(), BKE_undosys_step_load_data_ex(), BLI_assert, C, NULL, and UndoStack::step_active.

Referenced by BKE_undosys_step_undo_with_data().

◆ BKE_undosys_type_append()

UndoType* BKE_undosys_type_append ( void(*)(UndoType *)  undosys_fn)

Similar to WM_operatortype_append

Definition at line 877 of file undo_system.c.

References BLI_addtail(), g_undo_types, and MEM_callocN.

Referenced by ED_undosys_type_init().

◆ BKE_undosys_type_free_all()

void BKE_undosys_type_free_all ( void  )

Definition at line 890 of file undo_system.c.

References BLI_pophead(), g_undo_types, and MEM_freeN.

Referenced by ED_undosys_type_free().

◆ BKE_undosys_type_from_context()

static const UndoType* BKE_undosys_type_from_context ( bContext *  C)
static

◆ undosys_id_ref_resolve()

static void undosys_id_ref_resolve ( void *  user_data,
UndoRefID *  id_ref 
)
static

◆ undosys_id_ref_store()

static void undosys_id_ref_store ( void *  UNUSEDuser_data,
UndoRefID *  id_ref 
)
static

Definition at line 116 of file undo_system.c.

References BLI_assert, BLI_strncpy(), ID::name, UndoRefID::name, NULL, and UndoRefID::ptr.

Referenced by undosys_step_encode().

◆ undosys_stack_clear_all_first()

static void undosys_stack_clear_all_first ( UndoStack *  ustack,
UndoStep *  us,
UndoStep *  us_exclude 
)
static

◆ undosys_stack_clear_all_last()

static void undosys_stack_clear_all_last ( UndoStack *  ustack,
UndoStep *  us 
)
static

◆ undosys_stack_push_main()

static bool undosys_stack_push_main ( UndoStack *  ustack,
const char *  name,
struct Main *  bmain 
)
static

◆ undosys_stack_validate()

static void undosys_stack_validate ( UndoStack *  ustack,
bool  expect_non_empty 
)
static

◆ undosys_step_decode()

static void undosys_step_decode ( bContext *  C,
Main *  bmain,
UndoStack *  ustack,
UndoStep *  us,
const eUndoStepDir  dir,
bool  is_final 
)
static

◆ undosys_step_encode()

static bool undosys_step_encode ( bContext *  C,
Main *  bmain,
UndoStack *  ustack,
UndoStep *  us 
)
static

◆ undosys_step_free_and_unlink()

static void undosys_step_free_and_unlink ( UndoStack *  ustack,
UndoStep *  us 
)
static

◆ undosys_step_iter_first()

static UndoStep* undosys_step_iter_first ( UndoStep *  us_reference,
const eUndoStepDir  undo_dir 
)
static

When reading undo steps for undo/redo, some extra checks are needed when so the correct undo step is decoded.

Definition at line 704 of file undo_system.c.

References UndoType::flags, UndoStep::next, UndoStep::prev, UndoStep::type, and UNDOTYPE_FLAG_DECODE_ACTIVE_STEP.

Referenced by BKE_undosys_step_load_data_ex().

◆ UNUSED_FUNCTION()

static void UNUSED_FUNCTION ( BKE_undosys_foreach_ID_ref(UndoStack *ustack, UndoTypeForEachIDRefFn foreach_ID_ref_fn, void *user_data)  )
static

Variable Documentation

◆ BKE_UNDOSYS_TYPE_IMAGE

const UndoType* BKE_UNDOSYS_TYPE_IMAGE = NULL

◆ BKE_UNDOSYS_TYPE_MEMFILE

const UndoType* BKE_UNDOSYS_TYPE_MEMFILE = NULL

◆ BKE_UNDOSYS_TYPE_PAINTCURVE

const UndoType* BKE_UNDOSYS_TYPE_PAINTCURVE = NULL

Definition at line 55 of file undo_system.c.

Referenced by ED_paintcurve_undo_push_begin(), and ED_undosys_type_init().

◆ BKE_UNDOSYS_TYPE_PARTICLE

const UndoType* BKE_UNDOSYS_TYPE_PARTICLE = NULL

Definition at line 56 of file undo_system.c.

Referenced by ED_undosys_type_init().

◆ BKE_UNDOSYS_TYPE_SCULPT

const UndoType* BKE_UNDOSYS_TYPE_SCULPT = NULL

◆ BKE_UNDOSYS_TYPE_TEXT

const UndoType* BKE_UNDOSYS_TYPE_TEXT = NULL

◆ g_undo_callback_running

bool g_undo_callback_running = false
static

Definition at line 86 of file undo_system.c.

◆ g_undo_types

ListBase g_undo_types = {NULL, NULL}
static

◆ LOG

CLG_LogRef LOG = {"bke.undosys"}
static