ide/CodeEditor: Made clearing trailing spaces a command
authorJerome St-Louis <jerome@ecere.com>
Wed, 26 Mar 2014 18:50:58 +0000 (14:50 -0400)
committerJerome St-Louis <jerome@ecere.com>
Wed, 26 Mar 2014 18:50:58 +0000 (14:50 -0400)
- Fixed a bug in clearing trailing spaces
- ecere/gui/Menu: Fixed crash in multi-level menu merging

ecere/src/gui/controls/Menu.ec
ide/src/designer/CodeEditor.ec

index dc6227d..4faad0e 100644 (file)
@@ -542,7 +542,7 @@ public:
                   }
                }
 
-               if(!beingMergedItem.isDivider || (previous.item && !previous.item.isDivider))
+               if(!beingMergedItem.isDivider || !previous || (previous.item && !previous.item.isDivider))
                {
                   mergeIntoItemPtr = ItemPtr { };
                   items.Insert(previous, mergeIntoItemPtr);
index fa4babf..bf7c6bb 100644 (file)
@@ -1959,6 +1959,29 @@ class CodeEditor : Window
    MenuItem { fileMenu, $"Save", s, Key { s, ctrl = true }, NotifySelect = MenuFileSave };
    MenuItem { fileMenu, $"Save As...", a, NotifySelect = MenuFileSaveAs };
 
+   Menu editMenu { menu, $"Edit", e };
+   MenuDivider { editMenu };
+   MenuItem clearTrailingSpacesItem
+   {
+      editMenu, $"Clear trailing spaces", t, Key { t, ctrl = true, shift = true };
+
+      bool NotifySelect(MenuItem selection, Modifiers mods)
+      {
+         // Nuke trailing spaces
+         EditLine line;
+         int y = 0;
+         for(line = editBox.firstLine; line; line = line.next, y++)
+         {
+            String buffer = line.text;
+            int count = line.count, i = count-1;
+            while(i > 0 && isspace(buffer[i])) i--;
+            if(i < count - 1)
+               editBox.Delete(line, y, i + 1, line, y, count);
+         }
+         return true;
+      }
+   };
+
    Menu debugMenu { menu, $"Debug", d };
    MenuItem debugRunToCursor                { debugMenu, $"Run To Cursor", c, ctrlF10,                                                                  id = RTCMenuBits { false, false, false }, NotifySelect = RTCMenu_NotifySelect; };
    MenuItem debugSkipRunToCursor            { debugMenu, $"Run To Cursor Skipping Breakpoints", u, Key { f10, ctrl = true, shift = true },              id = RTCMenuBits { true,  false, false }, NotifySelect = RTCMenu_NotifySelect; };
@@ -2234,21 +2257,6 @@ class CodeEditor : Window
             designer.modifiedDocument = false;
          }
 
-         if(editBox.syntaxHighlighting)
-         {
-            // Nuke trailing spaces
-            EditLine line;
-            int y = 0;
-            for(line = editBox.firstLine; line; line = line.next, y++)
-            {
-               String buffer = line.text;
-               int count = line.count, i = count-1;
-               while(i > 0 && isspace(buffer[i])) i--;
-               if(i < count - 1)
-                  editBox.Delete(line, y, i, line, y, count);
-            }
-         }
-
          editBox.Save(f, false);
          modifiedDocument = false;