void*
pointers, no SendMessage()
nightmare is needed to manage Ferry editors;The table below classifies Ferry public API regarding thread-safety and reentrancy.
Ferry global functions fe::DecoratorStub fe::DecoratorFilterStub fe::EditorFacadeListenerStub fe::EditorFacadePeerBase fe::FeError fe::PeerBase | Thread-safe & reentrant. |
fe::CachingTextIterator fe::CharClassConfigurator fe::EditorFacadeListenerProxy fe::enc_traits_utf16 fe::enc_traits_utf8 fe::ProxyBase fe::SingleItemStringSource fe::TextIteratorProxy fe::UTF32Iterator fe::ActionGroupTrigger fe::ReadOnlyTrigger | Thread-unsafe & non-reentrant. |
fe::IEditorFacade | Ferry Core library provides thread-safe & reentrant implementation - fe::EditorFacadePeerBase. |
fe::IExtension fe::IExtensionFactory fe::IDecoratorExtensionFactory fe::IScintillaDecoratorFactory fe::ITextScalerFactory fe::ICharacterDecoratorFactory fe::IColorerDecoratorFactory | Ferry Extensions library provides thread-safe & reentrant implementations of these interfaces. User-supplied implementations of these interfaces, intended for use with Ferry API only, may be thread-unsafe & non-reentrant. |
fe::IDecorator fe::IDecoratorFilter fe::IDecoratorListener fe::IFontEnumerator fe::IFontMapper fe::IPluggable fe::IStringSource fe::ISubstringDecorator fe::ISubstringFiller | Ferry Core library and Ferry Extensions library provide thread-unsafe & non-reentrant implementations of these interfaces. User-supplied implementations of these interfaces, intended for use with Ferry API only, may be thread-unsafe & non-reentrant as well. |
fe::ITextIterator | There is a number of default implementations of this interface. Though the only one is thread-safe and reentrant. It is available through fe::EditorFacadePeerBase::createTextIterator() call. |
fe::IEditorFacadeListener fe::IEditorFacadeTask | User-supplied implementations of these interfaces, intended for use with Ferry API only, may be thread-unsafe & non-reentrant. |
fe::ICharacterClass fe::ICharacterClassBuilder | Objects of fe::ICharacterClassBuilder type created with fe::ICharacterDecoratorFactory::createCharacterClassBuilder() calls applyed on the factory created with Fe_CreateCharacterDecoratorFactory() call are thread-safe and reentrant. fe::ICharacterClassBuilder::createCharacterClass() called on such objects returns pointer to thread-safe and reentrant implementation of fe::ICharacterClass interface. User-supplied implementations of these interfaces, intended for use with Ferry API only, may be thread-unsafe & non-reentrant. |
Ctrl+C | Copy selected text to a clipboard. |
Ctrl+X | Cut selected text to a clipboard. |
Ctrl+V | Copy text from a clipboard at the cursor position. |
Ctrl+Z | Undo last editing action. |
Ctrl+Shift+Z | Reapply last editing action. |
Ctrl+Y | Reapply last editing action. |
Right | Move cursor to the next character. |
Ctrl+Right | Move cursor to the next word. |
Shift+Right | Move cursor to the next character and expand selection. |
Ctrl+Shift+Right | Move cursor to the next word and expand selection. |
Left | Move cursor to the previous character. |
Ctrl+Left | Move cursor to the previous word. |
Shift+Left | Move cursor to the previous character and expand selection. |
Ctrl+Shift+Left | Move cursor to the previous word and expand selection. |
End | Move cursor to the last character in the current text line. |
Ctrl+End | Move cursor to the last character in the text. |
Shift+End | Move cursor to the last character in the current text line and expand selection. |
Ctrl+Shift+End | Move cursor to the last character in the text and expand selection. |
Home | Move cursor to the first character in the current text line. |
Ctrl+Home | Move cursor to the first character in the text. |
Shift+Home | Move cursor to the first character in the current text line and expand selection. |
Ctrl+Shift+Home | Move cursor to the first character in the text and expand selection. |
Up | Move cursor one text line up. |
Ctrl+Up | Move cursor one page up. |
PageUp | Move cursor one page up. |
Shift+Up | Move cursor one text line up and expand selection. |
Ctrl+Shift+Up | Move cursor one page up and expand selection. |
Shift+PageUp | Move cursor one page up and expand selection. |
Down | Move cursor one text line down. |
Ctrl+Down | Move cursor one page down. |
PageDown | Move cursor one page down. |
Shift+Down | Move cursor one text line down and expand selection. |
Ctrl+Shift+Down | Move cursor one page down and expand selection. |
Shift+PageDown | Move cursor one page down and expand selection. |
Delete | Deletes selected text. If selection is empty deletes a number of characters that shape a single grapheme cluster starting from the current character.
|
Backspace | Deletes selected text. If selection is empty deletes the previous character. |
Enter | Deletes selected text if any and inserts hard text line break at the cursor position. |
Insert | Switchs between overtype or insert text editing mode. |