21
21
#include " app/modules/editors.h"
22
22
#include " app/modules/gfx.h"
23
23
#include " app/modules/gui.h"
24
+ #include " app/pref/preferences.h"
24
25
#include " app/transaction.h"
25
26
#include " app/ui/color_bar.h"
26
27
#include " app/ui/editor/editor.h"
31
32
#include " app/util/clipboard_native.h"
32
33
#include " app/util/new_image_from_mask.h"
33
34
#include " base/shared_ptr.h"
35
+ #include " clip/clip.h"
34
36
#include " doc/doc.h"
35
37
#include " render/ordered_dither.h"
36
38
#include " render/quantization.h"
@@ -99,6 +101,16 @@ static ClipboardRange clipboard_range;
99
101
100
102
static ClipboardManager* g_instance = nullptr ;
101
103
104
+ static bool use_native_clipboard ()
105
+ {
106
+ return Preferences::instance ().experimental .useNativeClipboard ();
107
+ }
108
+
109
+ ClipboardManager* ClipboardManager::instance ()
110
+ {
111
+ return g_instance;
112
+ }
113
+
102
114
ClipboardManager::ClipboardManager ()
103
115
{
104
116
ASSERT (!g_instance);
@@ -123,9 +135,25 @@ ClipboardManager::~ClipboardManager()
123
135
g_instance = nullptr ;
124
136
}
125
137
126
- ClipboardManager* ClipboardManager::instance ( )
138
+ void ClipboardManager::setClipboardText ( const std::string& text )
127
139
{
128
- return g_instance;
140
+ if (use_native_clipboard ()) {
141
+ clip::set_text (text);
142
+ }
143
+ else {
144
+ m_text = text;
145
+ }
146
+ }
147
+
148
+ bool ClipboardManager::getClipboardText (std::string& text)
149
+ {
150
+ if (use_native_clipboard ()) {
151
+ return clip::get_text (text);
152
+ }
153
+ else {
154
+ text = m_text;
155
+ return true ;
156
+ }
129
157
}
130
158
131
159
static void set_clipboard_image (Image* image,
@@ -148,7 +176,8 @@ static void set_clipboard_image(Image* image,
148
176
image->setMaskColor (-1 );
149
177
}
150
178
151
- set_native_clipboard_bitmap (image, mask, palette);
179
+ if (use_native_clipboard ())
180
+ set_native_clipboard_bitmap (image, mask, palette);
152
181
153
182
if (image && !image_source_is_transparent)
154
183
image->setMaskColor (oldMask);
@@ -181,7 +210,8 @@ static bool copy_from_document(const Site& site, bool merged = false)
181
210
ClipboardFormat get_current_format ()
182
211
{
183
212
// Check if the native clipboard has an image
184
- if (has_native_clipboard_bitmap ())
213
+ if (use_native_clipboard () &&
214
+ has_native_clipboard_bitmap ())
185
215
return ClipboardImage;
186
216
else if (clipboard_image)
187
217
return ClipboardImage;
@@ -302,8 +332,8 @@ void paste()
302
332
switch (get_current_format ()) {
303
333
304
334
case clipboard::ClipboardImage: {
305
- // Get the image from the clipboard.
306
- {
335
+ // Get the image from the native clipboard.
336
+ if ( use_native_clipboard ()) {
307
337
Image* native_image = nullptr ;
308
338
Mask* native_mask = nullptr ;
309
339
Palette* native_palette = nullptr ;
@@ -567,15 +597,16 @@ void paste()
567
597
bool get_image_size (gfx::Size & size)
568
598
{
569
599
#if defined(_WIN32) || defined(__APPLE__)
570
- if (get_native_clipboard_bitmap_size (&size))
600
+ if (use_native_clipboard () &&
601
+ get_native_clipboard_bitmap_size (&size))
571
602
return true ;
572
- #else
603
+ #endif
604
+
573
605
if (clipboard_image) {
574
606
size.w = clipboard_image->width ();
575
607
size.h = clipboard_image->height ();
576
608
return true ;
577
609
}
578
- #endif
579
610
580
611
return false ;
581
612
}
0 commit comments