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

Side by Side Diff: ui/views/widget/desktop_aura/x11_desktop_handler.cc

Issue 180983002: Avoids releasing capture prematurily when dragging tabs from one to another browser window (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Avoids releasing capture prematurily when dragging tabs from one browser window to another 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/widget/desktop_aura/x11_desktop_handler.h" 5 #include "ui/views/widget/desktop_aura/x11_desktop_handler.h"
6 6
7 #include <X11/Xatom.h> 7 #include <X11/Xatom.h>
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9 9
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 XSendEvent(xdisplay_, x_root_window_, False, 85 XSendEvent(xdisplay_, x_root_window_, False,
86 SubstructureRedirectMask | SubstructureNotifyMask, 86 SubstructureRedirectMask | SubstructureNotifyMask,
87 &xclient); 87 &xclient);
88 } else { 88 } else {
89 XRaiseWindow(xdisplay_, window); 89 XRaiseWindow(xdisplay_, window);
90 90
91 // XRaiseWindow will not give input focus to the window. We now need to ask 91 // XRaiseWindow will not give input focus to the window. We now need to ask
92 // the X server to do that. Note that the call will raise an X error if the 92 // the X server to do that. Note that the call will raise an X error if the
93 // window is not mapped. 93 // window is not mapped.
94 XSetInputFocus(xdisplay_, window, RevertToParent, CurrentTime); 94 XSetInputFocus(xdisplay_, window, RevertToParent, CurrentTime);
95
96 OnActiveWindowChanged(window);
97 } 95 }
96 // Notify synchronously in order to maintain focus on a correct view when
97 // activation changes.
98 OnActiveWindowChanged(window);
varkha 2014/02/26 20:30:18 Without this when a tab that is dragged from one b
Elliot Glaysher 2014/02/26 20:33:17 Not that I know of. sadrul@ might be a better pers
98 } 99 }
99 100
100 void X11DesktopHandler::DeactivateWindow(::Window window) { 101 void X11DesktopHandler::DeactivateWindow(::Window window) {
101 DCHECK(IsActiveWindow(window)); 102 DCHECK(IsActiveWindow(window));
102 103
103 std::vector< ::Window > windows; 104 std::vector< ::Window > windows;
104 if (!ui::GetXWindowStack(x_root_window_, &windows)) { 105 if (!ui::GetXWindowStack(x_root_window_, &windows)) {
105 // TODO(mlamouri): use XQueryTree in case of _NET_CLIENT_LIST_STACKING is 106 // TODO(mlamouri): use XQueryTree in case of _NET_CLIENT_LIST_STACKING is
106 // not supported by the WM. 107 // not supported by the WM.
107 NOTIMPLEMENTED(); 108 NOTIMPLEMENTED();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 return *it; 231 return *it;
231 } 232 }
232 233
233 // If we reached that point, that means we have not found an appropriate 234 // If we reached that point, that means we have not found an appropriate
234 // window to activate. There is nothing we can do about it and the caller 235 // window to activate. There is nothing we can do about it and the caller
235 // should take care of doing the right thing. 236 // should take care of doing the right thing.
236 return 0; 237 return 0;
237 } 238 }
238 239
239 } // namespace views 240 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698