DeskCalc: use an autolock to simplify clipboard handling.

This commit is contained in:
Adrien Destugues
2020-01-26 11:23:41 +01:00
parent 190d0372b3
commit f8969c78e5
+12 -6
View File
@@ -23,6 +23,7 @@
#include <Alert.h>
#include <Application.h>
#include <AppFileInfo.h>
#include <AutoLocker.h>
#include <Beep.h>
#include <Bitmap.h>
#include <Catalog.h>
@@ -174,6 +175,9 @@ struct CalcView::CalcKey {
};
typedef AutoLocker<BClipboard> ClipboardLocker;
CalcView*
CalcView::Instantiate(BMessage* archive)
{
@@ -344,14 +348,16 @@ CalcView::MessageReceived(BMessage* message)
// handle paste
case B_PASTE:
{
// access system clipboard
if (be_clipboard->Lock()) {
ClipboardLocker locker(be_clipboard);
if (locker.Lock()) {
BMessage* clipper = be_clipboard->Data();
//clipper->PrintToStream();
Paste(clipper);
be_clipboard->Unlock();
if (clipper)
Paste(clipper);
}
break;
}
// (replicant) about box requested
case B_ABOUT_REQUESTED:
@@ -802,7 +808,8 @@ void
CalcView::Copy()
{
// access system clipboard
if (!be_clipboard->Lock())
ClipboardLocker locker(be_clipboard);
if (!locker.Lock())
return;
if (be_clipboard->Clear() != B_OK)
return;
@@ -818,7 +825,6 @@ CalcView::Copy()
clipper->what = B_MIME_DATA;
be_clipboard->Commit();
}
be_clipboard->Unlock();
}