feat: promisify app.dock.show() (#16904)
* feat: promisify app.dock.show * add a spec
This commit is contained in:
parent
cd9bf72ee8
commit
ca83d36426
4 changed files with 30 additions and 15 deletions
|
@ -171,7 +171,7 @@ class Browser : public WindowListObserver {
|
|||
|
||||
// Hide/Show dock.
|
||||
void DockHide();
|
||||
void DockShow();
|
||||
v8::Local<v8::Promise> DockShow(v8::Isolate* isolate);
|
||||
bool DockIsVisible();
|
||||
|
||||
// Set docks' menu.
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "atom/browser/window_list.h"
|
||||
#include "atom/common/application_info.h"
|
||||
#include "atom/common/platform_util.h"
|
||||
#include "atom/common/promise_util.h"
|
||||
#include "base/mac/bundle_locations.h"
|
||||
#include "base/mac/foundation_util.h"
|
||||
#include "base/mac/mac_util.h"
|
||||
|
@ -338,7 +339,8 @@ bool Browser::DockIsVisible() {
|
|||
NSApplicationActivationPolicyRegular);
|
||||
}
|
||||
|
||||
void Browser::DockShow() {
|
||||
v8::Local<v8::Promise> Browser::DockShow(v8::Isolate* isolate) {
|
||||
scoped_refptr<util::Promise> promise = new util::Promise(isolate);
|
||||
BOOL active = [[NSRunningApplication currentApplication] isActive];
|
||||
ProcessSerialNumber psn = {0, kCurrentProcess};
|
||||
if (active) {
|
||||
|
@ -357,11 +359,14 @@ void Browser::DockShow() {
|
|||
dispatch_after(one_ms, dispatch_get_main_queue(), ^{
|
||||
[[NSRunningApplication currentApplication]
|
||||
activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
||||
promise->Resolve();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
|
||||
promise->Resolve();
|
||||
}
|
||||
return promise->GetHandle();
|
||||
}
|
||||
|
||||
void Browser::DockSetMenu(AtomMenuModel* model) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue