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

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

Issue 396813004: Make selection_owner.h not include Xlib.h for consistency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | « ui/base/x/selection_owner.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
-
« no previous file with comments | « ui/base/x/selection_owner.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698