mirror of https://github.com/vector-im/riot-web
				
				
				
			post-merge fixes, the new keybindings stuff made it messy
							parent
							
								
									60d3da2441
								
							
						
					
					
						commit
						60e7089c77
					
				|  | @ -161,31 +161,29 @@ const messageComposerBindings = (): KeyBinding<MessageComposerAction>[] => { | |||
| const autocompleteBindings = (): KeyBinding<AutocompleteAction>[] => { | ||||
|     return [ | ||||
|         { | ||||
|             action: AutocompleteAction.CompleteOrNextSelection, | ||||
|             action: AutocompleteAction.ForceComplete, | ||||
|             keyCombo: { | ||||
|                 key: Key.TAB, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             action: AutocompleteAction.CompleteOrNextSelection, | ||||
|             action: AutocompleteAction.ForceComplete, | ||||
|             keyCombo: { | ||||
|                 key: Key.TAB, | ||||
|                 ctrlKey: true, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             action: AutocompleteAction.CompleteOrPrevSelection, | ||||
|             action: AutocompleteAction.Complete, | ||||
|             keyCombo: { | ||||
|                 key: Key.TAB, | ||||
|                 shiftKey: true, | ||||
|                 key: Key.ENTER, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             action: AutocompleteAction.CompleteOrPrevSelection, | ||||
|             action: AutocompleteAction.Complete, | ||||
|             keyCombo: { | ||||
|                 key: Key.TAB, | ||||
|                 key: Key.ENTER, | ||||
|                 ctrlKey: true, | ||||
|                 shiftKey: true, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|  |  | |||
|  | @ -52,13 +52,11 @@ export enum MessageComposerAction { | |||
| 
 | ||||
| /** Actions for text editing autocompletion */ | ||||
| export enum AutocompleteAction { | ||||
|     /** | ||||
|      * Select previous selection or, if the autocompletion window is not shown, open the window and select the first | ||||
|      * selection. | ||||
|      */ | ||||
|     CompleteOrPrevSelection = 'ApplySelection', | ||||
|     /** Select next selection or, if the autocompletion window is not shown, open it and select the first selection */ | ||||
|     CompleteOrNextSelection = 'CompleteOrNextSelection', | ||||
|     /** Accepts chosen autocomplete selection */ | ||||
|     Complete = 'Complete', | ||||
|     /** Accepts chosen autocomplete selection or, | ||||
|      * if the autocompletion window is not shown, open the window and select the first selection */ | ||||
|     ForceComplete = 'ForceComplete', | ||||
|     /** Move to the previous autocomplete selection */ | ||||
|     PrevSelection = 'PrevSelection', | ||||
|     /** Move to the next autocomplete selection */ | ||||
|  |  | |||
|  | @ -434,6 +434,45 @@ export default class BasicMessageEditor extends React.Component<IProps, IState> | |||
|     private onKeyDown = (event: React.KeyboardEvent) => { | ||||
|         const model = this.props.model; | ||||
|         let handled = false; | ||||
| 
 | ||||
|         const autocompleteAction = getKeyBindingsManager().getAutocompleteAction(event); | ||||
|         if (model.autoComplete && model.autoComplete.hasCompletions()) { | ||||
|             const autoComplete = model.autoComplete; | ||||
|             switch (autocompleteAction) { | ||||
|                 case AutocompleteAction.ForceComplete: | ||||
|                 case AutocompleteAction.Complete: | ||||
|                     autoComplete.confirmCompletion(); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 case AutocompleteAction.PrevSelection: | ||||
|                     autoComplete.selectPreviousSelection(); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 case AutocompleteAction.NextSelection: | ||||
|                     autoComplete.selectNextSelection(); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 case AutocompleteAction.Cancel: | ||||
|                     autoComplete.onEscape(event); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 default: | ||||
|                     return; // don't preventDefault on anything else
 | ||||
|             } | ||||
|         } else if (autocompleteAction === AutocompleteAction.ForceComplete) { | ||||
|             // there is no current autocomplete window, try to open it
 | ||||
|             this.tabCompleteName(); | ||||
|             handled = true; | ||||
|         } else if (event.key === Key.BACKSPACE || event.key === Key.DELETE) { | ||||
|             this.formatBarRef.current.hide(); | ||||
|         } | ||||
| 
 | ||||
|         if (handled) { | ||||
|             event.preventDefault(); | ||||
|             event.stopPropagation(); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         const action = getKeyBindingsManager().getMessageComposerAction(event); | ||||
|         switch (action) { | ||||
|             case MessageComposerAction.FormatBold: | ||||
|  | @ -485,42 +524,6 @@ export default class BasicMessageEditor extends React.Component<IProps, IState> | |||
|                 handled = true; | ||||
|                 break; | ||||
|         } | ||||
|         if (handled) { | ||||
|             event.preventDefault(); | ||||
|             event.stopPropagation(); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         const autocompleteAction = getKeyBindingsManager().getAutocompleteAction(event); | ||||
|         if (model.autoComplete && model.autoComplete.hasCompletions()) { | ||||
|             const autoComplete = model.autoComplete; | ||||
|             switch (autocompleteAction) { | ||||
|                 case AutocompleteAction.CompleteOrPrevSelection: | ||||
|                 case AutocompleteAction.PrevSelection: | ||||
|                     autoComplete.selectPreviousSelection(); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 case AutocompleteAction.CompleteOrNextSelection: | ||||
|                 case AutocompleteAction.NextSelection: | ||||
|                     autoComplete.selectNextSelection(); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 case AutocompleteAction.Cancel: | ||||
|                     autoComplete.onEscape(event); | ||||
|                     handled = true; | ||||
|                     break; | ||||
|                 default: | ||||
|                     return; // don't preventDefault on anything else
 | ||||
|             } | ||||
|         } else if (autocompleteAction === AutocompleteAction.CompleteOrPrevSelection | ||||
|             || autocompleteAction === AutocompleteAction.CompleteOrNextSelection) { | ||||
|             // there is no current autocomplete window, try to open it
 | ||||
|             this.tabCompleteName(); | ||||
|             handled = true; | ||||
|         } else if (event.key === Key.BACKSPACE || event.key === Key.DELETE) { | ||||
|             this.formatBarRef.current.hide(); | ||||
|         } | ||||
| 
 | ||||
|         if (handled) { | ||||
|             event.preventDefault(); | ||||
|             event.stopPropagation(); | ||||
|  |  | |||
|  | @ -64,7 +64,8 @@ export default class AutocompleteWrapperModel { | |||
|         return ac && ac.countCompletions() > 0; | ||||
|     } | ||||
| 
 | ||||
|     public onEnter() { | ||||
|     public async confirmCompletion() { | ||||
|         await this.getAutocompleterComponent().onConfirmCompletion(); | ||||
|         this.updateCallback({close: true}); | ||||
|     } | ||||
| 
 | ||||
|  | @ -76,9 +77,6 @@ export default class AutocompleteWrapperModel { | |||
|         if (acComponent.countCompletions() === 0) { | ||||
|             // Force completions to show for the text currently entered
 | ||||
|             await acComponent.forceComplete(); | ||||
|         } else { | ||||
|             await acComponent.onConfirmCompletion(); | ||||
|             this.updateCallback({close: true}); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Telatynski
						Michael Telatynski