Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Unified Diff: ui/base/dragdrop/os_exchange_data_provider_aurax11.h

Issue 16271006: Drag on linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Document Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/base/dragdrop/os_exchange_data_provider_aurax11.h
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
index 6bc28acedddd9765bcb53c7200ffd10838c42f7b..04f71bbff9ef0333958aed210dfd8237bf18c5e4 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
@@ -26,19 +26,16 @@
namespace ui {
class Clipboard;
-class DesktopSelectionProviderAuraX11;
// OSExchangeData::Provider implementation for aura on linux.
class UI_EXPORT OSExchangeDataProviderAuraX11
: public OSExchangeData::Provider,
public base::MessagePumpDispatcher {
public:
- // Creates a Provider for drag receiving. |x_window| is the window the cursor
- // is over, and |targets| are the MIME types being offered by the other
- // process.
- OSExchangeDataProviderAuraX11(ui::DesktopSelectionProviderAuraX11* provider,
- ::Window x_window,
- const std::vector< ::Atom> targets);
+ // |x_window| is the window the cursor is over, and |selection| is the set of
+ // data being offered.
+ OSExchangeDataProviderAuraX11(::Window x_window,
+ scoped_ptr<SelectionFormatMap> selection);
// Creates a Provider for sending drag information. This creates its own,
// hidden X11 window to own send data.
@@ -46,9 +43,16 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
virtual ~OSExchangeDataProviderAuraX11();
- // If we are receiving, we receive messages from a DesktopRootWindowHost
- // through this interface.
- void OnSelectionNotify(const XSelectionEvent& event);
+ // After all the Set* methods have built up the data we're offering, call
+ // this to take ownership of the XdndSelection clipboard.
+ void TakeOwnershipOfSelection() const;
+
+ // Retrieves a list of types we're offering. Noop if we haven't taken the
+ // selection.
+ void RetrieveTargets(std::vector<Atom>* targets) const;
+
+ // Makes a copy of the format map currently being offered.
+ scoped_ptr<SelectionFormatMap> CloneFormatMap() const;
// Overridden from OSExchangeData::Provider:
virtual void SetString(const string16& data) OVERRIDE;
@@ -89,6 +93,9 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
// parsed as a URL.
bool GetPlainTextURL(GURL* url) const;
+ // Returns the targets in |format_map_|.
+ std::vector< ::Atom> GetTargets() const;
+
// Drag image and offset data.
gfx::ImageSkia drag_image_;
gfx::Vector2d drag_image_offset_;
@@ -105,19 +112,17 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
// our own xwindow just to receive events on it.
const bool own_window_;
- // When we don't own the window, we keep track of the object that does so we
- // can receive messages from it.
- ui::DesktopSelectionProviderAuraX11* selection_event_provider_;
-
::Window x_window_;
X11AtomCache atom_cache_;
- mutable SelectionRequestor selection_requestor_;
- mutable SelectionOwner selection_owner_;
+ // A representation of data. This is either passed to us from the other
+ // process, or built up through a sequence of Set*() calls. It can be passed
+ // to |selection_owner_| when we take the selection.
+ scoped_ptr<SelectionFormatMap> format_map_;
- // The mime types we have been offered by the source window.
- std::vector< ::Atom> targets_;
+ // Takes a snapshot of |format_map_| and offers it to other windows.
+ mutable SelectionOwner selection_owner_;
DISALLOW_COPY_AND_ASSIGN(OSExchangeDataProviderAuraX11);
};
« no previous file with comments | « ui/base/dragdrop/desktop_selection_provider_aurax11.h ('k') | ui/base/dragdrop/os_exchange_data_provider_aurax11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698