Kaydet (Commit) a26d21ac authored tarafından Caolán McNamara's avatar Caolán McNamara

gtk3: implement isDataFlavorSupported

Change-Id: Ia381d26a1c6a8f22aafef924215bc64b3c3473c6
üst 83fc2cfb
...@@ -77,6 +77,19 @@ namespace ...@@ -77,6 +77,19 @@ namespace
// PIXMAP // PIXMAP
{ "PIXMAP", "image/bmp" } { "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 < class GtkTransferable : public ::cppu::WeakImplHelper1 <
...@@ -131,12 +144,12 @@ public: ...@@ -131,12 +144,12 @@ public:
return aRet; return aRet;
} }
virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) std::vector<css::datatransfer::DataFlavor> getTransferDataFlavorsAsVector()
throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE
{ {
std::vector<css::datatransfer::DataFlavor> aVector;
GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
std::vector<css::datatransfer::DataFlavor> aVector;
GdkAtom *targets; GdkAtom *targets;
gint n_targets; gint n_targets;
if (gtk_clipboard_wait_for_targets(clipboard, &targets, &n_targets)) if (gtk_clipboard_wait_for_targets(clipboard, &targets, &n_targets))
...@@ -195,16 +208,22 @@ public: ...@@ -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 throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE
{ {
fprintf(stderr, "TODO isDataFlavorSupported\n"); const std::vector<css::datatransfer::DataFlavor> aAll =
getTransferDataFlavorsAsVector();
(void)aFlavor; return std::find_if(aAll.begin(), aAll.end(), DataFlavorEq(rFlavor)) != aAll.end();
return false;
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment