Scrolling didn't work correctly if the user didn't move the mouse all
the time. Fixed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21868 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -90,23 +90,10 @@ enum {
|
|||||||
|
|
||||||
class _BTextTrackState_ {
|
class _BTextTrackState_ {
|
||||||
public:
|
public:
|
||||||
_BTextTrackState_(BMessenger messenger)
|
_BTextTrackState_(BMessenger messenger);
|
||||||
:
|
~_BTextTrackState_();
|
||||||
clickOffset(0),
|
|
||||||
shiftDown(false),
|
|
||||||
anchor(0),
|
|
||||||
selStart(0),
|
|
||||||
selEnd(0),
|
|
||||||
fRunner(NULL)
|
|
||||||
{
|
|
||||||
BMessage message(_PING_);
|
|
||||||
fRunner = new (nothrow) BMessageRunner(messenger, &message, 300000);
|
|
||||||
}
|
|
||||||
|
|
||||||
~_BTextTrackState_()
|
void SimulateMouseMovement(BTextView *view);
|
||||||
{
|
|
||||||
delete fRunner;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 clickOffset;
|
int32 clickOffset;
|
||||||
bool shiftDown;
|
bool shiftDown;
|
||||||
@@ -906,8 +893,10 @@ BTextView::MessageReceived(BMessage *message)
|
|||||||
delete fClickRunner;
|
delete fClickRunner;
|
||||||
fClickRunner = NULL;
|
fClickRunner = NULL;
|
||||||
}
|
}
|
||||||
} else
|
} else if (fTrackingMouse) {
|
||||||
|
fTrackingMouse->SimulateMouseMovement(this);
|
||||||
PerformAutoScrolling();
|
PerformAutoScrolling();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4539,3 +4528,39 @@ BTextView::UnlockWidthBuffer()
|
|||||||
if (atomic_add(&sWidthAtom, -1) > 1)
|
if (atomic_add(&sWidthAtom, -1) > 1)
|
||||||
release_sem(sWidthSem);
|
release_sem(sWidthSem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// _BTextTrackState_
|
||||||
|
_BTextTrackState_::_BTextTrackState_(BMessenger messenger)
|
||||||
|
:
|
||||||
|
clickOffset(0),
|
||||||
|
shiftDown(false),
|
||||||
|
anchor(0),
|
||||||
|
selStart(0),
|
||||||
|
selEnd(0),
|
||||||
|
fRunner(NULL)
|
||||||
|
{
|
||||||
|
BMessage message(_PING_);
|
||||||
|
fRunner = new (nothrow) BMessageRunner(messenger, &message, 300000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_BTextTrackState_::~_BTextTrackState_()
|
||||||
|
{
|
||||||
|
delete fRunner;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
_BTextTrackState_::SimulateMouseMovement(BTextView *textView)
|
||||||
|
{
|
||||||
|
BPoint where;
|
||||||
|
ulong buttons;
|
||||||
|
// When the mouse cursor is still and outside the textview,
|
||||||
|
// no B_MOUSE_MOVED message are sent, obviously. But scrolling
|
||||||
|
// has to work neverthless, so we "fake" a MouseMoved() call here.
|
||||||
|
textView->GetMouse(&where, &buttons);
|
||||||
|
textView->PerformMouseMoved(where, B_INSIDE_VIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user