Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f743bdaa5b | |||
| 6444d3f9a2 | |||
| e7f7ee50a6 | |||
| 7dfde95369 | |||
| 0d54ede869 | |||
| f12ed861b0 | |||
| bf4329178d | |||
| 0e0bc77433 | |||
| 37b480f32a | |||
| 2d1bb41d0c |
@@ -1,3 +1,9 @@
|
||||
2.3.6 2016/10/30
|
||||
- Improve compatibility with the 10.12 SDK [thanks to Clemens Schulz]
|
||||
|
||||
2.3.5 2016/9/7
|
||||
- Improve Italian localization [zoul]
|
||||
|
||||
2.3.4 2016/8/12
|
||||
- Simplified and traditional Chinese localization [MichaelRow]
|
||||
- Add Korean, Dutch, Polish, Russian & update Spanish localizations [Radek Pietruszewski]
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ Please note that this framework supports older OS X versions down to 10.6. When
|
||||
|
||||
# Commit Messages
|
||||
|
||||
Please use descriptive commit message. As an example, _Bug fix_ commit message doesn’t say much, while _Fixed a memory-management bug in formatting code_ works much better.
|
||||
Please use descriptive commit message. As an example, _Bug fix_ commit message doesn’t say much, while _Fix a memory-management bug in formatting code_ works much better. A [nice detailed article about writing commit messages](http://chris.beams.io/posts/git-commit/) is also available.
|
||||
|
||||
# How to Release a New Version
|
||||
|
||||
@@ -26,4 +26,4 @@ Now push both the commits and tags (`--tags`) to GitHub and push the new podspec
|
||||
|
||||
This will run sanity checks on the podspec and fail if the spec does not validate.
|
||||
|
||||
That’s it. Go have a beer or a cup of tea to celebrate.
|
||||
That’s it. Go have a beer or a cup of tea to celebrate.
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ static void *MASObservingContext = &MASObservingContext;
|
||||
|
||||
- (void) setHardcodedShortcutEnabled: (BOOL) enabled
|
||||
{
|
||||
MASShortcut *shortcut = [MASShortcut shortcutWithKeyCode:kVK_F2 modifierFlags:NSCommandKeyMask];
|
||||
MASShortcut *shortcut = [MASShortcut shortcutWithKeyCode:kVK_F2 modifierFlags:NSEventModifierFlagCommand];
|
||||
if (enabled) {
|
||||
[[MASShortcutMonitor sharedMonitor] registerShortcut:shortcut withAction:^{
|
||||
[self playShortcutFeedback];
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.3.4</string>
|
||||
<string>2.3.6</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.3.4</string>
|
||||
<string>2.3.6</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © Vadim Shpakovski. All rights reserved.</string>
|
||||
</dict>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#import <Carbon/Carbon.h>
|
||||
#import <AppKit/AppKit.h>
|
||||
#import "MASKeyMasks.h"
|
||||
|
||||
// These glyphs are missed in Carbon.h
|
||||
enum {
|
||||
@@ -30,14 +31,14 @@ NS_INLINE NSString* NSStringFromMASKeyCode(unsigned short ch)
|
||||
|
||||
NS_INLINE NSUInteger MASPickCocoaModifiers(NSUInteger flags)
|
||||
{
|
||||
return (flags & (NSControlKeyMask | NSShiftKeyMask | NSAlternateKeyMask | NSCommandKeyMask));
|
||||
return (flags & (NSEventModifierFlagControl | NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand));
|
||||
}
|
||||
|
||||
NS_INLINE UInt32 MASCarbonModifiersFromCocoaModifiers(NSUInteger cocoaFlags)
|
||||
{
|
||||
return
|
||||
(cocoaFlags & NSCommandKeyMask ? cmdKey : 0)
|
||||
| (cocoaFlags & NSAlternateKeyMask ? optionKey : 0)
|
||||
| (cocoaFlags & NSControlKeyMask ? controlKey : 0)
|
||||
| (cocoaFlags & NSShiftKeyMask ? shiftKey : 0);
|
||||
(cocoaFlags & NSEventModifierFlagCommand ? cmdKey : 0)
|
||||
| (cocoaFlags & NSEventModifierFlagOption ? optionKey : 0)
|
||||
| (cocoaFlags & NSEventModifierFlagControl ? controlKey : 0)
|
||||
| (cocoaFlags & NSEventModifierFlagShift ? shiftKey : 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#import <Availability.h>
|
||||
|
||||
// https://github.com/shpakovski/MASShortcut/issues/99
|
||||
//
|
||||
// Long story short: NSControlKeyMask and friends were replaced with NSEventModifierFlagControl
|
||||
// and similar in macOS Sierra. The project builds fine & clean, but including MASShortcut in
|
||||
// a project with deployment target set to 10.12 results in several deprecation warnings because
|
||||
// of the control masks. Simply replacing the old symbols with the new ones isn’t an option,
|
||||
// since it breaks the build on older SDKs – in Travis, for example.
|
||||
//
|
||||
// It should be safe to remove this whole thing once the 10.12 SDK is ubiquitous.
|
||||
|
||||
#if __MAC_OS_X_VERSION_MAX_ALLOWED < 101200
|
||||
#define NSEventModifierFlagCommand NSCommandKeyMask
|
||||
#define NSEventModifierFlagControl NSControlKeyMask
|
||||
#define NSEventModifierFlagOption NSAlternateKeyMask
|
||||
#define NSEventModifierFlagShift NSShiftKeyMask
|
||||
#endif
|
||||
@@ -1,7 +1,8 @@
|
||||
#import "MASKeyMasks.h"
|
||||
#import "MASShortcut.h"
|
||||
#import "MASShortcutValidator.h"
|
||||
#import "MASShortcutMonitor.h"
|
||||
#import "MASShortcutBinder.h"
|
||||
#import "MASDictionaryTransformer.h"
|
||||
#import "MASShortcutView.h"
|
||||
#import "MASShortcutView+Bindings.h"
|
||||
#import "MASShortcutView+Bindings.h"
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
# coding: utf-8
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'MASShortcut'
|
||||
s.version = '2.3.4'
|
||||
s.version = '2.3.6'
|
||||
s.summary = 'Modern framework for managing global keyboard shortcuts compatible with Mac App Store'
|
||||
s.homepage = 'https://github.com/shpakovski/MASShortcut'
|
||||
s.license = 'BSD 2-clause'
|
||||
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.platform = :osx
|
||||
s.osx.deployment_target = "10.6"
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.3.4' }
|
||||
s.source = { :git => 'https://github.com/shpakovski/MASShortcut.git', :tag => '2.3.6' }
|
||||
s.source_files = 'Framework/*.{h,m}'
|
||||
s.exclude_files = 'Framework/*Tests.m'
|
||||
s.osx.frameworks = 'Carbon', 'AppKit'
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
0D827D9F19911A190010B8EF /* MASShortcutValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D827D9D19911A190010B8EF /* MASShortcutValidator.m */; };
|
||||
0D827DA519912D240010B8EF /* MASShortcutMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D827DA319912D240010B8EF /* MASShortcutMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0D827DAD199132840010B8EF /* MASShortcutBinder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D827DAB199132840010B8EF /* MASShortcutBinder.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0DA8BCFC1DC37D8000C96EB9 /* MASKeyMasks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DA8BCFB1DC37D8000C96EB9 /* MASKeyMasks.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0DC2F17619922798003A0131 /* MASHotKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DC2F17419922798003A0131 /* MASHotKey.h */; };
|
||||
0DC2F17719922798003A0131 /* MASHotKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DC2F17519922798003A0131 /* MASHotKey.m */; };
|
||||
0DC2F17C199232EA003A0131 /* MASShortcutMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D827DA419912D240010B8EF /* MASShortcutMonitor.m */; };
|
||||
@@ -114,6 +115,7 @@
|
||||
0D827DA419912D240010B8EF /* MASShortcutMonitor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASShortcutMonitor.m; path = Framework/MASShortcutMonitor.m; sourceTree = "<group>"; };
|
||||
0D827DAB199132840010B8EF /* MASShortcutBinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MASShortcutBinder.h; path = Framework/MASShortcutBinder.h; sourceTree = "<group>"; };
|
||||
0D827DAC199132840010B8EF /* MASShortcutBinder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASShortcutBinder.m; path = Framework/MASShortcutBinder.m; sourceTree = "<group>"; };
|
||||
0DA8BCFB1DC37D8000C96EB9 /* MASKeyMasks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MASKeyMasks.h; path = Framework/MASKeyMasks.h; sourceTree = "<group>"; };
|
||||
0DC2F17419922798003A0131 /* MASHotKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MASHotKey.h; path = Framework/MASHotKey.h; sourceTree = "<group>"; };
|
||||
0DC2F17519922798003A0131 /* MASHotKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASHotKey.m; path = Framework/MASHotKey.m; sourceTree = "<group>"; };
|
||||
0DC2F18819925F8F003A0131 /* MASShortcutBinderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MASShortcutBinderTests.m; path = Framework/MASShortcutBinderTests.m; sourceTree = "<group>"; };
|
||||
@@ -237,6 +239,7 @@
|
||||
0D827DA019912A660010B8EF /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0DA8BCFB1DC37D8000C96EB9 /* MASKeyMasks.h */,
|
||||
0D827D9619910FF70010B8EF /* MASKeyCodes.h */,
|
||||
0D827D1B1990D55E0010B8EF /* MASShortcut.h */,
|
||||
0D827D1C1990D55E0010B8EF /* MASShortcut.m */,
|
||||
@@ -293,6 +296,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0DA8BCFC1DC37D8000C96EB9 /* MASKeyMasks.h in Headers */,
|
||||
0D827D9719910FF70010B8EF /* MASKeyCodes.h in Headers */,
|
||||
0D827D2B1990D55E0010B8EF /* MASShortcutView.h in Headers */,
|
||||
0D827D99199110F60010B8EF /* Prefix.pch in Headers */,
|
||||
@@ -371,7 +375,7 @@
|
||||
0D827CCA1990D4420010B8EF /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0730;
|
||||
LastUpgradeCheck = 0800;
|
||||
ORGANIZATIONNAME = "Vadim Shpakovski";
|
||||
TargetAttributes = {
|
||||
0D827D8219910AFF0010B8EF = {
|
||||
@@ -533,6 +537,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
@@ -542,14 +547,19 @@
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
@@ -573,6 +583,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
@@ -582,14 +593,19 @@
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0730"
|
||||
LastUpgradeVersion = "0800"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0730"
|
||||
LastUpgradeVersion = "0800"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"Cancel" = "Annulla";
|
||||
|
||||
/* Tooltip for non-empty shortcut button */
|
||||
"Click to record new shortcut" = "Click to record new shortcut";
|
||||
"Click to record new shortcut" = "Cliccare per registrare una nuova combinazione";
|
||||
|
||||
/* Tooltip for hint button near the non-empty shortcut */
|
||||
"Delete shortcut" = "Delete shortcut";
|
||||
"Delete shortcut" = "Cancella scorciatoia";
|
||||
|
||||
/* VoiceOver title */
|
||||
"keyboard shortcut" = "keyboard shortcut";
|
||||
"keyboard shortcut" = "Scorciatoia da tastiera";
|
||||
|
||||
/* Alert button when shortcut is already used */
|
||||
"OK" = "OK";
|
||||
@@ -17,31 +17,31 @@
|
||||
"Record Shortcut" = "Registra scorciatoia";
|
||||
|
||||
/* VoiceOver: Shortcut cleared */
|
||||
"Shortcut cleared" = "Shortcut cleared";
|
||||
"Shortcut cleared" = "Scorciatoia rimossa";
|
||||
|
||||
/* VoiceOver: Shortcut set */
|
||||
"Shortcut set" = "Shortcut set";
|
||||
"Shortcut set" = "Scorciatoia impostata";
|
||||
|
||||
/* Shortcut glyph name for SPACE key */
|
||||
"Space" = "Spazio";
|
||||
|
||||
/* Title for alert when shortcut is already used */
|
||||
"The key combination %@ cannot be used" = "The key combination %@ cannot be used";
|
||||
"The key combination %@ cannot be used" = "Questa combinazione %@ di tasti non può essere usata";
|
||||
|
||||
/* Message for alert when shortcut is already used by the system */
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences.";
|
||||
"This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Questa combinazione di tasti non può essere usata perchè è già usata da una scorciatoia da tastiera a livello di Sistema.\nSe volete davvero usare questa combinazione di tasti, la maggior parte delle scorciatoie possono essere cambiate nel pannello Tastiera e Mouse delle Preferenze di Sistema.";
|
||||
|
||||
/* Message for alert when shortcut is already used */
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "This shortcut cannot be used because it is already used by the menu item ‘%@’.";
|
||||
"This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Questa combinazione di tasti non può essere usata perchè è già usata dalla voce di menù ‘%@’.";
|
||||
|
||||
/* VoiceOver shortcut help */
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut.";
|
||||
"To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Per registrare una nuova scorciatoia, cliccare su questo pulsante e poi inserire la muova scorciatoia o premere cancella per resettare una scorciatoia esistente.";
|
||||
|
||||
/* Non-empty shortcut button in recording state */
|
||||
"Type New Shortcut" = "Digita scorciatoia";
|
||||
"Type New Shortcut" = "Digita nuova";
|
||||
|
||||
/* Empty shortcut button in recording state */
|
||||
"Type Shortcut" = "Digita scorciatoia";
|
||||
|
||||
/* Cancel action button for non-empty shortcut in recording state */
|
||||
"Use Old Shortcut" = "Use Old Shortcut";
|
||||
"Use Old Shortcut" = "Usare vecchia";
|
||||
|
||||
Reference in New Issue
Block a user