summaryrefslogtreecommitdiffstats
path: root/chrome/views/view.cc
Commit message (Collapse)AuthorAgeFilesLines
* Support DWM switching.ben@chromium.org2009-03-031-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* An attempt at fixing a crasher reported from the field.jcampan@chromium.org2009-02-271-1/+4
| | | | | | | | BUG=5549 R=sky Review URL: http://codereview.chromium.org/27229 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10565 0039d316-1c4b-4281-b951-d872f2087c98
* Fixing 8010: Missing options from Options dlg.finnur@google.com2009-02-241-1/+4
| | | | | | | | | | | | | This should also fix the hang in the interactive_ui_tests. The problem is in a one line change in view.cc where we return early from a Layout call. BUG=8010 Review URL: http://codereview.chromium.org/27102 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10294 0039d316-1c4b-4281-b951-d872f2087c98
* The find bar should be owned and managed from the BrowserView, not the ↵finnur@google.com2009-02-241-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | WebContentsView, since it's part of the "chrome". Design Doc: http://dev.chromium.org/developers/design-documents/find-bar Things done: - Pulled all of the find bar stuff out of WebContentsView* since it's no longer needed. - Moved OnFindReply delegate method from RenderViewHostDelegate::View to RenderViewHostDelegate, since it's no longer implemented on the view. - Moved find control methods to WebContents. - Added recent find result state to WebContents. - Updated the UI tests to accommodate the changes in the state that is broadcast when results are discovered. - Updated the find bar layout to obtain its bounding box from the BrowserView, which knows about toolbars, bookmark bars etc. - Updated the find bar itself to handle the fact that it can be displayed for multiple different tabs. - Moved the find bar manipulation methods for testing from TabProxy to BrowserProxy, since the find bar is now a feature of the window, not the tab. - view.h: Don't lay out child views again if they have a layout manager, it already updated them. TEST=Find box should work as before. BUG=3245 Review URL: http://codereview.chromium.org/27025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10231 0039d316-1c4b-4281-b951-d872f2087c98
* Solved 2 bugs which caused Chrome to maximize itself whendouble clicking, ↵idanan@chromium.org2009-02-181-1/+2
| | | | | | | | either on the new tab button, on the closetab button or on a single tab.BUG=2827BUG=3787The problem comes from the Windows event sequence upon adouble-click (simplified here):1 - hit-test2 - mouse-down4 - mouse-up/click5 - hit-test6 - mouse down7 - mouse up/double-clickThe 1st hit-test is always performed correctly, returningclient for tabs and non-client for the tab-strip (background).The 2nd hit test is not performed correctly to avoid crashesin Chromebot from events being processed while tabs are animating.Since we have no record of these crashes, Ben prefers we keepthis special-case, even though we are responding incorrectlyto the windows hit-test. So, when the tabs are animating wereturn a HTNOWHERE hit which the caller translates into anHTCAPTION hit. This even though a tab-control (new-tab/close-tab)may have been hit.The problem is that having returned HTCAPTION to Windows defaultmessage handling, we get a NON-CLIENT double-click event insteadof a standard one.To keep the behavior of the second hit-test AND prevent theChrome window from maximizing, this change simply declaresthe non-client double-click as handled when the tabs areanimating.Another trick we pulled in the hit-test is to return HTCAPTIONwhen a single tab is present. This allows the entire window to be dragged but causes the context menu to be wrong and the windowto maximize when double clicking on the single tab.The solution here is to correct return a client hit for a singletab and, upon handling a client single-click, delegate to thenon-client single-click default handler. Review URL: http://codereview.chromium.org/21268 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9953 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-6/+5
| | | | | | | | | | | | | | | | 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
* Don't focus unfocusable things.pkasting@chromium.org2009-02-131-2/+1
| | | | | | Review URL: http://codereview.chromium.org/20348 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9765 0039d316-1c4b-4281-b951-d872f2087c98
* Fix an issue with HWNDView visibility where invisible (i.e. ↵pkasting@chromium.org2009-02-131-0/+2
| | | | | | | | SetVisible(false)) views would have ShowWindow() called on them, which was bogus. Review URL: http://codereview.chromium.org/21333 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9760 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the broken commit in r8250. The problem was that basictypes.herg@google.com2009-01-201-90/+22
| | | | | | | | | wasn't getting included before a defined(OS_WIN) check. Review URL: http://codereview.chromium.org/18414 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8308 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Add #ifdefs to the views/ code and move windows specific codeerg@google.com2009-01-171-22/+90
| | | | | | | | | | into their own files to get some files compiling." Conflicts with something that went in in the interim... Review URL: http://codereview.chromium.org/18187 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8251 0039d316-1c4b-4281-b951-d872f2087c98
* Add #ifdefs to the views/ code and move windows specific code into their own ↵erg@google.com2009-01-171-90/+22
| | | | | | | | | files to get some files compiling. Review URL: http://codereview.chromium.org/18136 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8250 0039d316-1c4b-4281-b951-d872f2087c98
* Constify the params of a couple View functions, which I'll need for an ↵pkasting@chromium.org2009-01-151-5/+13
| | | | | | | | | upcoming change to be able to call these from someone else's const member function. Also fixes a couple cases of wrong parameter wrapping/"*" binding. Review URL: http://codereview.chromium.org/18251 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8057 0039d316-1c4b-4281-b951-d872f2087c98
* Replace some CRects with gfx::Rectagl@chromium.org2008-12-171-4/+4
| | | | | | | Review URL: http://codereview.chromium.org/14173 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7126 0039d316-1c4b-4281-b951-d872f2087c98
* Rename Container->Widgetben@chromium.org2008-11-211-34/+28
| | | | | | | | | R=erg review url = http://codereview.chromium.org/11348/show git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5849 0039d316-1c4b-4281-b951-d872f2087c98
* Make border and background setting and getting non-virtual and use the ↵brettw@google.com2008-11-141-32/+5
| | | | | | | | correct style. I was debugging in here and this was annoying me, since there is no reason for these functions to be virtual. Review URL: http://codereview.chromium.org/10638 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5445 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes bug in showing context menu for buttons. In particular becausesky@google.com2008-11-121-2/+1
| | | | | | | | | | | | we weren't resetting state before showing the context menu it was possible for the button to stay in a HOT state even though it isn't. BUG=2620 TEST=see bug Review URL: http://codereview.chromium.org/10835 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5300 0039d316-1c4b-4281-b951-d872f2087c98
* Changes tree/table to pass in an appropriate location when the contextsky@google.com2008-11-101-0/+8
| | | | | | | | | | | | | menu is invoked from the keyboard. BUG=4029 TEST=In the bookmark manager bring up the context menu of the tree/table via the menu key and make sure the menu appears at a reasonable location. Review URL: http://codereview.chromium.org/10256 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5125 0039d316-1c4b-4281-b951-d872f2087c98
* In dialogs, when the focus moves to a button, that button should become the ↵jcampan@chromium.org2008-11-081-0/+27
| | | | | | | | | | | | | | default button. When the focus is not a button, then the default button should be the one the delegate specifies. BUG=4132 TEST=Open the option dialog. OK should be the default and focused button. Move the focus around by pressing tab. When a button is selected, it should be the default button. Review URL: http://codereview.chromium.org/10230 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5056 0039d316-1c4b-4281-b951-d872f2087c98
* Adds support for keyboard-triggered (through VK_APPS and SHIFT+VK_F10) ↵klink@chromium.org2008-10-311-0/+7
| | | | | | | | right-click menu, specifically on the toolbar's back/forward buttons. Review URL: http://codereview.chromium.org/8942 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4326 0039d316-1c4b-4281-b951-d872f2087c98
* Adds a horizontal split view.sky@google.com2008-10-241-1/+1
| | | | | | | | | BUG=674 TEST=none Review URL: http://codereview.chromium.org/7930 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3897 0039d316-1c4b-4281-b951-d872f2087c98
* Convert SchedulePaint and a few other methods to use gfx types.ben@chromium.org2008-10-171-14/+9
| | | | | | | http://crbug.com/2186 Review URL: http://codereview.chromium.org/7468 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3550 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
* Make View::SetBounds take a const gfx::Rect& instead of a const CRect&ben@chromium.org2008-10-161-61/+24
| | | | | | | | | | Make View::DidChangeBounds call Layout by default, eliminating this function from most places. http://crbug.com/2186 Review URL: http://codereview.chromium.org/7429 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3471 0039d316-1c4b-4281-b951-d872f2087c98
* Rename ViewContainer to Container and HWNDViewContainer to ContainerWin.ben@chromium.org2008-10-161-16/+16
| | | | | | | http://crbug.com/3430 Review URL: http://codereview.chromium.org/7376 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3441 0039d316-1c4b-4281-b951-d872f2087c98
* Convert GetPreferredSize from:beng@google.com2008-10-151-15/+14
| | | | | | | | | | | | | | | | | void GetPreferredSize(CSize* out); to: gfx::Size GetPreferredSize(); .. and update some other places to use gfx::Size as well. http://crbug.com/2186 Review URL: http://codereview.chromium.org/7344 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3400 0039d316-1c4b-4281-b951-d872f2087c98
* Convert HitTest/GetViewForPoint to use gfx::Pointben@chromium.org2008-10-141-10/+12
| | | | | | | http://crbug.com/2186 Review URL: http://codereview.chromium.org/7331 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3384 0039d316-1c4b-4281-b951-d872f2087c98
* Change all ConvertPointTo* methods to use gfx::Point instead of CPoint.ben@chromium.org2008-10-141-41/+20
| | | | | | | | http://crbug.com/2186 Review URL: http://codereview.chromium.org/7317 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3365 0039d316-1c4b-4281-b951-d872f2087c98
* Replace View::GetBounds(CRect* bounds) const; with gfx::Rect bounds() const. ben@chromium.org2008-10-141-5/+6
| | | | | | | | http://crbug.com/2186 Review URL: http://codereview.chromium.org/7136 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3348 0039d316-1c4b-4281-b951-d872f2087c98
* Fix RTL issues with opaque frame. ben@chromium.org2008-10-101-0/+1
| | | | | | | | http://crbug.com/3247 Review URL: http://codereview.chromium.org/7240 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3256 0039d316-1c4b-4281-b951-d872f2087c98
* Merge the chrome_webkit_merge_branch back on to trunk. This brings ustc@google.com2008-10-011-1/+2
| | | | | | | up to webkit@36102. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2778 0039d316-1c4b-4281-b951-d872f2087c98
* Rename legacy methods that were in CamelCase to unix_hacker.erg@google.com2008-09-171-32/+32
| | | | | | | | | Required going through and modifying some of the code to solve name clashes. Review URL: http://codereview.chromium.org/2945 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2337 0039d316-1c4b-4281-b951-d872f2087c98
* Allow Views to support an optional hit-test mask. Make hittest use this.beng@google.com2008-09-161-14/+27
| | | | | | | | | | | Make GetViewForPoint call HitTest instead of rolling its own crude hit testing. Update custom-shaped views to use this framework instead of overriding hittest themselves. B=2273 Review URL: http://codereview.chromium.org/3051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2255 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
* Large patch set (159 files total) to cleanup the includes.maruel@google.com2008-08-151-2/+12
| | | | | | | | | | - Slightly reduce the size of the generated .lib files ~3%. - Reduce the number of implicit and explicit atl and windows includes. hooray! - Help incremental build by reducing the number of unnecessary included files. - Split some template class in two, one base class for the common code and the specialization that inherits from the base class. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@937 0039d316-1c4b-4281-b951-d872f2087c98
* Add chrome to the repository.initial.commit2008-07-261-0/+1710
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15 0039d316-1c4b-4281-b951-d872f2087c98