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

Issue 27317: Support DWM switching.... (Closed)

Created:
11 years, 9 months ago by Ben Goodger (Google)
Modified:
9 years, 6 months ago
Reviewers:
Elliot Glaysher
CC:
chromium-reviews_googlegroups.com
Base URL:
svn://chrome-svn.corp.google.com/chrome/trunk/src/
Visibility:
Public.

Description

Support DWM switching. This completes the collapsing of window types and browser frames around a single class: views::Window. CustomFrameWindow is removed with this change. The Browser window is represented by a single views::Window subclass: BrowserFrame, which replaces both AeroGlassFrame and OpaqueFrame. NonClientView is now a container of two sibling classes - the Window's ClientView (in the Browser's case, BrowserView), and a NonClientFrameView subclass, which provides the rendering for the non-client portions of the window. These Views are siblings rather than the ClientView a child of the NonClientFrameView because when the DWM is toggled, the ClientView would have to be re-parented. Many Views make the assumption they are only inserted into a View hierarchy once, and so this is problematic. By having the views be siblings, this is avoided. With this in mind, all of the former NonClientViews now become NonClientFrameView subclasses: DefaultNonClientView -> CustomFrameView (non-existent, NonClientView) -> NativeFrameView AeroGlassNonClientView -> GlassBrowserFrameView OpaqueNonClientView -> OpaqueBrowserFrameView The latter two derive from NonClientFrameView via BrowserNonClientFrameView, which adds some extras. I also had to modify the TabRenderer class to know how to drop its cache of tab background images when the theme changes since it uses different ones for Glass and non-Glass. This change also fixes a few non-client flicker issues relating to window non-client activation by using more ScopedRedrawLocks. (Touches info_bubble.cc, window.cc) Bugs fixed: http://crbug.com/153 http://crbug.com/747 http://crbug.com/2371 http://crbug.com/3264 http://crbug.com/8234 Plumbing for http://crbug.com/8247 Design docs: http://dev.chromium.org/developers/design-documents/views-windowing http://dev.chromium.org/developers/design-documents/browser-window Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=10757

Patch Set 1 #

Patch Set 2 : '' #

Patch Set 3 : '' #

Patch Set 4 : '' #

Total comments: 8

Patch Set 5 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1206 lines, -4568 lines) Patch
M chrome/browser/browser_focus_uitest.cc View 2 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/views/browser_views.vcproj View 1 2 2 chunks +5 lines, -21 lines 0 comments Download
M chrome/browser/views/constrained_window_impl.h View 1 2 3 chunks +6 lines, -11 lines 0 comments Download
M chrome/browser/views/constrained_window_impl.cc View 1 2 17 chunks +101 lines, -82 lines 0 comments Download
D chrome/browser/views/frame/aero_glass_frame.h View 1 2 1 chunk +0 lines, -95 lines 0 comments Download
D chrome/browser/views/frame/aero_glass_frame.cc View 1 2 1 chunk +0 lines, -243 lines 0 comments Download
D chrome/browser/views/frame/aero_glass_non_client_view.h View 1 2 1 chunk +0 lines, -87 lines 0 comments Download
D chrome/browser/views/frame/aero_glass_non_client_view.cc View 1 2 1 chunk +0 lines, -364 lines 0 comments Download
R + chrome/browser/views/frame/browser_frame.h View 2 chunks +38 lines, -41 lines 0 comments Download
A + chrome/browser/views/frame/browser_frame.cc View 5 chunks +63 lines, -115 lines 0 comments Download
M chrome/browser/views/frame/browser_view.cc View 1 2 3 16 chunks +32 lines, -38 lines 0 comments Download
D chrome/browser/views/frame/browser_window_factory.cc View 1 2 1 chunk +0 lines, -50 lines 0 comments Download
A + chrome/browser/views/frame/glass_browser_frame_view.h View 3 chunks +43 lines, -23 lines 0 comments Download
A + chrome/browser/views/frame/glass_browser_frame_view.cc View 14 chunks +122 lines, -61 lines 0 comments Download
A + chrome/browser/views/frame/opaque_browser_frame_view.h View 4 chunks +25 lines, -26 lines 0 comments Download
A + chrome/browser/views/frame/opaque_browser_frame_view.cc View 32 chunks +82 lines, -86 lines 0 comments Download
D chrome/browser/views/frame/opaque_frame.h View 1 2 1 chunk +0 lines, -74 lines 0 comments Download
D chrome/browser/views/frame/opaque_frame.cc View 1 2 1 chunk +0 lines, -139 lines 0 comments Download
D chrome/browser/views/frame/opaque_non_client_view.h View 1 2 1 chunk +0 lines, -167 lines 0 comments Download
D chrome/browser/views/frame/opaque_non_client_view.cc View 1 2 1 chunk +0 lines, -1070 lines 0 comments Download
M chrome/browser/views/hung_renderer_view.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/views/info_bubble.cc View 1 2 2 chunks +1 line, -2 lines 0 comments Download
M chrome/browser/views/tabs/tab_renderer.h View 1 2 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/views/tabs/tab_renderer.cc View 1 2 5 chunks +34 lines, -20 lines 0 comments Download
M chrome/browser/views/tabs/tab_strip.cc View 1 2 2 chunks +2 lines, -1 line 0 comments Download
M chrome/browser/views/toolbar_view.h View 1 2 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/views/toolbar_view.cc View 1 2 4 chunks +7 lines, -5 lines 0 comments Download
A + chrome/views/custom_frame_view.h View 6 chunks +21 lines, -25 lines 0 comments Download
A + chrome/views/custom_frame_view.cc View 19 chunks +77 lines, -90 lines 0 comments Download
D chrome/views/custom_frame_window.h View 1 2 1 chunk +0 lines, -103 lines 0 comments Download
D chrome/views/custom_frame_window.cc View 1 2 1 chunk +0 lines, -506 lines 0 comments Download
D chrome/views/default_non_client_view.h View 1 2 1 chunk +0 lines, -126 lines 0 comments Download
D chrome/views/default_non_client_view.cc View 1 2 1 chunk +0 lines, -710 lines 0 comments Download
A chrome/views/native_frame_view.h View 1 chunk +38 lines, -0 lines 0 comments Download
A chrome/views/native_frame_view.cc View 1 chunk +61 lines, -0 lines 0 comments Download
M chrome/views/non_client_view.h View 1 2 3 4 5 chunks +136 lines, -50 lines 0 comments Download
M chrome/views/non_client_view.cc View 1 2 3 4 3 chunks +105 lines, -28 lines 0 comments Download
M chrome/views/root_view.h View 1 2 3 4 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/views/root_view.cc View 1 2 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/views/view.h View 1 2 1 chunk +8 lines, -0 lines 0 comments Download
M chrome/views/view.cc View 1 2 1 chunk +6 lines, -0 lines 0 comments Download
M chrome/views/views.vcproj View 1 2 3 chunks +10 lines, -10 lines 0 comments Download
M chrome/views/widget.h View 1 2 2 chunks +7 lines, -1 line 0 comments Download
M chrome/views/widget_win.h View 1 2 5 chunks +17 lines, -2 lines 0 comments Download
M chrome/views/widget_win.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M chrome/views/window.h View 1 2 6 chunks +45 lines, -31 lines 0 comments Download
M chrome/views/window.cc View 1 2 19 chunks +98 lines, -61 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
Ben Goodger (Google)
11 years, 9 months ago (2009-03-01 06:10:15 UTC) #1
Elliot Glaysher
http://codereview.chromium.org/27317/diff/3023/2050 File chrome/views/non_client_view.cc (right): http://codereview.chromium.org/27317/diff/3023/2050#newcode16 Line 16: // The frame view and the client view ...
11 years, 9 months ago (2009-03-02 22:00:37 UTC) #2
Elliot Glaysher
11 years, 9 months ago (2009-03-03 00:05:36 UTC) #3
LGTM after those changes.

Powered by Google App Engine
This is Rietveld 408576698