Rework copy message dispatching to auto-dispatch to the focus view rather than targetting the textview specifically.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31571 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -213,6 +213,7 @@ public:
|
|||||||
|
|
||||||
virtual void KeyDown(const char* bytes, int32 numBytes);
|
virtual void KeyDown(const char* bytes, int32 numBytes);
|
||||||
virtual void MakeFocus(bool isFocused);
|
virtual void MakeFocus(bool isFocused);
|
||||||
|
virtual void MessageReceived(BMessage* message);
|
||||||
virtual void MouseDown(BPoint where);
|
virtual void MouseDown(BPoint where);
|
||||||
virtual void MouseMoved(BPoint where, uint32 transit,
|
virtual void MouseMoved(BPoint where, uint32 transit,
|
||||||
const BMessage* dragMessage);
|
const BMessage* dragMessage);
|
||||||
@@ -947,6 +948,22 @@ SourceView::TextView::MakeFocus(bool isFocused)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
SourceView::TextView::MessageReceived(BMessage* message)
|
||||||
|
{
|
||||||
|
switch (message->what)
|
||||||
|
{
|
||||||
|
case B_COPY:
|
||||||
|
CopySelectionToClipboard();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
SourceView::BaseView::MessageReceived(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SourceView::TextView::MouseDown(BPoint where)
|
SourceView::TextView::MouseDown(BPoint where)
|
||||||
{
|
{
|
||||||
@@ -1337,21 +1354,6 @@ SourceView::TargetedByScrollView(BScrollView* scrollView)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
SourceView::MessageReceived(BMessage* message)
|
|
||||||
{
|
|
||||||
switch (message->what)
|
|
||||||
{
|
|
||||||
case B_COPY:
|
|
||||||
fTextView->CopySelectionToClipboard();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
BView::MessageReceived(message);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BSize
|
BSize
|
||||||
SourceView::MinSize()
|
SourceView::MinSize()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ public:
|
|||||||
|
|
||||||
void HighlightBorder(bool state);
|
void HighlightBorder(bool state);
|
||||||
virtual void TargetedByScrollView(BScrollView* scrollView);
|
virtual void TargetedByScrollView(BScrollView* scrollView);
|
||||||
virtual void MessageReceived(BMessage *message);
|
|
||||||
|
|
||||||
virtual BSize MinSize();
|
virtual BSize MinSize();
|
||||||
virtual BSize MaxSize();
|
virtual BSize MaxSize();
|
||||||
|
|||||||
@@ -117,29 +117,40 @@ void
|
|||||||
TeamWindow::DispatchMessage(BMessage* message, BHandler* handler)
|
TeamWindow::DispatchMessage(BMessage* message, BHandler* handler)
|
||||||
{
|
{
|
||||||
// Handle function key shortcuts for stepping
|
// Handle function key shortcuts for stepping
|
||||||
if (fActiveThread != NULL && message->what == B_KEY_DOWN) {
|
switch (message->what) {
|
||||||
int32 key;
|
case B_KEY_DOWN:
|
||||||
uint32 modifiers;
|
if (fActiveThread != NULL) {
|
||||||
if (message->FindInt32("key", &key) == B_OK
|
int32 key;
|
||||||
&& message->FindInt32("modifiers", (int32*)&modifiers) == B_OK) {
|
uint32 modifiers;
|
||||||
switch (key) {
|
if (message->FindInt32("key", &key) == B_OK
|
||||||
case B_F10_KEY:
|
&& message->FindInt32("modifiers", (int32*)&modifiers)
|
||||||
fListener->ThreadActionRequested(this, fActiveThread->ID(),
|
== B_OK) {
|
||||||
MSG_THREAD_STEP_OVER);
|
switch (key) {
|
||||||
break;
|
case B_F10_KEY:
|
||||||
case B_F11_KEY:
|
fListener->ThreadActionRequested(this,
|
||||||
if ((modifiers & B_SHIFT_KEY) != 0) {
|
fActiveThread->ID(), MSG_THREAD_STEP_OVER);
|
||||||
fListener->ThreadActionRequested(this,
|
break;
|
||||||
fActiveThread->ID(), MSG_THREAD_STEP_OUT);
|
case B_F11_KEY:
|
||||||
} else {
|
if ((modifiers & B_SHIFT_KEY) != 0) {
|
||||||
fListener->ThreadActionRequested(this,
|
fListener->ThreadActionRequested(this,
|
||||||
fActiveThread->ID(), MSG_THREAD_STEP_INTO);
|
fActiveThread->ID(), MSG_THREAD_STEP_OUT);
|
||||||
|
} else {
|
||||||
|
fListener->ThreadActionRequested(this,
|
||||||
|
fActiveThread->ID(), MSG_THREAD_STEP_INTO);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
|
||||||
|
case B_COPY:
|
||||||
|
BView* focusView = CurrentFocus();
|
||||||
|
if (focusView != NULL)
|
||||||
|
focusView->MessageReceived(message);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
BWindow::DispatchMessage(message, handler);
|
BWindow::DispatchMessage(message, handler);
|
||||||
}
|
}
|
||||||
@@ -401,7 +412,7 @@ TeamWindow::_Init()
|
|||||||
fMenuBar->AddItem(menu);
|
fMenuBar->AddItem(menu);
|
||||||
item = new BMenuItem("Copy", new BMessage(B_COPY), 'C');
|
item = new BMenuItem("Copy", new BMessage(B_COPY), 'C');
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
item->SetTarget(fSourceView);
|
item->SetTarget(this);
|
||||||
|
|
||||||
AutoLocker<TeamDebugModel> locker(fDebugModel);
|
AutoLocker<TeamDebugModel> locker(fDebugModel);
|
||||||
_UpdateRunButtons();
|
_UpdateRunButtons();
|
||||||
|
|||||||
Reference in New Issue
Block a user