Index: ui/base/x/selection_owner.cc |
diff --git a/ui/base/x/selection_owner.cc b/ui/base/x/selection_owner.cc |
index c30187e1991e279ef22bcaf156f4f707fc59a8cb..1664e5912e334d90304b56499f305c3ff97aa592 100644 |
--- a/ui/base/x/selection_owner.cc |
+++ b/ui/base/x/selection_owner.cc |
@@ -31,9 +31,9 @@ const char* kAtomsToCache[] = { |
// Gets the value of an atom pair array property. On success, true is returned |
// and the value is stored in |value|. |
bool GetAtomPairArrayProperty(XID window, |
- Atom property, |
- std::vector<std::pair<Atom,Atom> >* value) { |
- Atom type = None; |
+ XAtom property, |
+ std::vector<std::pair<XAtom,XAtom> >* value) { |
+ XAtom type = None; |
int format = 0; // size in bits of each item in 'property' |
unsigned long num_items = 0; |
unsigned char* properties = NULL; |
@@ -62,7 +62,7 @@ bool GetAtomPairArrayProperty(XID window, |
return false; |
} |
- Atom* atom_properties = reinterpret_cast<Atom*>(properties); |
+ XAtom* atom_properties = reinterpret_cast<XAtom*>(properties); |
value->clear(); |
for (size_t i = 0; i < num_items; i+=2) |
value->push_back(std::make_pair(atom_properties[i], atom_properties[i+1])); |
@@ -72,9 +72,9 @@ bool GetAtomPairArrayProperty(XID window, |
} // namespace |
-SelectionOwner::SelectionOwner(Display* x_display, |
- Window x_window, |
- Atom selection_name) |
+SelectionOwner::SelectionOwner(XDisplay* x_display, |
+ XID x_window, |
+ XAtom selection_name) |
: x_display_(x_display), |
x_window_(x_window), |
selection_name_(selection_name), |
@@ -89,7 +89,7 @@ SelectionOwner::~SelectionOwner() { |
XSetSelectionOwner(x_display_, selection_name_, None, CurrentTime); |
} |
-void SelectionOwner::RetrieveTargets(std::vector<Atom>* targets) { |
+void SelectionOwner::RetrieveTargets(std::vector<XAtom>* targets) { |
for (SelectionFormatMap::const_iterator it = format_map_.begin(); |
it != format_map_.end(); ++it) { |
targets->push_back(it->first); |
@@ -111,28 +111,32 @@ void SelectionOwner::ClearSelectionOwner() { |
format_map_ = SelectionFormatMap(); |
} |
-void SelectionOwner::OnSelectionRequest(const XSelectionRequestEvent& event) { |
+void SelectionOwner::OnSelectionRequest(const XEvent& event) { |
+ XID requestor = event.xselectionrequest.requestor; |
+ XAtom requested_target = event.xselectionrequest.target; |
+ XAtom requested_property = event.xselectionrequest.property; |
+ |
// Incrementally build our selection. By default this is a refusal, and we'll |
// override the parts indicating success in the different cases. |
XEvent reply; |
reply.xselection.type = SelectionNotify; |
- reply.xselection.requestor = event.requestor; |
- reply.xselection.selection = event.selection; |
- reply.xselection.target = event.target; |
+ reply.xselection.requestor = requestor; |
+ reply.xselection.selection = event.xselectionrequest.selection; |
+ reply.xselection.target = requested_target; |
reply.xselection.property = None; // Indicates failure |
- reply.xselection.time = event.time; |
+ reply.xselection.time = event.xselectionrequest.time; |
- if (event.target == atom_cache_.GetAtom(kMultiple)) { |
- // The contents of |event.property| should be a list of |
+ if (requested_target == atom_cache_.GetAtom(kMultiple)) { |
+ // The contents of |requested_property| should be a list of |
// <target,property> pairs. |
- std::vector<std::pair<Atom,Atom> > conversions; |
- if (GetAtomPairArrayProperty(event.requestor, |
- event.property, |
+ std::vector<std::pair<XAtom,XAtom> > conversions; |
+ if (GetAtomPairArrayProperty(requestor, |
+ requested_property, |
&conversions)) { |
- std::vector<Atom> conversion_results; |
+ std::vector<XAtom> conversion_results; |
for (size_t i = 0; i < conversions.size(); ++i) { |
bool conversion_successful = ProcessTarget(conversions[i].first, |
- event.requestor, |
+ requestor, |
conversions[i].second); |
conversion_results.push_back(conversions[i].first); |
conversion_results.push_back( |
@@ -143,38 +147,38 @@ void SelectionOwner::OnSelectionRequest(const XSelectionRequestEvent& event) { |
// what GTK does. |
XChangeProperty( |
x_display_, |
- event.requestor, |
- event.property, |
+ requestor, |
+ requested_property, |
atom_cache_.GetAtom(kAtomPair), |
32, |
PropModeReplace, |
reinterpret_cast<const unsigned char*>(&conversion_results.front()), |
conversion_results.size()); |
- reply.xselection.property = event.property; |
+ reply.xselection.property = requested_property; |
} |
} else { |
- if (ProcessTarget(event.target, event.requestor, event.property)) |
- reply.xselection.property = event.property; |
+ if (ProcessTarget(requested_target, requestor, requested_property)) |
+ reply.xselection.property = requested_property; |
} |
// Send off the reply. |
- XSendEvent(x_display_, event.requestor, False, 0, &reply); |
+ XSendEvent(x_display_, requestor, False, 0, &reply); |
} |
-void SelectionOwner::OnSelectionClear(const XSelectionClearEvent& event) { |
+void SelectionOwner::OnSelectionClear(const XEvent& event) { |
DLOG(ERROR) << "SelectionClear"; |
// TODO(erg): If we receive a SelectionClear event while we're handling data, |
// we need to delay clearing. |
} |
-bool SelectionOwner::ProcessTarget(Atom target, |
- ::Window requestor, |
- ::Atom property) { |
- Atom multiple_atom = atom_cache_.GetAtom(kMultiple); |
- Atom save_targets_atom = atom_cache_.GetAtom(kSaveTargets); |
- Atom targets_atom = atom_cache_.GetAtom(kTargets); |
+bool SelectionOwner::ProcessTarget(XAtom target, |
+ XID requestor, |
+ XAtom property) { |
+ XAtom multiple_atom = atom_cache_.GetAtom(kMultiple); |
+ XAtom save_targets_atom = atom_cache_.GetAtom(kSaveTargets); |
+ XAtom targets_atom = atom_cache_.GetAtom(kTargets); |
if (target == multiple_atom || target == save_targets_atom) |
return false; |
@@ -182,7 +186,7 @@ bool SelectionOwner::ProcessTarget(Atom target, |
if (target == targets_atom) { |
// We have been asked for TARGETS. Send an atom array back with the data |
// types we support. |
- std::vector<Atom> targets; |
+ std::vector<XAtom> targets; |
targets.push_back(targets_atom); |
targets.push_back(save_targets_atom); |
targets.push_back(multiple_atom); |
@@ -212,4 +216,3 @@ bool SelectionOwner::ProcessTarget(Atom target, |
} |
} // namespace ui |
- |