[Bf-blender-cvs] [97e3de6dde3] soc-2020-info-editor: Keymap: info editor tweaks

Mateusz Grzeliński noreply at git.blender.org
Sun Jun 7 12:46:50 CEST 2020


Commit: 97e3de6dde3185c114a39f726c26102376a2e0a2
Author: Mateusz Grzeliński
Date:   Sun Jun 7 12:46:39 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB97e3de6dde3185c114a39f726c26102376a2e0a2

Keymap: info editor tweaks

if active element is not selected, shift click should select line and make it active

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

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 1e4924e4e7c..17c5dd159ab 100644
--- a/source/blender/editors/space_info/info_report.c
+++ b/source/blender/editors/space_info/info_report.c
@@ -169,35 +169,48 @@ static int select_report_pick_exec(bContext *C, wmOperator *op)
     return OPERATOR_CANCELLED;
   }
 
+
+  const Report *active_report = BLI_findlink((const struct ListBase *)reports,
+                                             sinfo->active_report_index);
+  const bool is_active_report_selected = active_report->flag & SELECT;
+
   if (deselect_all) {
     reports_select_all(reports, report_mask, SEL_DESELECT);
   }
 
+  if (active_report == NULL) {
+    report->flag = SELECT;
+    sinfo->active_report_index = report_index;
+
+    ED_area_tag_redraw(CTX_wm_area(C));
+    return OPERATOR_FINISHED;
+  }
+
   if (use_range) {
-    const Report *active_report = BLI_findlink((const struct ListBase *)reports,
-                                               sinfo->active_report_index);
-    if (active_report == NULL) {
-      report->flag = SELECT;
-      sinfo->active_report_index = report_index;
+    if (is_active_report_selected) {
+      if (report_index < sinfo->active_report_index) {
+        for (Report *i = report; i && i->prev != active_report; i = i->next) {
+          i->flag = SELECT;
+        }
+      }
+      else {
+        for (Report *report_iter = report; report_iter && report_iter->next != active_report;
+             report_iter = report_iter->prev) {
+          report_iter->flag = SELECT;
+        }
+      }
 
       ED_area_tag_redraw(CTX_wm_area(C));
       return OPERATOR_FINISHED;
     }
-
-    if (report_index < sinfo->active_report_index) {
-      for (Report *i = report; i && i->prev != active_report; i = i->next) {
-        i->flag = SELECT;
-      }
-    }
     else {
-      for (Report *report_iter = report; report_iter && report_iter->next != active_report;
-           report_iter = report_iter->prev) {
-        report_iter->flag = SELECT;
-      }
-    }
+      reports_select_all(reports, report_mask, SEL_DESELECT);
+      report->flag = SELECT;
+      sinfo->active_report_index = report_index;
 
-    ED_area_tag_redraw(CTX_wm_area(C));
-    return OPERATOR_FINISHED;
+      ED_area_tag_redraw(CTX_wm_area(C));
+      return OPERATOR_FINISHED;
+    }
   }
 
   if (extend && (report->flag & SELECT) && report_index == sinfo->active_report_index) {



More information about the Bf-blender-cvs mailing list