DeskCalc: use an autolock to simplify clipboard handling.
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
#include <Alert.h>
|
#include <Alert.h>
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <AppFileInfo.h>
|
#include <AppFileInfo.h>
|
||||||
|
#include <AutoLocker.h>
|
||||||
#include <Beep.h>
|
#include <Beep.h>
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
@@ -174,6 +175,9 @@ struct CalcView::CalcKey {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef AutoLocker<BClipboard> ClipboardLocker;
|
||||||
|
|
||||||
|
|
||||||
CalcView*
|
CalcView*
|
||||||
CalcView::Instantiate(BMessage* archive)
|
CalcView::Instantiate(BMessage* archive)
|
||||||
{
|
{
|
||||||
@@ -344,14 +348,16 @@ CalcView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
// handle paste
|
// handle paste
|
||||||
case B_PASTE:
|
case B_PASTE:
|
||||||
|
{
|
||||||
// access system clipboard
|
// access system clipboard
|
||||||
if (be_clipboard->Lock()) {
|
ClipboardLocker locker(be_clipboard);
|
||||||
|
if (locker.Lock()) {
|
||||||
BMessage* clipper = be_clipboard->Data();
|
BMessage* clipper = be_clipboard->Data();
|
||||||
//clipper->PrintToStream();
|
if (clipper)
|
||||||
Paste(clipper);
|
Paste(clipper);
|
||||||
be_clipboard->Unlock();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// (replicant) about box requested
|
// (replicant) about box requested
|
||||||
case B_ABOUT_REQUESTED:
|
case B_ABOUT_REQUESTED:
|
||||||
@@ -802,7 +808,8 @@ void
|
|||||||
CalcView::Copy()
|
CalcView::Copy()
|
||||||
{
|
{
|
||||||
// access system clipboard
|
// access system clipboard
|
||||||
if (!be_clipboard->Lock())
|
ClipboardLocker locker(be_clipboard);
|
||||||
|
if (!locker.Lock())
|
||||||
return;
|
return;
|
||||||
if (be_clipboard->Clear() != B_OK)
|
if (be_clipboard->Clear() != B_OK)
|
||||||
return;
|
return;
|
||||||
@@ -818,7 +825,6 @@ CalcView::Copy()
|
|||||||
clipper->what = B_MIME_DATA;
|
clipper->what = B_MIME_DATA;
|
||||||
be_clipboard->Commit();
|
be_clipboard->Commit();
|
||||||
}
|
}
|
||||||
be_clipboard->Unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user