diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-06-18 13:56:29 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-06-18 13:57:05 +0100 |
commit | a26d21acb34d6e35a12cf8afa3cc64701f384687 (patch) | |
tree | 91d6ea3f1d36c7ac927a54dcc936afd042180c96 /vcl/unx/gtk3/app/gtk3gtkinst.cxx | |
parent | 83fc2cfb34b584f41d27a5f04dd9405cf55bd528 (diff) |
gtk3: implement isDataFlavorSupported
Change-Id: Ia381d26a1c6a8f22aafef924215bc64b3c3473c6
Diffstat (limited to 'vcl/unx/gtk3/app/gtk3gtkinst.cxx')
-rw-r--r-- | vcl/unx/gtk3/app/gtk3gtkinst.cxx | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/vcl/unx/gtk3/app/gtk3gtkinst.cxx b/vcl/unx/gtk3/app/gtk3gtkinst.cxx index cb26b26a7668..0b5ea9ffc664 100644 --- a/vcl/unx/gtk3/app/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/app/gtk3gtkinst.cxx @@ -77,6 +77,19 @@ namespace // PIXMAP { "PIXMAP", "image/bmp" } }; + + class DataFlavorEq : public std::unary_function<const css::datatransfer::DataFlavor&, bool> + { + private: + const css::datatransfer::DataFlavor& m_rData; + public: + explicit DataFlavorEq(const css::datatransfer::DataFlavor& rData) : m_rData(rData) {} + bool operator() (const css::datatransfer::DataFlavor& rData) const + { + return rData.MimeType == m_rData.MimeType && + rData.DataType == m_rData.DataType; + } + }; } class GtkTransferable : public ::cppu::WeakImplHelper1 < @@ -131,12 +144,12 @@ public: return aRet; } - virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) - throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE + std::vector<css::datatransfer::DataFlavor> getTransferDataFlavorsAsVector() { + std::vector<css::datatransfer::DataFlavor> aVector; + GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - std::vector<css::datatransfer::DataFlavor> aVector; GdkAtom *targets; gint n_targets; if (gtk_clipboard_wait_for_targets(clipboard, &targets, &n_targets)) @@ -195,16 +208,22 @@ public: } } - return comphelper::containerToSequence(aVector); + return aVector; + } + + virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() + throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE + { + return comphelper::containerToSequence(getTransferDataFlavorsAsVector()); } - virtual sal_Bool SAL_CALL isDataFlavorSupported( const css::datatransfer::DataFlavor& aFlavor ) + virtual sal_Bool SAL_CALL isDataFlavorSupported(const css::datatransfer::DataFlavor& rFlavor) throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE { - fprintf(stderr, "TODO isDataFlavorSupported\n"); + const std::vector<css::datatransfer::DataFlavor> aAll = + getTransferDataFlavorsAsVector(); - (void)aFlavor; - return false; + return std::find_if(aAll.begin(), aAll.end(), DataFlavorEq(rFlavor)) != aAll.end(); } }; |