Windows: Allow customization of background color (issue #1161).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1559 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
72660c6fed
commit
b479cb3aa3
|
@ -85,6 +85,27 @@ typedef unsigned short char16;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// 32-bit ARGB color value, not premultiplied. The color components are always
|
||||||
|
// in a known order. Equivalent to the SkColor type.
|
||||||
|
typedef uint32 cef_color_t;
|
||||||
|
|
||||||
|
// Return the alpha byte from a cef_color_t value.
|
||||||
|
#define CefColorGetA(color) (((color) >> 24) & 0xFF)
|
||||||
|
// Return the red byte from a cef_color_t value.
|
||||||
|
#define CefColorGetR(color) (((color) >> 16) & 0xFF)
|
||||||
|
// Return the green byte from a cef_color_t value.
|
||||||
|
#define CefColorGetG(color) (((color) >> 8) & 0xFF)
|
||||||
|
// Return the blue byte from a cef_color_t value.
|
||||||
|
#define CefColorGetB(color) (((color) >> 0) & 0xFF)
|
||||||
|
|
||||||
|
// Return an cef_color_t value with the specified byte component values.
|
||||||
|
#define CefColorSetARGB(a, r, g, b) \
|
||||||
|
static_cast<cef_color_t>( \
|
||||||
|
(static_cast<unsigned>(a) << 24) | \
|
||||||
|
(static_cast<unsigned>(r) << 16) | \
|
||||||
|
(static_cast<unsigned>(g) << 8) | \
|
||||||
|
(static_cast<unsigned>(b) << 0))
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -344,6 +365,14 @@ typedef struct _cef_settings_t {
|
||||||
// "ignore-certificate-errors" command-line switch.
|
// "ignore-certificate-errors" command-line switch.
|
||||||
///
|
///
|
||||||
int ignore_certificate_errors;
|
int ignore_certificate_errors;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Opaque background color used for accelerated content. By default the
|
||||||
|
// background color will be white. Only the RGB compontents of the specified
|
||||||
|
// value will be used. The alpha component must greater than 0 to enable use
|
||||||
|
// of the background color but will be otherwise ignored.
|
||||||
|
///
|
||||||
|
cef_color_t background_color;
|
||||||
} cef_settings_t;
|
} cef_settings_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
|
@ -377,6 +377,7 @@ struct CefSettingsTraits {
|
||||||
target->uncaught_exception_stack_size = src->uncaught_exception_stack_size;
|
target->uncaught_exception_stack_size = src->uncaught_exception_stack_size;
|
||||||
target->context_safety_implementation = src->context_safety_implementation;
|
target->context_safety_implementation = src->context_safety_implementation;
|
||||||
target->ignore_certificate_errors = src->ignore_certificate_errors;
|
target->ignore_certificate_errors = src->ignore_certificate_errors;
|
||||||
|
target->background_color = src->background_color;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <winspool.h>
|
#include <winspool.h>
|
||||||
|
|
||||||
#include "libcef/browser/content_browser_client.h"
|
#include "libcef/browser/content_browser_client.h"
|
||||||
|
#include "libcef/browser/context.h"
|
||||||
#include "libcef/browser/thread_util.h"
|
#include "libcef/browser/thread_util.h"
|
||||||
|
|
||||||
#include "base/file_util.h"
|
#include "base/file_util.h"
|
||||||
|
@ -552,8 +553,10 @@ bool IsSystemCursorID(LPCWSTR cursor_id) {
|
||||||
// will be deleted automatically when the associated root window is destroyed.
|
// will be deleted automatically when the associated root window is destroyed.
|
||||||
class CefWindowDelegateView : public views::WidgetDelegateView {
|
class CefWindowDelegateView : public views::WidgetDelegateView {
|
||||||
public:
|
public:
|
||||||
CefWindowDelegateView()
|
explicit CefWindowDelegateView(SkColor background_color)
|
||||||
: web_view_(NULL) {
|
: background_color_(background_color),
|
||||||
|
web_view_(NULL) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the Widget and associated root window.
|
// Create the Widget and associated root window.
|
||||||
|
@ -592,7 +595,7 @@ class CefWindowDelegateView : public views::WidgetDelegateView {
|
||||||
private:
|
private:
|
||||||
// Initialize the Widget's content.
|
// Initialize the Widget's content.
|
||||||
void InitContent() {
|
void InitContent() {
|
||||||
set_background(views::Background::CreateStandardPanelBackground());
|
set_background(views::Background::CreateSolidBackground(background_color_));
|
||||||
SetLayoutManager(new views::FillLayout());
|
SetLayoutManager(new views::FillLayout());
|
||||||
AddChildView(web_view_);
|
AddChildView(web_view_);
|
||||||
}
|
}
|
||||||
|
@ -610,6 +613,7 @@ class CefWindowDelegateView : public views::WidgetDelegateView {
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
SkColor background_color_;
|
||||||
views::WebView* web_view_;
|
views::WebView* web_view_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(CefWindowDelegateView);
|
DISALLOW_COPY_AND_ASSIGN(CefWindowDelegateView);
|
||||||
|
@ -753,7 +757,17 @@ bool CefBrowserHostImpl::PlatformCreateWindow() {
|
||||||
|
|
||||||
DCHECK(!window_widget_);
|
DCHECK(!window_widget_);
|
||||||
|
|
||||||
CefWindowDelegateView* delegate_view = new CefWindowDelegateView();
|
SkColor background_color = SK_ColorWHITE;
|
||||||
|
const CefSettings& settings = CefContext::Get()->settings();
|
||||||
|
if (CefColorGetA(settings.background_color) > 0) {
|
||||||
|
background_color = SkColorSetRGB(
|
||||||
|
CefColorGetR(settings.background_color),
|
||||||
|
CefColorGetG(settings.background_color),
|
||||||
|
CefColorGetB(settings.background_color));
|
||||||
|
}
|
||||||
|
|
||||||
|
CefWindowDelegateView* delegate_view =
|
||||||
|
new CefWindowDelegateView(background_color);
|
||||||
delegate_view->Init(window_info_.window,
|
delegate_view->Init(window_info_.window,
|
||||||
web_contents(),
|
web_contents(),
|
||||||
gfx::Rect(0, 0, cr.right, cr.bottom));
|
gfx::Rect(0, 0, cr.right, cr.bottom));
|
||||||
|
|
Loading…
Reference in New Issue