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

Unified Diff: chrome/browser/ui/views/panels/panel_view.cc

Issue 320713004: Update panel layout immediately after the user has finished resizing a panel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 6 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
Index: chrome/browser/ui/views/panels/panel_view.cc
diff --git a/chrome/browser/ui/views/panels/panel_view.cc b/chrome/browser/ui/views/panels/panel_view.cc
index d61ad214a7afbc7b84ce80e64f87f81d0c202b41..822bbdf252016a9542cdbc2bacd9256ded881684 100644
--- a/chrome/browser/ui/views/panels/panel_view.cc
+++ b/chrome/browser/ui/views/panels/panel_view.cc
@@ -20,6 +20,8 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
+#include "ui/aura/window.h"
+#include "ui/aura/window_tree_host.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/path.h"
#include "ui/gfx/screen.h"
@@ -36,6 +38,11 @@
#include "ui/views/win/hwnd_util.h"
#endif
+#if defined(USE_X11) && !defined(OS_CHROMEOS)
+#include "chrome/browser/ui/views/panels/x11_panel_resizer.h"
+#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h"
+#endif
+
namespace {
#if defined(OS_WIN)
@@ -307,6 +314,18 @@ PanelView::PanelView(Panel* panel, const gfx::Rect& bounds, bool always_on_top)
views::HWNDForWidget(window_));
ui::win::PreventWindowFromPinning(views::HWNDForWidget(window_));
#endif
+
+#if defined(USE_X11) && !defined(OS_CHROMEOS)
+ // Swap the default non client event handler with one which handles resizes
+ // for panels entirely within Chrome. This is needed because it is not
+ // possible to tell when a resize performed by the window manager ends.
+ views::DesktopWindowTreeHostX11* host =
+ views::DesktopWindowTreeHostX11::GetHostForXID(
+ window_->GetNativeView()->GetHost()->GetAcceleratedWidget());
+ scoped_ptr<ui::EventHandler> resizer(
+ new X11PanelResizer(panel_.get(), window_->GetNativeWindow()));
+ host->SwapNonClientEventHandler(resizer.Pass());
+#endif
}
PanelView::~PanelView() {
« no previous file with comments | « chrome/browser/ui/panels/panel_resize_controller.cc ('k') | chrome/browser/ui/views/panels/x11_panel_resizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698