[Bf-blender-cvs] [42f3e30ffe0] soc-2020-info-editor: Keymap: box select empty area should deselect all reports

Mateusz Grzeliński noreply at git.blender.org
Fri Jun 5 15:03:19 CEST 2020


Commit: 42f3e30ffe04311256f785a38f363c3e8590b843
Author: Mateusz Grzeliński
Date:   Fri Jun 5 13:28:37 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB42f3e30ffe04311256f785a38f363c3e8590b843

Keymap: box select empty area should deselect all reports

===================================================================

M	source/blender/editors/space_info/info_report.c

===================================================================

diff --git a/source/blender/editors/space_info/info_report.c b/source/blender/editors/space_info/info_report.c
index adc6391a0f6..13bb51e8fba 100644
--- a/source/blender/editors/space_info/info_report.c
+++ b/source/blender/editors/space_info/info_report.c
@@ -261,36 +261,41 @@ static int box_select_exec(bContext *C, wmOperator *op)
   report_min = info_text_pick(sinfo, region, reports, rect.ymax);
   report_max = info_text_pick(sinfo, region, reports, rect.ymin);
 
-  /* get the first report if none found */
-  if (report_min == NULL) {
-    // printf("find_min\n");
-    LISTBASE_FOREACH (Report *, report, &reports->list) {
-      if (report->type & report_mask) {
-        report_min = report;
-        break;
+  if (report_min == NULL && report_max == NULL) {
+    reports_select_all(reports, report_mask, SEL_DESELECT);
+  }
+  else {
+    /* get the first report if none found */
+    if (report_min == NULL) {
+      // printf("find_min\n");
+      LISTBASE_FOREACH (Report *, report, &reports->list) {
+        if (report->type & report_mask) {
+          report_min = report;
+          break;
+        }
       }
     }
-  }
 
-  if (report_max == NULL) {
-    // printf("find_max\n");
-    for (Report *report = reports->list.last; report; report = report->prev) {
-      if (report->type & report_mask) {
-        report_max = report;
-        break;
+    if (report_max == NULL) {
+      // printf("find_max\n");
+      for (Report *report = reports->list.last; report; report = report->prev) {
+        if (report->type & report_mask) {
+          report_max = report;
+          break;
+        }
       }
     }
-  }
 
-  if (report_min == NULL || report_max == NULL) {
-    return OPERATOR_CANCELLED;
-  }
+    if (report_min == NULL || report_max == NULL) {
+      return OPERATOR_CANCELLED;
+    }
 
-  for (Report *report = report_min; (report != report_max->next); report = report->next) {
-    if ((report->type & report_mask) == 0) {
-      continue;
+    for (Report *report = report_min; (report != report_max->next); report = report->next) {
+      if ((report->type & report_mask) == 0) {
+        continue;
+      }
+      SET_FLAG_FROM_TEST(report->flag, select, SELECT);
     }
-    SET_FLAG_FROM_TEST(report->flag, select, SELECT);
   }
 
   ED_area_tag_redraw(CTX_wm_area(C));



More information about the Bf-blender-cvs mailing list