diff --git a/src/dlangui/platforms/android/androidapp.d b/src/dlangui/platforms/android/androidapp.d index ee908bd2..54217ae3 100644 --- a/src/dlangui/platforms/android/androidapp.d +++ b/src/dlangui/platforms/android/androidapp.d @@ -575,6 +575,12 @@ class AndroidPlatform : Platform { } protected dstring _clipboardText; + + /// check has clipboard text + override bool hasClipboardText(bool mouseBuffer = false) { + return (_clipboardText.length > 0); + } + /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) override dstring getClipboardText(bool mouseBuffer = false) { return _clipboardText; diff --git a/src/dlangui/platforms/common/platform.d b/src/dlangui/platforms/common/platform.d index a263f337..0cb9a792 100644 --- a/src/dlangui/platforms/common/platform.d +++ b/src/dlangui/platforms/common/platform.d @@ -1823,6 +1823,8 @@ class Platform { * When returned from this method, application is shutting down. */ abstract int enterMessageLoop(); + /// check has clipboard text + abstract bool hasClipboardText(bool mouseBuffer = false); /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) abstract dstring getClipboardText(bool mouseBuffer = false); /// sets text to clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) diff --git a/src/dlangui/platforms/console/consoleapp.d b/src/dlangui/platforms/console/consoleapp.d index f4d03fb4..eb0c746c 100644 --- a/src/dlangui/platforms/console/consoleapp.d +++ b/src/dlangui/platforms/console/consoleapp.d @@ -240,6 +240,12 @@ class ConsolePlatform : Platform { return 0; } private dstring _clipboardText; + + /// check has clipboard text + override bool hasClipboardText(bool mouseBuffer = false) { + return (_clipboardText.length > 0); + } + /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) override dstring getClipboardText(bool mouseBuffer = false) { return _clipboardText; diff --git a/src/dlangui/platforms/sdl/sdlapp.d b/src/dlangui/platforms/sdl/sdlapp.d index 046b17cf..8d3d0aaa 100644 --- a/src/dlangui/platforms/sdl/sdlapp.d +++ b/src/dlangui/platforms/sdl/sdlapp.d @@ -1462,10 +1462,13 @@ class SDLPlatform : Platform { return 0; } + /// check has clipboard text + override bool hasClipboardText(bool mouseBuffer = false) { + return (SDL_HasClipboardText() == SDL_TRUE); + } + /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) override dstring getClipboardText(bool mouseBuffer = false) { - if (!SDL_HasClipboardText()) - return ""d; char * txt = SDL_GetClipboardText(); if (!txt) return ""d; diff --git a/src/dlangui/platforms/windows/winapp.d b/src/dlangui/platforms/windows/winapp.d index 0cf7013d..d586454a 100644 --- a/src/dlangui/platforms/windows/winapp.d +++ b/src/dlangui/platforms/windows/winapp.d @@ -1158,6 +1158,13 @@ class Win32Platform : Platform { _windowsToDestroy.length = 0; } + /// check has clipboard text + override bool hasClipboardText(bool mouseBuffer = false) { + if (mouseBuffer) + return false; + return IsClipboardFormatAvailable(CF_UNICODETEXT); + } + /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) override dstring getClipboardText(bool mouseBuffer = false) { dstring res = null; diff --git a/src/dlangui/platforms/x11/x11app.d b/src/dlangui/platforms/x11/x11app.d index 43402bce..28c584dc 100644 --- a/src/dlangui/platforms/x11/x11app.d +++ b/src/dlangui/platforms/x11/x11app.d @@ -1633,6 +1633,11 @@ class X11Platform : Platform { return 0; } + /// check has clipboard text + override bool hasClipboardText(bool mouseBuffer = false) { + return (localClipboardContent.length != 0); + } + /// retrieves text from clipboard (when mouseBuffer == true, use mouse selection clipboard - under linux) override dstring getClipboardText(bool mouseBuffer = false) { return toUTF32(localClipboardContent);