Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarley Acheson <harley.acheson@gmail.com>2019-05-19 23:12:15 +0300
committerHarley Acheson <harley.acheson@gmail.com>2019-05-19 23:12:15 +0300
commitb7eba20236ca6499a62a8ee2b0c852086bc46b8e (patch)
treec279de38a9f6318b5e15d3ba53d79b0b92cbffb6 /source/blender/editors/undo/ed_undo.c
parentec02bc299e3371afad02a9ffd7dc0278998b0659 (diff)
UI: Edit Menu Operator Polling
This patch updates the polling that enable/disables Edit Menu items. Slight Undo History menu changes Differential Revision: https://developer.blender.org/D4846 Reviewed by Brecht Van Lommel
Diffstat (limited to 'source/blender/editors/undo/ed_undo.c')
-rw-r--r--source/blender/editors/undo/ed_undo.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/source/blender/editors/undo/ed_undo.c b/source/blender/editors/undo/ed_undo.c
index 49b5cada04a..99143cd71f9 100644
--- a/source/blender/editors/undo/ed_undo.c
+++ b/source/blender/editors/undo/ed_undo.c
@@ -392,6 +392,15 @@ static bool ed_undo_redo_poll(bContext *C)
WM_operator_check_ui_enabled(C, last_op->type->name));
}
+static bool ed_undo_poll(bContext *C)
+{
+ if (!ed_undo_is_init_and_screenactive_poll(C)) {
+ return false;
+ }
+ UndoStack *undo_stack = CTX_wm_manager(C)->undo_stack;
+ return (undo_stack->step_active != NULL) && (undo_stack->step_active->prev != NULL);
+}
+
void ED_OT_undo(wmOperatorType *ot)
{
/* identifiers */
@@ -401,7 +410,7 @@ void ED_OT_undo(wmOperatorType *ot)
/* api callbacks */
ot->exec = ed_undo_exec;
- ot->poll = ed_undo_is_init_and_screenactive_poll;
+ ot->poll = ed_undo_poll;
}
void ED_OT_undo_push(wmOperatorType *ot)
@@ -426,6 +435,15 @@ void ED_OT_undo_push(wmOperatorType *ot)
"");
}
+static bool ed_redo_poll(bContext *C)
+{
+ if (!ed_undo_is_init_and_screenactive_poll(C)) {
+ return false;
+ }
+ UndoStack *undo_stack = CTX_wm_manager(C)->undo_stack;
+ return (undo_stack->step_active != NULL) && (undo_stack->step_active->next != NULL);
+}
+
void ED_OT_redo(wmOperatorType *ot)
{
/* identifiers */
@@ -435,7 +453,7 @@ void ED_OT_redo(wmOperatorType *ot)
/* api callbacks */
ot->exec = ed_redo_exec;
- ot->poll = ed_undo_is_init_and_screenactive_poll;
+ ot->poll = ed_redo_poll;
}
void ED_OT_undo_redo(wmOperatorType *ot)
@@ -569,7 +587,7 @@ static const EnumPropertyItem *rna_undo_itemf(bContext *C, int *totitem)
item_tmp.identifier = us->name;
item_tmp.name = IFACE_(us->name);
if (us == wm->undo_stack->step_active) {
- item_tmp.icon = ICON_HIDE_OFF;
+ item_tmp.icon = ICON_LAYER_ACTIVE;
}
else {
item_tmp.icon = ICON_NONE;
@@ -633,6 +651,16 @@ static int undo_history_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
+static bool undo_history_poll(bContext *C)
+{
+ if (!ed_undo_is_init_and_screenactive_poll(C)) {
+ return false;
+ }
+ UndoStack *undo_stack = CTX_wm_manager(C)->undo_stack;
+ /* more than just original state entry */
+ return BLI_listbase_count_at_most(&undo_stack->steps, 2) > 1;
+}
+
void ED_OT_undo_history(wmOperatorType *ot)
{
/* identifiers */
@@ -643,7 +671,7 @@ void ED_OT_undo_history(wmOperatorType *ot)
/* api callbacks */
ot->invoke = undo_history_invoke;
ot->exec = undo_history_exec;
- ot->poll = ed_undo_is_init_and_screenactive_poll;
+ ot->poll = undo_history_poll;
RNA_def_int(ot->srna, "item", 0, 0, INT_MAX, "Item", "", 0, INT_MAX);
}