Chromium UI框架view

如果把widget当作画板,那么view就相当于铺在画板上的画纸。widget上面不会画什么东西,我们的界面元素都是画在view上,然后view又盖在widget上面。 在non_client_view.h的注视里面可以看到以下的内容: 可以看到最底层是Widget,然后RootView盖在Widget上面。RootView包含了NonClientView,而NonClientView又包含NonClientFrameView和ClientView。View不仅可以显示元素,而且可以当作容器包含其他的View。所有的View形成了一个树状的层次结构,低底层的根是RootView。 RootView附着在一个Widget上面,Widget从操作系统里面接受事件,转换成与View兼容的事件,然后再传递给RootView。RootView则按照树状层次结构一层层的传递事件。 听起来还是很抽象,我们可以实际动手试一试,我们利用views::PrintViewHierarchy(this)打印出RootView的View... Read More | Share it now!

Chromium预置搜索引擎

Chromium是Google主导一个开源浏览器项目,而Google是以搜索引擎起家的,因此Chromium里面搜索是个很重要的功能,给它增加了很多特性。我写篇博客介绍一下Chromium里面的搜索功能。 预置的搜索引擎 在浏览器的地址栏里面输入chrome://settings/searchEngines就可以管理搜索引擎。里面有一些预置的搜索引擎,你可以删除它们也可以添加一些你自定义的搜索引擎:如下图所示: 预置的搜索引擎是由Chromium代码prepopulated_engines.json定义的,这个文件的注释值得一读。文件其实就是包含了json格式的一些数据,在编译的时候会动态生成prepopulated_engine.h/cc文件。值得注意的是:每次修改过prepopulated_engines.json文件里面的数据都需要自增int_variables.kCurrentDataVersion的值,否则你的修改可能不会生效。原因是浏览器运行之后会把预置搜索引擎的数据保存在Web... Read More | Share it now!