mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 07:00:46 +00:00
Implemented methods to move to the end/beginning of document/line, to move
forward/backward a word, and to select the current line git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@11774 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
2288141aab
commit
832cd40f79
1 changed files with 115 additions and 0 deletions
|
@ -2493,6 +2493,121 @@ afterString in order over charRange. */
|
|||
[self setSelectedRange: NSMakeRange (newLocation, 0)];
|
||||
}
|
||||
|
||||
- (void) moveToBeginningOfDocument: (id)sender
|
||||
{
|
||||
[self setSelectedRange: NSMakeRange (0,0)];
|
||||
}
|
||||
|
||||
- (void) moveToBeginningOfLine: (id)sender
|
||||
{
|
||||
NSRange aRange;
|
||||
NSRect ignored;
|
||||
|
||||
/* We do nothing if we are at the beginning of the text. */
|
||||
if (_selected_range.location == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ignored = [_layoutManager lineFragmentRectForGlyphAtIndex:
|
||||
_selected_range.location
|
||||
effectiveRange: &aRange];
|
||||
|
||||
[self setSelectedRange: NSMakeRange (aRange.location, 0)];
|
||||
}
|
||||
|
||||
- (void) moveToEndOfDocument: (id)sender
|
||||
{
|
||||
unsigned length = [_textStorage length];
|
||||
|
||||
if (length > 0)
|
||||
{
|
||||
[self setSelectedRange: NSMakeRange (length, 0)];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self setSelectedRange: NSMakeRange (0, 0)];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) moveToEndOfLine: (id)sender
|
||||
{
|
||||
NSRange aRange;
|
||||
NSRect ignored;
|
||||
|
||||
/* We do nothing if we are at the end of the text. */
|
||||
if (_selected_range.location == [_textStorage length])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ignored = [_layoutManager lineFragmentRectForGlyphAtIndex:
|
||||
_selected_range.location
|
||||
effectiveRange: &aRange];
|
||||
|
||||
/* FIXME the following */
|
||||
if (NSMaxRange (aRange) == [_textStorage length])
|
||||
{
|
||||
[self setSelectedRange: NSMakeRange (NSMaxRange (aRange), 0) ];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self setSelectedRange: NSMakeRange ((NSMaxRange (aRange)) - 1, 0) ];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) moveWordBackward: (id)sender
|
||||
{
|
||||
if (_selected_range.location == 0 || [_textStorage length] == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
i = [_textStorage nextWordFromIndex: _selected_range.location
|
||||
forward: NO];
|
||||
[self setSelectedRange: NSMakeRange (i, 0)];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) moveWordForward: (id)sender
|
||||
{
|
||||
unsigned int length;
|
||||
|
||||
length = [_textStorage length];
|
||||
|
||||
if (_selected_range.location == length || length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
i = [_textStorage nextWordFromIndex: _selected_range.location
|
||||
forward: YES];
|
||||
[self setSelectedRange: NSMakeRange (i, 0)];
|
||||
}
|
||||
}
|
||||
|
||||
/* -selectAll: inherited from NSText */
|
||||
|
||||
- (void) selectLine: (id)sender
|
||||
{
|
||||
if ( [_textStorage length] > 0 )
|
||||
{
|
||||
NSRange aRange;
|
||||
NSRect ignored;
|
||||
|
||||
ignored = [_layoutManager lineFragmentRectForGlyphAtIndex:
|
||||
_selected_range.location
|
||||
effectiveRange: &aRange];
|
||||
|
||||
[self setSelectedRange: aRange];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) acceptsFirstResponder
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue