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

Unified Diff: trunk/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc

Issue 186123004: Revert 255385 "aura: Remove client::UserActionClient." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 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 | « trunk/src/ui/aura/window_tree_host_x11.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
===================================================================
--- trunk/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc (revision 255397)
+++ trunk/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc (working copy)
@@ -18,6 +18,7 @@
#include "third_party/skia/include/core/SkPath.h"
#include "ui/aura/client/cursor_client.h"
#include "ui/aura/client/focus_client.h"
+#include "ui/aura/client/user_action_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_property.h"
@@ -64,6 +65,10 @@
namespace {
+// Standard Linux mouse buttons for going back and forward.
+const int kBackMouseButton = 8;
+const int kForwardMouseButton = 9;
+
// Constants that are part of EWMH.
const int k_NET_WM_STATE_ADD = 1;
const int k_NET_WM_STATE_REMOVE = 0;
@@ -1296,7 +1301,20 @@
SendEventToProcessor(&keyup_event);
break;
}
- case ButtonPress:
+ case ButtonPress: {
+ if (static_cast<int>(xev->xbutton.button) == kBackMouseButton ||
+ static_cast<int>(xev->xbutton.button) == kForwardMouseButton) {
+ aura::client::UserActionClient* gesture_client =
+ aura::client::GetUserActionClient(dispatcher_->window());
+ if (gesture_client) {
+ gesture_client->OnUserAction(
+ static_cast<int>(xev->xbutton.button) == kBackMouseButton ?
+ aura::client::UserActionClient::BACK :
+ aura::client::UserActionClient::FORWARD);
+ }
+ break;
+ }
+ } // fallthrough
case ButtonRelease: {
ui::EventType event_type = ui::EventTypeFromNative(xev);
switch (event_type) {
@@ -1389,6 +1407,33 @@
num_coalesced = ui::CoalescePendingMotionEvents(xev, &last_event);
if (num_coalesced > 0)
xev = &last_event;
+ } else if (type == ui::ET_MOUSE_PRESSED) {
+ XIDeviceEvent* xievent =
+ static_cast<XIDeviceEvent*>(xev->xcookie.data);
+ int button = xievent->detail;
+ if (button == kBackMouseButton || button == kForwardMouseButton) {
+ aura::client::UserActionClient* gesture_client =
+ aura::client::GetUserActionClient(window());
+ if (gesture_client) {
+ bool reverse_direction =
+ ui::IsTouchpadEvent(xev) && ui::IsNaturalScrollEnabled();
+ gesture_client->OnUserAction(
+ (button == kBackMouseButton && !reverse_direction) ||
+ (button == kForwardMouseButton && reverse_direction) ?
+ aura::client::UserActionClient::BACK :
+ aura::client::UserActionClient::FORWARD);
+ }
+ break;
+ }
+ } else if (type == ui::ET_MOUSE_RELEASED) {
+ XIDeviceEvent* xievent =
+ static_cast<XIDeviceEvent*>(xev->xcookie.data);
+ int button = xievent->detail;
+ if (button == kBackMouseButton || button == kForwardMouseButton) {
+ // We've already passed the back/forward mouse down to the user
+ // action client; we want to swallow the corresponding release.
+ break;
+ }
}
ui::MouseEvent mouseev(xev);
DispatchMouseEvent(&mouseev);
« no previous file with comments | « trunk/src/ui/aura/window_tree_host_x11.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698