fix: allow Tray with title only (without icon) on Mac (#13851)

This commit is contained in:
Milan Burda 2018-08-30 11:16:56 +02:00 committed by Samuel Attard
parent 1b7418fb7b
commit 5a0770f1d3
2 changed files with 40 additions and 20 deletions

View file

@ -47,8 +47,7 @@ const CGFloat kVerticalTitleMargin = 2;
[super dealloc];
}
- (id)initWithImage:(NSImage*)image icon:(atom::TrayIconCocoa*)icon {
image_.reset([image copy]);
- (id)initWithIcon:(atom::TrayIconCocoa*)icon {
trayIcon_ = icon;
menuController_ = nil;
highlight_mode_ = atom::TrayIcon::HighlightMode::SELECTION;
@ -164,6 +163,8 @@ const CGFloat kVerticalTitleMargin = 2;
// The width of the icon.
- (CGFloat)iconWidth {
if (!image_ && title_)
return kHorizontalMargin;
CGFloat thickness = [[NSStatusBar systemStatusBar] thickness];
CGFloat imageHeight = [image_ size].height;
CGFloat imageWidth = [image_ size].width;
@ -432,7 +433,9 @@ const CGFloat kVerticalTitleMargin = 2;
namespace atom {
TrayIconCocoa::TrayIconCocoa() {}
TrayIconCocoa::TrayIconCocoa() {
status_item_view_.reset([[StatusItemView alloc] initWithIcon:this]);
}
TrayIconCocoa::~TrayIconCocoa() {
[status_item_view_ removeItem];
@ -441,12 +444,7 @@ TrayIconCocoa::~TrayIconCocoa() {
}
void TrayIconCocoa::SetImage(const gfx::Image& image) {
if (status_item_view_) {
[status_item_view_ setImage:image.AsNSImage()];
} else {
status_item_view_.reset(
[[StatusItemView alloc] initWithImage:image.AsNSImage() icon:this]);
}
[status_item_view_ setImage:image.IsEmpty() ? nil : image.AsNSImage()];
}
void TrayIconCocoa::SetPressedImage(const gfx::Image& image) {

View file

@ -2,18 +2,18 @@ const {remote} = require('electron')
const {Menu, Tray, nativeImage} = remote
describe('tray module', () => {
let tray
beforeEach(() => {
tray = new Tray(nativeImage.createEmpty())
})
afterEach(() => {
tray.destroy()
tray = null
})
describe('tray.setContextMenu', () => {
let tray
beforeEach(() => {
tray = new Tray(nativeImage.createEmpty())
})
afterEach(() => {
tray.destroy()
tray = null
})
it('accepts menu instance', () => {
tray.setContextMenu(new Menu())
})
@ -22,4 +22,26 @@ describe('tray module', () => {
tray.setContextMenu(null)
})
})
describe('tray.setImage', () => {
it('accepts empty image', () => {
tray.setImage(nativeImage.createEmpty())
})
})
describe('tray.setPressedImage', () => {
it('accepts empty image', () => {
tray.setPressedImage(nativeImage.createEmpty())
})
})
describe('tray.setTitle', () => {
it('accepts non-empty string', () => {
tray.setTitle('Hello World!')
})
it('accepts empty string', () => {
tray.setTitle('')
})
})
})