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

Unified Diff: ui/base/x/selection_owner.h

Issue 2700043002: [Desktop Linux]: Fix copy and pasting long selections (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « no previous file | ui/base/x/selection_owner.cc » ('j') | ui/base/x/selection_owner.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/x/selection_owner.h
diff --git a/ui/base/x/selection_owner.h b/ui/base/x/selection_owner.h
index fd2326c9752151a0f129f7ae38cf0882812439c7..ec0ea56fc415fbc739192900e0363c7010db2eb3 100644
--- a/ui/base/x/selection_owner.h
+++ b/ui/base/x/selection_owner.h
@@ -65,10 +65,10 @@ class UI_BASE_EXPORT SelectionOwner {
IncrementalTransfer(XID window,
XAtom target,
XAtom property,
+ std::unique_ptr<XScopedEventSelector> event_selector,
const scoped_refptr<base::RefCountedMemory>& data,
int offset,
base::TimeTicks timeout);
- IncrementalTransfer(const IncrementalTransfer& other);
~IncrementalTransfer();
// Parameters from the XSelectionRequest. The data is transferred over
@@ -77,6 +77,9 @@ class UI_BASE_EXPORT SelectionOwner {
XAtom target;
XAtom property;
+ // Selects events on |window|.
+ std::unique_ptr<XScopedEventSelector> event_selector;
+
// The data to be transferred.
scoped_refptr<base::RefCountedMemory> data;
@@ -87,8 +90,13 @@ class UI_BASE_EXPORT SelectionOwner {
// Time when the transfer should be aborted because the selection requestor
// is taking too long to notify us that we can send the next chunk.
base::TimeTicks timeout;
+
+ DISALLOW_COPY_AND_ASSIGN(IncrementalTransfer);
};
+ typedef typename std::vector<std::unique_ptr<IncrementalTransfer>>::iterator
dcheng 2017/02/17 07:42:13 Nit: prefer using A = B; rather than typename B A;
pkotwicz 2017/02/17 19:19:07 Done.
+ IncrementalTransferIt;
+
// Attempts to convert the selection to |target|. If the conversion is
// successful, true is returned and the result is stored in the |property|
// of |requestor|.
@@ -101,21 +109,16 @@ class UI_BASE_EXPORT SelectionOwner {
void AbortStaleIncrementalTransfers();
// Called when the transfer at |it| has completed to do cleanup.
- void CompleteIncrementalTransfer(
- std::vector<IncrementalTransfer>::iterator it);
+ void CompleteIncrementalTransfer(IncrementalTransferIt it);
// Returns the incremental data transfer, if any, which was waiting for
// |event|.
- std::vector<IncrementalTransfer>::iterator FindIncrementalTransferForEvent(
- const XEvent& event);
+ IncrementalTransferIt FindIncrementalTransferForEvent(const XEvent& event);
// Our X11 state.
XDisplay* x_display_;
XID x_window_;
- // Events selected on the requesting window.
- std::unique_ptr<XScopedEventSelector> requestor_events_;
-
// The X11 selection that this instance communicates on.
XAtom selection_name_;
@@ -128,7 +131,7 @@ class UI_BASE_EXPORT SelectionOwner {
// The data we are currently serving.
SelectionFormatMap format_map_;
- std::vector<IncrementalTransfer> incremental_transfers_;
+ std::vector<std::unique_ptr<IncrementalTransfer>> incremental_transfers_;
dcheng 2017/02/17 07:42:13 Another possibility (to make the typename shorter)
pkotwicz 2017/02/17 19:19:07 I'd rather not implement a custom move assignment
dcheng 2017/02/17 19:21:16 That's what = default is for though =) Incrementa
// Used to abort stale incremental data transfers.
base::RepeatingTimer incremental_transfer_abort_timer_;
« no previous file with comments | « no previous file | ui/base/x/selection_owner.cc » ('j') | ui/base/x/selection_owner.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698