Skip to content

Commit

Permalink
Add setBackgroundColor method
Browse files Browse the repository at this point in the history
  • Loading branch information
zcbenz committed Oct 23, 2015
1 parent 4a6134f commit e36d455
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 14 deletions.
5 changes: 5 additions & 0 deletions atom/browser/api/atom_api_window.cc
Expand Up @@ -385,6 +385,10 @@ bool Window::IsKiosk() {
return window_->IsKiosk();
}

void Window::SetBackgroundColor(const std::string& color_name) {
window_->SetBackgroundColor(color_name);
}

void Window::FocusOnWebView() {
window_->FocusOnWebView();
}
Expand Down Expand Up @@ -564,6 +568,7 @@ void Window::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setSkipTaskbar", &Window::SetSkipTaskbar)
.SetMethod("setKiosk", &Window::SetKiosk)
.SetMethod("isKiosk", &Window::IsKiosk)
.SetMethod("setBackgroundColor", &Window::SetBackgroundColor)
.SetMethod("setRepresentedFilename", &Window::SetRepresentedFilename)
.SetMethod("getRepresentedFilename", &Window::GetRepresentedFilename)
.SetMethod("setDocumentEdited", &Window::SetDocumentEdited)
Expand Down
1 change: 1 addition & 0 deletions atom/browser/api/atom_api_window.h
Expand Up @@ -122,6 +122,7 @@ class Window : public mate::TrackableObject<Window>,
void SetSkipTaskbar(bool skip);
void SetKiosk(bool kiosk);
bool IsKiosk();
void SetBackgroundColor(const std::string& color_name);
void FocusOnWebView();
void BlurWebView();
bool IsWebViewFocused();
Expand Down
4 changes: 4 additions & 0 deletions atom/browser/native_window.cc
Expand Up @@ -139,6 +139,10 @@ void NativeWindow::InitFromOptions(const mate::Dictionary& options) {
if (options.Get(switches::kKiosk, &kiosk) && kiosk) {
SetKiosk(kiosk);
}
std::string color;
if (options.Get(switches::kBackgroundColor, &color)) {
SetBackgroundColor(color);
}
std::string title("Electron");
options.Get(switches::kTitle, &title);
SetTitle(title);
Expand Down
1 change: 1 addition & 0 deletions atom/browser/native_window.h
Expand Up @@ -134,6 +134,7 @@ class NativeWindow : public base::SupportsUserData,
virtual void SetSkipTaskbar(bool skip) = 0;
virtual void SetKiosk(bool kiosk) = 0;
virtual bool IsKiosk() = 0;
virtual void SetBackgroundColor(const std::string& color_name) = 0;
virtual void SetRepresentedFilename(const std::string& filename);
virtual std::string GetRepresentedFilename();
virtual void SetDocumentEdited(bool edited);
Expand Down
1 change: 1 addition & 0 deletions atom/browser/native_window_mac.h
Expand Up @@ -57,6 +57,7 @@ class NativeWindowMac : public NativeWindow {
void SetSkipTaskbar(bool skip) override;
void SetKiosk(bool kiosk) override;
bool IsKiosk() override;
void SetBackgroundColor(const std::string& color_name) override;
void SetRepresentedFilename(const std::string& filename) override;
std::string GetRepresentedFilename() override;
void SetDocumentEdited(bool edited) override;
Expand Down
3 changes: 3 additions & 0 deletions atom/browser/native_window_mac.mm
Expand Up @@ -635,6 +635,9 @@ - (void)drawRect:(NSRect)dirtyRect {
return is_kiosk_;
}

void NativeWindowMac::SetBackgroundColor(const std::string& color_name) {
}

void NativeWindowMac::SetRepresentedFilename(const std::string& filename) {
[window_ setRepresentedFilename:base::SysUTF8ToNSString(filename)];
}
Expand Down
29 changes: 15 additions & 14 deletions atom/browser/native_window_views.cc
Expand Up @@ -230,23 +230,9 @@ NativeWindowViews::NativeWindowViews(
// Add web view.
SetLayoutManager(new MenuLayout(this, kMenuBarHeight));

// web views' background color.
SkColor background_color = SK_ColorWHITE;
std::string color_name;
if (options.Get(switches::kBackgroundColor, &color_name))
background_color = ParseHexColor(color_name);
set_background(views::Background::CreateSolidBackground(background_color));

AddChildView(web_view_);

#if defined(OS_WIN)
// Set the background color of native window.
HBRUSH brush = CreateSolidBrush(skia::SkColorToCOLORREF(background_color));
ULONG_PTR previous_brush = SetClassLongPtr(
GetAcceleratedWidget(), GCLP_HBRBACKGROUND, (LONG)brush);
if (previous_brush)
DeleteObject((HBRUSH)previous_brush);

// Save initial window state.
if (fullscreen)
last_window_state_ = ui::SHOW_STATE_FULLSCREEN;
Expand Down Expand Up @@ -534,6 +520,21 @@ bool NativeWindowViews::IsKiosk() {
return IsFullscreen();
}

void NativeWindowViews::SetBackgroundColor(const std::string& color_name) {
// web views' background color.
SkColor background_color = ParseHexColor(color_name);
set_background(views::Background::CreateSolidBackground(background_color));

#if defined(OS_WIN)
// Set the background color of native window.
HBRUSH brush = CreateSolidBrush(skia::SkColorToCOLORREF(background_color));
ULONG_PTR previous_brush = SetClassLongPtr(
GetAcceleratedWidget(), GCLP_HBRBACKGROUND, (LONG)brush);
if (previous_brush)
DeleteObject((HBRUSH)previous_brush);
#endif
}

void NativeWindowViews::SetMenu(ui::MenuModel* menu_model) {
if (menu_model == nullptr) {
// Remove accelerators
Expand Down
1 change: 1 addition & 0 deletions atom/browser/native_window_views.h
Expand Up @@ -77,6 +77,7 @@ class NativeWindowViews : public NativeWindow,
void SetSkipTaskbar(bool skip) override;
void SetKiosk(bool kiosk) override;
bool IsKiosk() override;
void SetBackgroundColor(const std::string& color_name) override;
void SetMenu(ui::MenuModel* menu_model) override;
gfx::NativeWindow GetNativeWindow() override;
void SetOverlayIcon(const gfx::Image& overlay,
Expand Down

0 comments on commit e36d455

Please sign in to comment.