mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-11 16:32:59 +00:00
14a6956635
Use addGlobalMonitorForEventsMatchingMask instead of CGEventTapCreate to monitor for mouse clicks outside of the application while context menus are displayed. Using addGlobalMonitorForEventsMatchingMask prevents the display of the privacy "Keystroke Receiving" dialog when listening for mouse clicks. Differential Revision: https://phabricator.services.mozilla.com/D39973 --HG-- extra : moz-landing-system : lando
50 lines
1.2 KiB
Objective-C
50 lines
1.2 KiB
Objective-C
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef nsToolkit_h_
|
|
#define nsToolkit_h_
|
|
|
|
#include "nscore.h"
|
|
|
|
#import <Carbon/Carbon.h>
|
|
#import <Cocoa/Cocoa.h>
|
|
#import <objc/Object.h>
|
|
#import <IOKit/IOKitLib.h>
|
|
|
|
class nsToolkit {
|
|
public:
|
|
nsToolkit();
|
|
virtual ~nsToolkit();
|
|
|
|
static nsToolkit* GetToolkit();
|
|
|
|
static void Shutdown() {
|
|
delete gToolkit;
|
|
gToolkit = nullptr;
|
|
}
|
|
|
|
static void PostSleepWakeNotification(const char* aNotification);
|
|
|
|
static nsresult SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod,
|
|
bool classMethods = false);
|
|
|
|
void MonitorAllProcessMouseEvents();
|
|
void StopMonitoringAllProcessMouseEvents();
|
|
|
|
protected:
|
|
nsresult RegisterForSleepWakeNotifications();
|
|
void RemoveSleepWakeNotifications();
|
|
|
|
protected:
|
|
static nsToolkit* gToolkit;
|
|
|
|
CFRunLoopSourceRef mSleepWakeNotificationRLS;
|
|
io_object_t mPowerNotifier;
|
|
|
|
id mAllProcessMouseMonitor;
|
|
};
|
|
|
|
#endif // nsToolkit_h_
|