| OLD | NEW |
| 1 # Browser View Resizer | 1 # Browser View Resizer |
| 2 | 2 |
| 3 To fix bug [458](http://code.google.com/p/chromium/issues/detail?id=458), which | 3 To fix bug [458](http://code.google.com/p/chromium/issues/detail?id=458), which |
| 4 identifies that it is hard to hit the thin window frame corner to resize the | 4 identifies that it is hard to hit the thin window frame corner to resize the |
| 5 window. It would be better to have a resize hit area (called widget from now on) | 5 window. It would be better to have a resize hit area (called widget from now on) |
| 6 in the corner, as we currently have for edit boxes for example. | 6 in the corner, as we currently have for edit boxes for example. |
| 7 | 7 |
| 8 [TOC] | 8 [TOC] |
| 9 | 9 |
| 10 ## Background | 10 ## Background |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 | 69 |
| 70 ## Design | 70 ## Design |
| 71 | 71 |
| 72 Unfortunately, we must deal with the two different cases (with or without a | 72 Unfortunately, we must deal with the two different cases (with or without a |
| 73 dynamic bottom view) in two different and distinct ways. | 73 dynamic bottom view) in two different and distinct ways. |
| 74 | 74 |
| 75 ### Over a Dynamic View | 75 ### Over a Dynamic View |
| 76 | 76 |
| 77 For the cases where there is a dynamic view at the bottom of the browser view, a | 77 For the cases where there is a dynamic view at the bottom of the browser view, a |
| 78 new view class (named `BrowserResizerView`) inheriting from | 78 new view class (named `BrowserResizerView`) inheriting from |
| 79 [views::View](http://src.chromium.org/svn/trunk/src/chrome/views/view.h) is used | 79 [views::View](https://src.chromium.org/svn/trunk/src/chrome/views/view.h) is use
d |
| 80 to display the resize widget. It is set as a child of the dynamic view laid at | 80 to display the resize widget. It is set as a child of the dynamic view laid at |
| 81 the bottom of the browser view. The Browser view takes care of properly setting | 81 the bottom of the browser view. The Browser view takes care of properly setting |
| 82 the bounds of the resize widget view, based on the language direction. | 82 the bounds of the resize widget view, based on the language direction. |
| 83 | 83 |
| 84 Also, it is easier and more efficient to let the browser view handle the mouse | 84 Also, it is easier and more efficient to let the browser view handle the mouse |
| 85 interactions to resize the browser. We can let Windows take care of properly | 85 interactions to resize the browser. We can let Windows take care of properly |
| 86 resizing the view by returning the HTBOTTOMLEFT or HTBOTTOMRIGHT flags from the | 86 resizing the view by returning the HTBOTTOMLEFT or HTBOTTOMRIGHT flags from the |
| 87 NCClientHitTest windows message handler when they occur over the resize widget. | 87 NCClientHitTest windows message handler when they occur over the resize widget. |
| 88 The browser view also takes care of changing the mouse cursor to the appropriate | 88 The browser view also takes care of changing the mouse cursor to the appropriate |
| 89 resizing arrows when the mouse hovers over the resize widget area. | 89 resizing arrows when the mouse hovers over the resize widget area. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 104 receives the bitmap rendered by WebKit so it can layer the transparent bitmap | 104 receives the bitmap rendered by WebKit so it can layer the transparent bitmap |
| 105 used for the resize widget. That same render widget host view must also handle | 105 used for the resize widget. That same render widget host view must also handle |
| 106 the mouse interaction and use the same trick as the browser view to let Windows | 106 the mouse interaction and use the same trick as the browser view to let Windows |
| 107 take care of resizing the whole frame. It must also take care of changing the | 107 take care of resizing the whole frame. It must also take care of changing the |
| 108 mouse cursor to the appropriate resizing arrows when the mouse hovers over the | 108 mouse cursor to the appropriate resizing arrows when the mouse hovers over the |
| 109 resize widget area. | 109 resize widget area. |
| 110 | 110 |
| 111 ## Implementation | 111 ## Implementation |
| 112 | 112 |
| 113 You can find the changes made to make this work in patch | 113 You can find the changes made to make this work in patch |
| 114 [16488](http://codereview.chromium.org/16488). | 114 [16488](https://codereview.chromium.org/16488). |
| 115 | 115 |
| 116 ## Alternatives Considered | 116 ## Alternatives Considered |
| 117 | 117 |
| 118 We could have tried to reuse the code that currently takes care of resizing the | 118 We could have tried to reuse the code that currently takes care of resizing the |
| 119 edit boxes within WebKit, but this code is wired to the overflow style of HTML | 119 edit boxes within WebKit, but this code is wired to the overflow style of HTML |
| 120 element and would have been hard to rewire in an elegant way to be used in a | 120 element and would have been hard to rewire in an elegant way to be used in a |
| 121 higher level object like the browser view. Unless we missed something. | 121 higher level object like the browser view. Unless we missed something. |
| 122 | 122 |
| 123 We might also decide to go with the easier solution of only showing the resize | 123 We might also decide to go with the easier solution of only showing the resize |
| 124 corner within the tab contents view. In that case, it would still be recommended | 124 corner within the tab contents view. In that case, it would still be recommended |
| 125 that the resize widget would not appear when dynamic views are taking over the | 125 that the resize widget would not appear when dynamic views are taking over the |
| 126 bottom portion of the browser view, since it would look weird to have a resize | 126 bottom portion of the browser view, since it would look weird to have a resize |
| 127 corner widget that is not in the real... corner... of the browser view ;-) | 127 corner widget that is not in the real... corner... of the browser view ;-) |
| 128 | 128 |
| 129 We may decide that we don't want to see the resize widget bitmap hide some | 129 We may decide that we don't want to see the resize widget bitmap hide some |
| 130 pixels from the tab contents (or dynamic view) yet we would still have the | 130 pixels from the tab contents (or dynamic view) yet we would still have the |
| 131 resizing functionality via the mouse interaction and also get visual feedback | 131 resizing functionality via the mouse interaction and also get visual feedback |
| 132 with the mouse cursor changes while we hover over the resize widget area. | 132 with the mouse cursor changes while we hover over the resize widget area. |
| 133 | 133 |
| 134 We may do more research to find a way to solve this problem in a single place as | 134 We may do more research to find a way to solve this problem in a single place as |
| 135 opposed to the current dual solution, but none was found so far. | 135 opposed to the current dual solution, but none was found so far. |
| OLD | NEW |