Fixed Home/End key handling. Thanks to Andrew for reporting.
I know this won't be the last one :) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8439 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -2909,10 +2909,35 @@ void
|
|||||||
BTextView::HandlePageKey(uint32 inPageKey)
|
BTextView::HandlePageKey(uint32 inPageKey)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
|
int32 modifiers = 0;
|
||||||
|
BMessage *currentMessage = Window()->CurrentMessage();
|
||||||
|
currentMessage->FindInt32("modifiers", &modifiers);
|
||||||
|
|
||||||
|
bool shiftDown = modifiers & B_SHIFT_KEY;
|
||||||
|
|
||||||
|
int32 oldOffset;;
|
||||||
|
int32 newOffset;
|
||||||
|
|
||||||
switch (inPageKey) {
|
switch (inPageKey) {
|
||||||
case B_HOME:
|
case B_HOME:
|
||||||
|
oldOffset = fSelStart;
|
||||||
|
newOffset = 0;
|
||||||
|
ScrollToOffset(newOffset);
|
||||||
|
if (shiftDown)
|
||||||
|
Select(newOffset, oldOffset);
|
||||||
|
else
|
||||||
|
Select(newOffset, newOffset);
|
||||||
|
break;
|
||||||
|
|
||||||
case B_END:
|
case B_END:
|
||||||
ScrollToOffset((inPageKey == B_HOME) ? 0 : fText->Length());
|
oldOffset = fSelEnd;
|
||||||
|
newOffset = fText->Length();
|
||||||
|
ScrollToOffset(newOffset);
|
||||||
|
if (shiftDown)
|
||||||
|
Select(oldOffset, newOffset);
|
||||||
|
else
|
||||||
|
Select(newOffset, newOffset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case B_PAGE_UP:
|
case B_PAGE_UP:
|
||||||
|
|||||||
Reference in New Issue
Block a user