summaryrefslogtreecommitdiffstats
path: root/chrome/views/non_client_view.h
Commit message (Collapse)AuthorAgeFilesLines
* NO CODE CHANGEdeanm@chromium.org2009-03-101-1/+0
| | | | | | | | | Normalize end of file newlines in chrome/. All files end in a single newline. Review URL: http://codereview.chromium.org/42015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11331 0039d316-1c4b-4281-b951-d872f2087c98
* Fix regression where the window caption buttons weren't clickable when ↵ben@chromium.org2009-03-041-1/+7
| | | | | | | | | | | | maximized. This is because of the nonclient frameview/clientview hierarchy changes. Make sure that the frame gets a chance to respond to GetViewForPoint before the client view if the client view does not visually overlap. http://crbug.com/8312 Review URL: http://codereview.chromium.org/40062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10857 0039d316-1c4b-4281-b951-d872f2087c98
* Support DWM switching.ben@chromium.org2009-03-031-50/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 Review URL: http://codereview.chromium.org/27317 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10757 0039d316-1c4b-4281-b951-d872f2087c98
* Flatten CustomFrameWindow functionality onto Window.ben@chromium.org2009-02-271-0/+4
| | | | | | | This is not new code, just copying code into Window. None of the added codepaths are executed yet because UseNativeFrame is always true, so all custom frame windows continue to use CustomFrameWindow instead. Review URL: http://codereview.chromium.org/27291 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10646 0039d316-1c4b-4281-b951-d872f2087c98
* All views::Window objects must have a NonClientView, regardless of whether ↵ben@chromium.org2009-02-271-11/+35
| | | | | | | | or not they fully render their own frame. This simplifies things a bit on the way to unification of Window and CustomFrameWindow. Review URL: http://codereview.chromium.org/27286 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10632 0039d316-1c4b-4281-b951-d872f2087c98
* Make system menus show up at the right place for all frames, whether they're ↵pkasting@chromium.org2009-02-131-1/+4
| | | | | | | | | | | | | | | | triggered by clicking the window icon or hitting alt-space. Make clicking the icon for windows without a non-client view (e.g. the Bookmark Manager on Aero Glass) bring up the system menu. Clean up more dead code, verbose code, or unnecessary statics/members. TEST=Right-click titlebars, hit alt-space, and left-click window icons (where present), for: * Main window * Dialogs, e.g. the bookmark manager * Popups * App windows When right-clicking, a system menu should appear at the cursor. For the other cases, a system menu should appear at the system native location (roughly just below the titlebar). Review URL: http://codereview.chromium.org/20225 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9766 0039d316-1c4b-4281-b951-d872f2087c98
* Fix UI test regression, there's a better way to refactor this anyway.pkasting@chromium.org2009-02-101-5/+2
| | | | | | | TBR=glen Review URL: http://codereview.chromium.org/24007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9443 0039d316-1c4b-4281-b951-d872f2087c98
* Make aero glass code look more like other nonclient views in hopes of easing ↵pkasting@chromium.org2009-02-091-3/+7
| | | | | | | | | refactoring. More cleanup. Change tabstrip layout to match opaque frame. BUG=5054 Review URL: http://codereview.chromium.org/20161 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9433 0039d316-1c4b-4281-b951-d872f2087c98
* Per Glen, remove the bottom border of maximized windows. I went ahead and ↵pkasting@chromium.org2009-01-291-2/+1
| | | | | | | | also removed support for window frame sizes with unequal widths vs. heights; Windows' UI doesn't actually let you do this and it was making the code more complex than it needed to be. Review URL: http://codereview.chromium.org/19477 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8916 0039d316-1c4b-4281-b951-d872f2087c98
* Move kClientEdgeThickness from BrowserView to NonClientView (which makes ↵pkasting@chromium.org2009-01-291-0/+4
| | | | | | | | | more sense anyway) so I'll be able to use it in custom_frame_window.cc. Also eliminate an unnecessarily-repeated set of resource IDs from the opaque nonclient view, and move a comment to match what I ended up doing (but haven't yet sent up for review) in other places. Seems I couldn't make up my mind on that one. Review URL: http://codereview.chromium.org/19458 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8891 0039d316-1c4b-4281-b951-d872f2087c98
* This change should have few user-visible effects. I think I slightly ↵pkasting@chromium.org2009-01-261-3/+4
| | | | | | | | | | | | | | | | | | | modified the window layout (by a pixel or so) in the popup window case, which I haven't tried to make pixel-perfect yet anyway. Otherwise it's all reorg. Clean up logic of nonclient view to be more consistent and coherent. Most things are now based on a small set of core functions that return various frame/nonclient thicknesses. This allows a noticeable reduction in the number of hardcoded constants, makes the code make more sense (even though a few places are longer than before), and makes it much easier to do things in the future like resizing various borders or handling system metrics better. Rename and update comments for all constants to be more descriptive and less redundant. Rename helper functions and variables for consistency, now that they've changed. Remove an unused variant of TileImageInt(). Add a new one that takes an offset into the source image. This is used to rewrite the maximized bottom border tiling call in a way that doesn't rely on someone else clipping out or painting over the overdraw from tiling "too large" a source image. Probably no visible effect. Make resize border hittest helper function able to handle borders of varying widths, and try to make parameter names more meaningful. Technically, we don't need the extra flexibility, since our bottom and side borders are the same thickness, but since there are different functions calculating that thickness on the caller side, it didn't hurt to not rely on that for the future. BUG=5054 Review URL: http://codereview.chromium.org/18804 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8658 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the bug with the minimize/restore buttons getting stuck hot when the ↵ben@chromium.org2008-10-221-0/+7
| | | | | | | | | | | window is restored. Turns out the messages we receive prior to becoming restored/minimized etc are not sufficient to restore the button to its appropriate state. Since this is specific to the implementation of these controls, I have provided a solution specific to them. http://crbug.com/3559 Review URL: http://codereview.chromium.org/7803 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3721 0039d316-1c4b-4281-b951-d872f2087c98
* Rename ChromeViews namespace to viewsben@chromium.org2008-10-161-2/+2
| | | | | | http://crbug.com/2188 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3495 0039d316-1c4b-4281-b951-d872f2087c98
* Use a more compact license header in source files.license.bot2008-08-241-28/+4
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1287 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for ChromeViews::Windows to disable inactive rendering. This is ↵beng@google.com2008-08-111-0/+17
| | | | | | | | | for the new frames to make it so when infobubbles are activated the window frame isn't deactivated. B=1318343 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@659 0039d316-1c4b-4281-b951-d872f2087c98
* forgot these filesbeng@google.com2008-07-311-2/+0
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154 0039d316-1c4b-4281-b951-d872f2087c98
* Make NonClientView an interface independent of CustomFrameWindow (i.e. move ↵beng@google.com2008-07-301-0/+98
it into its own file). Rename NonClientView's HitTest method to NonClientHitTest, so it doesn't collide with View's HitTest method. Also, consolidate some duplicated code between CustomFrameWindow and ConstrainedWindow's non-client view impl. B=1300864 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141 0039d316-1c4b-4281-b951-d872f2087c98