diff options
author | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-09 20:05:26 +0000 |
---|---|---|
committer | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-09 20:05:26 +0000 |
commit | b595ba77947ee0881ae8ce16ee92b47d1c48f10a (patch) | |
tree | 3a7961e315229ec247fdb3f520d2aeb8034eb2d7 /chrome/views/views.vcproj | |
parent | 977471dac3b804a8a2408586c5e76f592b87b219 (diff) | |
download | chromium_src-b595ba77947ee0881ae8ce16ee92b47d1c48f10a.zip chromium_src-b595ba77947ee0881ae8ce16ee92b47d1c48f10a.tar.gz chromium_src-b595ba77947ee0881ae8ce16ee92b47d1c48f10a.tar.bz2 |
This changes the approach for our webkit widget area, from using a custom GtkContainer to a GtkFixed container.
Our previous custom container did not track its children, which meant it couldn't propagate size-request and size-allocate. In some ways this is what we wanted, however it prevented GtkSocket from running some important code. Specifically an expose event wouldn't trigger initially on the GtkSocket, leaving the widget window unpainted.
Instead of writing / copying container code to manage children, it is much easier if we can reuse an existing container. This changes makes the drawing area a GtkFixed backed by a GdkWindow, and we paint into its window. We implement a small custom widget around GtkSocket, which allows us to control the size requisition phase. This solves the problem of controlling the GtkSocket layout within the container.
Plugins are now painted correctly, without having to jiggle the scrollbar.
This change additionally groups all of the widget code in a class of statics. GtkFixedSocket implements the GtkSocket with custom size requisition. WebWidgetHostGtkWidget is just a GtkFixed with a window, along with the signal connection handlers.
This also means we'll have no custom container implementation to share across test_shell and the browser.
It seems we still don't handle keyboard focus exactly right, and youtube videos still need mouse events to repaint. I believe these are subtle issues, and can be solved while keeping the GtkFixed container approach.
Review URL: http://codereview.chromium.org/20128
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9407 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/views/views.vcproj')
0 files changed, 0 insertions, 0 deletions