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:
Rene Gollent
2009-07-14 22:42:15 +00:00
parent 9e1a62419e
commit 6c6e9cdb1a
3 changed files with 50 additions and 38 deletions
@@ -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();