summaryrefslogtreecommitdiff
path: root/src/haiku_select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/haiku_select.cc')
-rw-r--r--src/haiku_select.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/haiku_select.cc b/src/haiku_select.cc
index 373ad321c4b..e047b9b5139 100644
--- a/src/haiku_select.cc
+++ b/src/haiku_select.cc
@@ -413,7 +413,7 @@ be_add_message_message (void *message, const char *name,
int
be_lock_clipboard_message (enum haiku_clipboard clipboard,
- void **message_return)
+ void **message_return, bool clear)
{
BClipboard *board;
@@ -427,12 +427,15 @@ be_lock_clipboard_message (enum haiku_clipboard clipboard,
if (!board->Lock ())
return 1;
+ if (clear)
+ board->Clear ();
+
*message_return = board->Data ();
return 0;
}
void
-be_unlock_clipboard (enum haiku_clipboard clipboard)
+be_unlock_clipboard (enum haiku_clipboard clipboard, bool discard)
{
BClipboard *board;
@@ -443,5 +446,10 @@ be_unlock_clipboard (enum haiku_clipboard clipboard)
else
board = system_clipboard;
+ if (discard)
+ board->Revert ();
+ else
+ board->Commit ();
+
board->Unlock ();
}