- if (!BeforeMouseIsDown) {\r
- //\r
- // mouse down\r
- //\r
- if (MouseIsDown) {\r
- FRow = FileBuffer.FilePosition.Row;\r
- FCol = FileBuffer.FilePosition.Column;\r
- SelectStartBackup = MainEditor.SelectStart;\r
- SelectEndBackup = MainEditor.SelectEnd;\r
-\r
- FirstDown = TRUE;\r
- }\r
- } else {\r
-\r
- SelectStartBackup = MainEditor.SelectStart;\r
- SelectEndBackup = MainEditor.SelectEnd;\r
-\r
- //\r
- // begin to drag\r
- //\r
- if (MouseIsDown) {\r
- if (FirstDown) {\r
- if (MouseState.RelativeMovementX || MouseState.RelativeMovementY) {\r
- MainEditor.SelectStart = 0;\r
- MainEditor.SelectEnd = 0;\r
- MainEditor.SelectStart = (FRow - 1) * SHELL_EDIT_MAX_LINE_SIZE + FCol;\r
-\r
- MouseDrag = TRUE;\r
- FirstDown = FALSE;\r
- }\r
- } else {\r
- if ((\r
- (FileBuffer.FilePosition.Row - 1) *\r
- SHELL_EDIT_MAX_LINE_SIZE +\r
- FileBuffer.FilePosition.Column\r
- ) >= MainEditor.SelectStart\r
- ) {\r
- MainEditor.SelectEnd = (FileBuffer.FilePosition.Row - 1) *\r
- SHELL_EDIT_MAX_LINE_SIZE +\r
- FileBuffer.FilePosition.Column;\r
- } else {\r
- MainEditor.SelectEnd = 0;\r
- }\r
- }\r
- //\r
- // end of if RelativeX/Y\r
- //\r
- } else {\r
- //\r
- // mouse is up\r
- //\r
- if (MouseDrag) {\r
- if (FileBufferGetTotalSize () == 0) {\r
- MainEditor.SelectStart = 0;\r
- MainEditor.SelectEnd = 0;\r
- FirstDown = FALSE;\r
- MouseDrag = FALSE;\r
- }\r
-\r
- if ((\r
- (FileBuffer.FilePosition.Row - 1) *\r
- SHELL_EDIT_MAX_LINE_SIZE +\r
- FileBuffer.FilePosition.Column\r
- ) >= MainEditor.SelectStart\r
- ) {\r
- MainEditor.SelectEnd = (FileBuffer.FilePosition.Row - 1) *\r
- SHELL_EDIT_MAX_LINE_SIZE +\r
- FileBuffer.FilePosition.Column;\r
- } else {\r
- MainEditor.SelectEnd = 0;\r
- }\r
-\r
- if (MainEditor.SelectEnd == 0) {\r
- MainEditor.SelectStart = 0;\r
- }\r
- }\r
-\r
- FirstDown = FALSE;\r
- MouseDrag = FALSE;\r
- }\r
-\r
- if (SelectStartBackup != MainEditor.SelectStart || SelectEndBackup != MainEditor.SelectEnd) {\r
- if ((SelectStartBackup - 1) / SHELL_EDIT_MAX_LINE_SIZE != (MainEditor.SelectStart - 1) / SHELL_EDIT_MAX_LINE_SIZE) {\r
- FileBufferNeedRefresh = TRUE;\r
- } else {\r
- if ((SelectEndBackup - 1) / SHELL_EDIT_MAX_LINE_SIZE != (MainEditor.SelectEnd - 1) / SHELL_EDIT_MAX_LINE_SIZE) {\r
- FileBufferNeedRefresh = TRUE;\r
- } else {\r
- FileBufferOnlyLineNeedRefresh = TRUE;\r
- }\r
- }\r
- }\r
- }\r
-\r