Option not to select with un-hide
[blender.git] / source / blender / editors / metaball / mball_edit.c
index 009aa921e1116597fce18c58a891b6527bd04b23..5b4078b98b79e2ae96941212c5c1d404877e5fa8 100644 (file)
@@ -542,19 +542,21 @@ void MBALL_OT_hide_metaelems(wmOperatorType *ot)
 /***************************** Unhide operator *****************************/
 
 /* Unhide all edited MetaElems */
-static int reveal_metaelems_exec(bContext *C, wmOperator *UNUSED(op))
+static int reveal_metaelems_exec(bContext *C, wmOperator *op)
 {
        Object *obedit = CTX_data_edit_object(C);
        MetaBall *mb = (MetaBall *)obedit->data;
-       MetaElem *ml;
-
-       ml = mb->editelems->first;
+       const bool select = RNA_boolean_get(op->ptr, "select");
+       bool changed = false;
 
-       if (ml) {
-               while (ml) {
+       for (MetaElem *ml = mb->editelems->first; ml; ml = ml->next) {
+               if (ml->flag & MB_HIDE) {
+                       SET_FLAG_FROM_TEST(ml->flag, select, SELECT);
                        ml->flag &= ~MB_HIDE;
-                       ml = ml->next;
+                       changed = true;
                }
+       }
+       if (changed) {
                WM_event_add_notifier(C, NC_GEOM | ND_DATA, mb);
                DAG_id_tag_update(obedit->data, 0);
        }
@@ -575,6 +577,9 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot)
        
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+       /* props */
+       RNA_def_boolean(ot->srna, "select", true, "Select", "");
 }
 
 /* Select MetaElement with mouse click (user can select radius circle or