mirror of https://github.com/buggins/dlangui.git
toggle line comment support
This commit is contained in:
parent
183571efa0
commit
f99985623c
|
@ -683,7 +683,7 @@ class EditableContent {
|
|||
if (ch == ' ') {
|
||||
x++;
|
||||
} else if (ch == '\t') {
|
||||
x = (x + _tabSize) % _tabSize;
|
||||
x = (x + _tabSize) / _tabSize * _tabSize;
|
||||
} else {
|
||||
if (res.firstNonSpace < 0) {
|
||||
res.firstNonSpace = i;
|
||||
|
|
|
@ -640,8 +640,12 @@ class Win32Window : Window {
|
|||
_keyFlags &= ~flag;
|
||||
}
|
||||
|
||||
bool onKey(KeyAction action, uint keyCode, int repeatCount, dchar character = 0) {
|
||||
bool onKey(KeyAction action, uint keyCode, int repeatCount, dchar character = 0, bool syskey = false) {
|
||||
KeyEvent event;
|
||||
if (syskey)
|
||||
_keyFlags |= KeyFlag.Alt;
|
||||
//else
|
||||
// _keyFlags &= ~KeyFlag.Alt;
|
||||
if (action == KeyAction.KeyDown || action == KeyAction.KeyUp) {
|
||||
switch(keyCode) {
|
||||
case KeyCode.SHIFT:
|
||||
|
@ -654,13 +658,29 @@ class Win32Window : Window {
|
|||
updateKeyFlags(action, KeyFlag.Alt);
|
||||
break;
|
||||
default:
|
||||
if (GetKeyState(VK_CONTROL) & 0x8000)
|
||||
_keyFlags |= KeyFlag.Control;
|
||||
else
|
||||
_keyFlags &= ~KeyFlag.Control;
|
||||
if (GetKeyState(VK_SHIFT) & 0x8000)
|
||||
_keyFlags |= KeyFlag.Shift;
|
||||
else
|
||||
_keyFlags &= ~KeyFlag.Shift;
|
||||
break;
|
||||
}
|
||||
if (keyCode == 0xBF)
|
||||
keyCode = KeyCode.KEY_DIVIDE;
|
||||
event = new KeyEvent(action, keyCode, _keyFlags);
|
||||
} else if (action == KeyAction.Text && character != 0) {
|
||||
dchar[] text;
|
||||
text ~= character;
|
||||
event = new KeyEvent(action, 0, _keyFlags, cast(dstring)text);
|
||||
if (_keyFlags & (KeyFlag.Control | KeyFlag.Alt)) {
|
||||
if (character >= 1 && character <= 26) {
|
||||
event = new KeyEvent(action, KeyCode.KEY_A + character - 1, _keyFlags);
|
||||
}
|
||||
} else {
|
||||
dchar[] text;
|
||||
text ~= character;
|
||||
event = new KeyEvent(action, 0, _keyFlags, cast(dstring)text);
|
||||
}
|
||||
}
|
||||
bool res = false;
|
||||
if (event !is null) {
|
||||
|
@ -1091,7 +1111,7 @@ LRESULT WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case WM_SYSKEYUP:
|
||||
if (window !is null) {
|
||||
int repeatCount = lParam & 0xFFFF;
|
||||
if (window.onKey(message == WM_KEYDOWN || message == WM_SYSKEYDOWN ? KeyAction.KeyDown : KeyAction.KeyUp, wParam, repeatCount))
|
||||
if (window.onKey(message == WM_KEYDOWN || message == WM_SYSKEYDOWN ? KeyAction.KeyDown : KeyAction.KeyUp, wParam, repeatCount, 0, message == WM_SYSKEYUP || message == WM_SYSKEYDOWN))
|
||||
return 0; // processed
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -411,9 +411,6 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction
|
|||
/// override to change popup menu items state
|
||||
override bool isActionEnabled(const Action action) {
|
||||
switch (action.id) {
|
||||
case EditorActions.ToggleBlockComment:
|
||||
return enabled && !_selectionRange.empty;
|
||||
case EditorActions.ToggleLineComment:
|
||||
case EditorActions.Tab:
|
||||
case EditorActions.BackTab:
|
||||
case EditorActions.Indent:
|
||||
|
@ -908,7 +905,7 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction
|
|||
case EditorActions.ToggleBlockComment:
|
||||
if (!_content.syntaxHighlighter || !_content.syntaxHighlighter.supportsToggleBlockComment)
|
||||
a.state = ACTION_STATE_INVISIBLE;
|
||||
else if (_content.syntaxHighlighter.canToggleBlockComment(_selectionRange))
|
||||
else if (enabled && _content.syntaxHighlighter.canToggleBlockComment(_selectionRange))
|
||||
a.state = ACTION_STATE_ENABLED;
|
||||
else
|
||||
a.state = ACTION_STATE_DISABLE;
|
||||
|
@ -916,7 +913,7 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction
|
|||
case EditorActions.ToggleLineComment:
|
||||
if (!_content.syntaxHighlighter || !_content.syntaxHighlighter.supportsToggleLineComment)
|
||||
a.state = ACTION_STATE_INVISIBLE;
|
||||
else if (_content.syntaxHighlighter.canToggleLineComment(_selectionRange))
|
||||
else if (enabled && _content.syntaxHighlighter.canToggleLineComment(_selectionRange))
|
||||
a.state = ACTION_STATE_ENABLED;
|
||||
else
|
||||
a.state = ACTION_STATE_DISABLE;
|
||||
|
|
Loading…
Reference in New Issue