Move to layer: remove the OK button and make it apply immediately like it did
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Tue, 27 Nov 2012 16:02:15 +0000 (16:02 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Tue, 27 Nov 2012 16:02:15 +0000 (16:02 +0000)
before, is much nicer workflow. Now only if global undo is disabled will the
OK button show.

This is also a more generic fix for #26891 that solves other operators that
were also broken with global undo disabled.

source/blender/editors/object/object_relations.c
source/blender/windowmanager/intern/wm_operators.c

index 6c3155deb17a68c53f0970594536d33c0bf86d89..f886b52e2ce645c51017fd474ff32772ec3b4b92 100644 (file)
@@ -1225,7 +1225,7 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op)
        return lay;
 }
 
-static int move_to_layer_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
+static int move_to_layer_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
        View3D *v3d = CTX_wm_view3d(C);
        if (v3d && v3d->localvd) {
@@ -1233,7 +1233,7 @@ static int move_to_layer_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(eve
        }
        else {
                move_to_layer_init(C, op);
-               return WM_operator_props_dialog_popup(C, op, 260, 30);
+               return WM_operator_props_popup(C, op, event);
        }
 }
 
index 027c883c01f5ebc3432cdf31032e42493ea30ed5..c64cb33944564bb72976e6eca5f8525a6777024e 100644 (file)
@@ -1207,13 +1207,17 @@ int WM_operator_ui_popup(bContext *C, wmOperator *op, int width, int height)
  * \note operator menu needs undo flag enabled , for redo callback */
 static int wm_operator_props_popup_ex(bContext *C, wmOperator *op, const int do_call)
 {
-       
        if ((op->type->flag & OPTYPE_REGISTER) == 0) {
                BKE_reportf(op->reports, RPT_ERROR,
                            "Operator '%s' does not have register enabled, incorrect invoke function", op->type->idname);
                return OPERATOR_CANCELLED;
        }
 
+       /* if we don't have global undo, we can't do undo push for automatic redo,
+        * so we require manual OK clicking in this popup */
+       if(!(U.uiflag & USER_GLOBALUNDO))
+               return WM_operator_props_dialog_popup(C, op, 300, UI_UNIT_Y);
+
        ED_undo_push_op(C, op);
 
        wm_operator_register(C, op);