[vlc-commits] macosx: remove core interaction singleton
Felix Paul Kühne
git at videolan.org
Sat Apr 13 22:10:06 CEST 2019
vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Sat Apr 13 22:07:45 2019 +0200| [1c2f90725a016ee19523f63c23fb68e5791ce35e] | committer: Felix Paul Kühne
macosx: remove core interaction singleton
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1c2f90725a016ee19523f63c23fb68e5791ce35e
---
.../package/macosx/VLC.xcodeproj/project.pbxproj | 10 +-
modules/gui/macosx/Makefile.am | 6 +-
.../macosx/coreinteraction/VLCCoreInteraction.h | 83 ----
.../macosx/coreinteraction/VLCCoreInteraction.m | 542 ---------------------
modules/gui/macosx/extensions/misc.m | 1 -
modules/gui/macosx/main/VLCMain+OldPrefs.m | 1 -
modules/gui/macosx/main/VLCMain.m | 28 +-
.../VLCClickerManager.h | 0
.../VLCClickerManager.m | 0
po/POTFILES.in | 6 +-
10 files changed, 28 insertions(+), 649 deletions(-)
diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index 3912b982e0..4e16347b73 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -19,7 +19,6 @@
1C31139F1E508C6900D4DD76 /* VLCMainWindowControlsBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D5678EF1D5BA397002698F3 /* VLCMainWindowControlsBar.m */; };
1C3113A11E508C6900D4DD76 /* VLCConvertAndSaveWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0663351566C34C003A411C /* VLCConvertAndSaveWindowController.m */; };
1C3113A31E508C6900D4DD76 /* VLCCoreDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = CC4A33210F8CB017000FC4A7 /* VLCCoreDialogProvider.m */; };
- 1C3113A51E508C6900D4DD76 /* VLCCoreInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = CC448A6113B68A0B009F72E0 /* VLCCoreInteraction.m */; };
1C3113A71E508C6900D4DD76 /* VLCLogWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B418302AC000FAE9B7 /* VLCLogWindowController.m */; };
1C3113A91E508C6900D4DD76 /* VLCDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C39ABBD1DA9AB9B00FE052A /* VLCDocumentController.m */; };
1C3113AB1E508C6900D4DD76 /* VLCExtensionsDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CCED71114C0D4A90057F8D1 /* VLCExtensionsDialogProvider.m */; };
@@ -559,8 +558,6 @@
CC1941240B9C1F8400635F6B /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; };
CC3DC89B0A7CDB9600B53F32 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
CC426FD01020D44F00A32659 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = ../../../contrib/Sparkle.framework; sourceTree = SOURCE_ROOT; };
- CC448A6013B68A0B009F72E0 /* VLCCoreInteraction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCCoreInteraction.h; sourceTree = "<group>"; };
- CC448A6113B68A0B009F72E0 /* VLCCoreInteraction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCCoreInteraction.m; sourceTree = "<group>"; };
CC448A6213B68A0B009F72E0 /* VLCMainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCMainWindow.h; sourceTree = "<group>"; };
CC448A6313B68A0B009F72E0 /* VLCMainWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCMainWindow.m; sourceTree = "<group>"; };
CC461F6C160078340022423C /* VLCTextfieldPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VLCTextfieldPanelController.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
@@ -850,10 +847,6 @@
1C1ED50A2204AFA900811EC0 /* coreinteraction */ = {
isa = PBXGroup;
children = (
- 7D66D4342200BC340040D04A /* VLCClickerManager.h */,
- 7D66D4352200BC340040D04A /* VLCClickerManager.m */,
- CC448A6013B68A0B009F72E0 /* VLCCoreInteraction.h */,
- CC448A6113B68A0B009F72E0 /* VLCCoreInteraction.m */,
7D66D4372200C5B80040D04A /* VLCVideoFilterHelper.h */,
7D66D4382200C5B80040D04A /* VLCVideoFilterHelper.m */,
);
@@ -873,6 +866,8 @@
7DF812F01B555C8E0052293C /* VLCKeyboardBacklightControl.m */,
7DD2F5C32081B73B007EE187 /* VLCRemoteControlService.h */,
7DD2F5C42081B73B007EE187 /* VLCRemoteControlService.m */,
+ 7D66D4342200BC340040D04A /* VLCClickerManager.h */,
+ 7D66D4352200BC340040D04A /* VLCClickerManager.m */,
);
path = "os-integration";
sourceTree = "<group>";
@@ -1633,7 +1628,6 @@
1C3113A11E508C6900D4DD76 /* VLCConvertAndSaveWindowController.m in Sources */,
1C3113A31E508C6900D4DD76 /* VLCCoreDialogProvider.m in Sources */,
6B2EFC631F281A0900F3C0EA /* VLCVolumeSliderCell.m in Sources */,
- 1C3113A51E508C6900D4DD76 /* VLCCoreInteraction.m in Sources */,
1C3113A71E508C6900D4DD76 /* VLCLogWindowController.m in Sources */,
1C3113A91E508C6900D4DD76 /* VLCDocumentController.m in Sources */,
1C3113AB1E508C6900D4DD76 /* VLCExtensionsDialogProvider.m in Sources */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 4aa0319f57..a326b6ab3a 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -26,10 +26,6 @@ libmacosx_plugin_la_LDFLAGS += -Wl,-framework,Sparkle
endif
libmacosx_plugin_la_SOURCES = \
- gui/macosx/coreinteraction/VLCClickerManager.h \
- gui/macosx/coreinteraction/VLCClickerManager.m \
- gui/macosx/coreinteraction/VLCCoreInteraction.h \
- gui/macosx/coreinteraction/VLCCoreInteraction.m \
gui/macosx/coreinteraction/VLCVideoFilterHelper.h \
gui/macosx/coreinteraction/VLCVideoFilterHelper.m \
gui/macosx/extensions/NSScreen+VLCAdditions.h \
@@ -87,6 +83,8 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/menus/renderers/VLCRendererMenuController.h \
gui/macosx/menus/renderers/VLCRendererMenuController.m \
gui/macosx/os-integration/Spotify.h \
+ gui/macosx/os-integration/VLCClickerManager.h \
+ gui/macosx/os-integration/VLCClickerManager.m \
gui/macosx/os-integration/VLCDocumentController.h \
gui/macosx/os-integration/VLCDocumentController.m \
gui/macosx/os-integration/VLCKeyboardBacklightControl.h \
diff --git a/modules/gui/macosx/coreinteraction/VLCCoreInteraction.h b/modules/gui/macosx/coreinteraction/VLCCoreInteraction.h
deleted file mode 100644
index 6d96e52ff7..0000000000
--- a/modules/gui/macosx/coreinteraction/VLCCoreInteraction.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*****************************************************************************
- * CoreInteraction.h: MacOS X interface module
- *****************************************************************************
- * Copyright (C) 2011-2019 Felix Paul Kühne
- *
- * Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#import <Cocoa/Cocoa.h>
-
-#include <vlc_common.h>
-
- at interface VLCCoreInteraction : NSObject
-
-+ (VLCCoreInteraction *)sharedInstance;
- at property (readwrite) int volume;
- at property (readonly, nonatomic) float maxVolume;
- at property (readwrite) int playbackRate;
- at property (nonatomic, readwrite) BOOL aspectRatioIsLocked;
- at property (readonly) NSInteger durationOfCurrentPlaylistItem;
- at property (readonly) NSURL * URLOfCurrentPlaylistItem;
- at property (readonly) NSString * nameOfCurrentPlaylistItem;
- at property (nonatomic, readwrite) BOOL mute;
-
-- (void)play;
-- (void)playOrPause;
-- (void)pause;
-- (void)stop;
-- (void)faster;
-- (void)slower;
-- (void)normalSpeed;
-- (void)toggleRecord;
-- (int)next;
-- (int)previous;
-- (void)forwardExtraShort;
-- (void)backwardExtraShort;
-- (void)forwardShort;
-- (void)backwardShort;
-- (void)forwardMedium;
-- (void)backwardMedium;
-- (void)forwardLong;
-- (void)backwardLong;
-- (void)jumpToTime:(vlc_tick_t)time;
-
-- (void)repeatOne;
-- (void)repeatAll;
-- (void)repeatOff;
-- (void)shuffle;
-
-- (void)volumeUp;
-- (void)volumeDown;
-- (void)toggleMute;
-- (void)showPosition;
-
-- (void)menuFocusActivate;
-- (void)moveMenuFocusLeft;
-- (void)moveMenuFocusRight;
-- (void)moveMenuFocusUp;
-- (void)moveMenuFocusDown;
-
-- (void)addSubtitlesToCurrentInput:(NSArray *)paths;
-
-- (void)toggleFullscreen;
-
-- (BOOL)keyEvent:(NSEvent *)o_event;
-- (void)updateCurrentlyUsedHotkeys;
-- (BOOL)hasDefinedShortcutKey:(NSEvent *)o_event force:(BOOL)b_force;
-
- at end
diff --git a/modules/gui/macosx/coreinteraction/VLCCoreInteraction.m b/modules/gui/macosx/coreinteraction/VLCCoreInteraction.m
deleted file mode 100644
index c4297b0b7d..0000000000
--- a/modules/gui/macosx/coreinteraction/VLCCoreInteraction.m
+++ /dev/null
@@ -1,542 +0,0 @@
-/*****************************************************************************
- * CoreInteraction.m: MacOS X interface module
- *****************************************************************************
- * Copyright (C) 2011-2019 Felix Paul Kühne
- *
- * Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#import "VLCCoreInteraction.h"
-
-#import <vlc_url.h>
-#import <vlc_modules.h>
-#import <vlc_plugin.h>
-#import <vlc_actions.h>
-
-#import "main/VLCMain.h"
-#import "coreinteraction/VLCClickerManager.h"
-#import "playlist/VLCPlaylistController.h"
-#import "playlist/VLCPlayerController.h"
-#import "playlist/VLCPlaylistModel.h"
-#import "windows/VLCOpenWindowController.h"
-
-static int BossCallback(vlc_object_t *p_this, const char *psz_var,
- vlc_value_t oldval, vlc_value_t new_val, void *param)
-{
- @autoreleasepool {
- dispatch_async(dispatch_get_main_queue(), ^{
- [[VLCCoreInteraction sharedInstance] pause];
- [[NSApplication sharedApplication] hide:nil];
- });
-
- return VLC_SUCCESS;
- }
-}
-
- at interface VLCCoreInteraction ()
-{
- float f_currentPlaybackRate;
-
- float f_maxVolume;
-
- NSArray *_usedHotkeys;
-
- VLCClickerManager *_clickerManager;
- VLCPlaylistController *_playlistController;
- VLCPlayerController *_playerController;
-}
- at end
-
- at implementation VLCCoreInteraction
-
-#pragma mark - Initialization
-
-+ (VLCCoreInteraction *)sharedInstance
-{
- static VLCCoreInteraction *sharedInstance = nil;
- static dispatch_once_t pred;
-
- dispatch_once(&pred, ^{
- sharedInstance = [VLCCoreInteraction new];
- });
-
- return sharedInstance;
-}
-
-- (instancetype)init
-{
- self = [super init];
- if (self) {
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter addObserver:self
- selector:@selector(applicationWillTerminate:)
- name:NSApplicationWillTerminateNotification
- object:nil];
-
- _clickerManager = [[VLCClickerManager alloc] init];
- _playlistController = [[VLCMain sharedInstance] playlistController];
- _playerController = [_playlistController playerController];
-
- intf_thread_t *p_intf = getIntf();
- libvlc_int_t* libvlc = vlc_object_instance(p_intf);
- var_AddCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self);
- }
- return self;
-}
-
-- (void)applicationWillTerminate:(NSNotification *)notification
-{
- // Dealloc is never called because this is a singleton, so we should cleanup manually before termination
- intf_thread_t *p_intf = getIntf();
- libvlc_int_t* libvlc = vlc_object_instance(p_intf);
- var_DelCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self);
- [[NSNotificationCenter defaultCenter] removeObserver: self];
- _clickerManager = nil;
- _usedHotkeys = nil;
-}
-
-#pragma mark - Playback Controls
-
-- (void)play
-{
- [_playlistController startPlaylist];
-}
-
-- (void)playOrPause
-{
- input_item_t *p_input_item = _playlistController.currentlyPlayingInputItem;
-
- if (p_input_item) {
- [_playerController togglePlayPause];
- input_item_Release(p_input_item);
- } else {
- if (_playlistController.playlistModel.numberOfPlaylistItems == 0)
- [[[VLCMain sharedInstance] open] openFileGeneric];
- else
- [_playlistController startPlaylist];
- }
-}
-
-- (void)pause
-{
- [_playlistController pausePlayback];
-}
-
-- (void)stop
-{
- [_playlistController stopPlayback];
-}
-
-- (void)faster
-{
- [_playerController incrementPlaybackRate];
-}
-
-- (void)slower
-{
- [_playerController decrementPlaybackRate];
-}
-
-- (void)normalSpeed
-{
- _playerController.playbackRate = 1.;
-}
-
-- (void)toggleRecord
-{
- [_playerController toggleRecord];
-}
-
-- (void)setPlaybackRate:(int)i_value
-{
- double speed = pow(2, (double)i_value / 17);
- if (f_currentPlaybackRate != speed) {
- _playerController.playbackRate = speed;
- }
- f_currentPlaybackRate = speed;
-}
-
-- (int)playbackRate
-{
- f_currentPlaybackRate = _playerController.playbackRate;
-
- double value = 17 * log(f_currentPlaybackRate) / log(2.);
- int returnValue = (int) ((value > 0) ? value + .5 : value - .5);
-
- if (returnValue < -34)
- returnValue = -34;
- else if (returnValue > 34)
- returnValue = 34;
-
- return returnValue;
-}
-
-- (int)previous
-{
- return [_playlistController playPreviousItem];
-}
-
-- (int)next
-{
- return [_playlistController playNextItem];
-}
-
-- (NSInteger)durationOfCurrentPlaylistItem
-{
- return SEC_FROM_VLC_TICK(_playerController.durationOfCurrentMediaItem);
-}
-
-- (NSURL*)URLOfCurrentPlaylistItem
-{
- return _playerController.URLOfCurrentMediaItem;
-}
-
-- (NSString*)nameOfCurrentPlaylistItem
-{
- return _playerController.nameOfCurrentMediaItem;
-}
-
-- (void)forwardExtraShort
-{
- [_playerController jumpForwardExtraShort];
-}
-
-- (void)backwardExtraShort
-{
- [_playerController jumpBackwardExtraShort];
-}
-
-- (void)forwardShort
-{
- [_playerController jumpForwardShort];
-}
-
-- (void)backwardShort
-{
- [_playerController jumpBackwardShort];
-}
-
-- (void)forwardMedium
-{
- [_playerController jumpForwardMedium];
-}
-
-- (void)backwardMedium
-{
- [_playerController jumpBackwardMedium];
-}
-
-- (void)forwardLong
-{
- [_playerController jumpForwardLong];
-}
-
-- (void)backwardLong
-{
- [_playerController jumpBackwardLong];
-}
-
-- (void)shuffle
-{
- BOOL on = NO;
- if (_playlistController.playbackOrder == VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL) {
- _playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_RANDOM;
- on = YES;
- } else {
- _playlistController.playbackOrder = VLC_PLAYLIST_PLAYBACK_ORDER_NORMAL;
- }
- config_PutInt("random", on);
-
- vout_thread_t *p_vout = [_playerController mainVideoOutputThread];
- if (!p_vout) {
- return;
- }
- if (on) {
- [_playerController displayOSDMessage:_NS("Random On")];
- } else {
- [_playerController displayOSDMessage:_NS("Random Off")];
- }
-
- vout_Release(p_vout);
-}
-
-- (void)repeatAll
-{
- _playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_ALL;
- [_playerController displayOSDMessage:_NS("Repeat All")];
-}
-
-- (void)repeatOne
-{
- _playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_CURRENT;
- [_playerController displayOSDMessage:_NS("Repeat One")];
-}
-
-- (void)repeatOff
-{
- _playlistController.playbackRepeat = VLC_PLAYLIST_PLAYBACK_REPEAT_NONE;
- [_playerController displayOSDMessage:_NS("Repeat Off")];
-}
-
-- (void)jumpToTime:(vlc_tick_t)time
-{
- [_playerController setTimePrecise:time];
-}
-
-- (void)volumeUp
-{
- [_playerController incrementVolume];
-}
-
-- (void)volumeDown
-{
- [_playerController decrementVolume];
-}
-
-- (void)toggleMute
-{
- [_playerController toggleMute];
-}
-
-- (BOOL)mute
-{
- return _playerController.mute;
-}
-
-- (int)volume
-{
- return (int)lroundf(_playerController.volume * AOUT_VOLUME_DEFAULT);
-}
-
-- (void)setVolume: (int)i_value
-{
- if (i_value >= self.maxVolume)
- i_value = self.maxVolume;
-
- _playerController.volume = i_value / (float)AOUT_VOLUME_DEFAULT;
-}
-
-- (float)maxVolume
-{
- if (f_maxVolume == 0.) {
- f_maxVolume = (float)var_InheritInteger(getIntf(), "macosx-max-volume") / 100. * AOUT_VOLUME_DEFAULT;
- }
-
- return f_maxVolume;
-}
-
-- (void)addSubtitlesToCurrentInput:(NSArray *)paths
-{
- NSUInteger count = [paths count];
- for (int i = 0; i < count ; i++) {
- NSURL *url = [NSURL fileURLWithPath:paths[i]];
- [_playerController addAssociatedMediaToCurrentFromURL:url
- ofCategory:SPU_ES
- shallSelectTrack:YES
- shallDisplayOSD:YES
- shallVerifyExtension:NO];
- }
-}
-
-- (void)showPosition
-{
- [_playerController displayPosition];
-}
-
-#pragma mark - video output stuff
-
-- (void)setAspectRatioIsLocked:(BOOL)b_value
-{
- config_PutInt("macosx-lock-aspect-ratio", b_value);
-}
-
-- (BOOL)aspectRatioIsLocked
-{
- return config_GetInt("macosx-lock-aspect-ratio");
-}
-
-- (void)toggleFullscreen
-{
- BOOL b_fs = !_playerController.fullscreen;
- _playerController.fullscreen = b_fs;
-
- // FIXME: check whether this is still needed
- [[[VLCMain sharedInstance] voutProvider] setFullscreen:b_fs forWindow:nil withAnimation:YES];
-}
-
-#pragma mark - menu navigation
-- (void)menuFocusActivate
-{
- [_playerController navigateInInteractiveContent:VLC_PLAYER_NAV_ACTIVATE];
-}
-
-- (void)moveMenuFocusLeft
-{
- [_playerController navigateInInteractiveContent:VLC_PLAYER_NAV_LEFT];
-}
-
-- (void)moveMenuFocusRight
-{
- [_playerController navigateInInteractiveContent:VLC_PLAYER_NAV_RIGHT];
-}
-
-- (void)moveMenuFocusUp
-{
- [_playerController navigateInInteractiveContent:VLC_PLAYER_NAV_UP];
-}
-
-- (void)moveMenuFocusDown
-{
- [_playerController navigateInInteractiveContent:VLC_PLAYER_NAV_DOWN];
-}
-
-#pragma mark -
-#pragma mark Key Shortcuts
-
-/*****************************************************************************
- * hasDefinedShortcutKey: Check to see if the key press is a defined VLC
- * shortcut key. If it is, pass it off to VLC for handling and return YES,
- * otherwise ignore it and return NO (where it will get handled by Cocoa).
- *****************************************************************************/
-
-- (BOOL)keyEvent:(NSEvent *)o_event
-{
- BOOL eventHandled = NO;
- NSString * characters = [o_event charactersIgnoringModifiers];
- if ([characters length] > 0) {
- unichar key = [characters characterAtIndex: 0];
-
- if (key) {
- vout_thread_t *p_vout = [_playerController mainVideoOutputThread];
- if (p_vout != NULL) {
- /* Escape */
- if (key == (unichar) 0x1b) {
- if (var_GetBool(p_vout, "fullscreen")) {
- [self toggleFullscreen];
- eventHandled = YES;
- }
- }
- vout_Release(p_vout);
- }
- }
- }
- return eventHandled;
-}
-
-- (BOOL)hasDefinedShortcutKey:(NSEvent *)o_event force:(BOOL)b_force
-{
- intf_thread_t *p_intf = getIntf();
- if (!p_intf)
- return NO;
-
- unichar key = 0;
- vlc_value_t val;
- unsigned int i_pressed_modifiers = 0;
-
- val.i_int = 0;
- i_pressed_modifiers = [o_event modifierFlags];
-
- if (i_pressed_modifiers & NSControlKeyMask)
- val.i_int |= KEY_MODIFIER_CTRL;
-
- if (i_pressed_modifiers & NSAlternateKeyMask)
- val.i_int |= KEY_MODIFIER_ALT;
-
- if (i_pressed_modifiers & NSShiftKeyMask)
- val.i_int |= KEY_MODIFIER_SHIFT;
-
- if (i_pressed_modifiers & NSCommandKeyMask)
- val.i_int |= KEY_MODIFIER_COMMAND;
-
- NSString * characters = [o_event charactersIgnoringModifiers];
- if ([characters length] > 0) {
- key = [[characters lowercaseString] characterAtIndex: 0];
-
- /* handle Lion's default key combo for fullscreen-toggle in addition to our own hotkeys */
- if (key == 'f' && i_pressed_modifiers & NSControlKeyMask && i_pressed_modifiers & NSCommandKeyMask) {
- [self toggleFullscreen];
- return YES;
- }
-
- if (!b_force) {
- switch(key) {
- case NSDeleteCharacter:
- case NSDeleteFunctionKey:
- case NSDeleteCharFunctionKey:
- case NSBackspaceCharacter:
- case NSUpArrowFunctionKey:
- case NSDownArrowFunctionKey:
- case NSEnterCharacter:
- case NSCarriageReturnCharacter:
- return NO;
- }
- }
-
- val.i_int |= CocoaKeyToVLC(key);
-
- BOOL b_found_key = NO;
- NSUInteger numberOfUsedHotkeys = [_usedHotkeys count];
- for (NSUInteger i = 0; i < numberOfUsedHotkeys; i++) {
- const char *str = [[_usedHotkeys objectAtIndex:i] UTF8String];
- unsigned int i_keyModifiers = VLCModifiersToCocoa((char *)str);
-
- if ([[characters lowercaseString] isEqualToString:VLCKeyToString((char *)str)] &&
- (i_keyModifiers & NSShiftKeyMask) == (i_pressed_modifiers & NSShiftKeyMask) &&
- (i_keyModifiers & NSControlKeyMask) == (i_pressed_modifiers & NSControlKeyMask) &&
- (i_keyModifiers & NSAlternateKeyMask) == (i_pressed_modifiers & NSAlternateKeyMask) &&
- (i_keyModifiers & NSCommandKeyMask) == (i_pressed_modifiers & NSCommandKeyMask)) {
- b_found_key = YES;
- break;
- }
- }
-
- if (b_found_key) {
- var_SetInteger(vlc_object_instance(p_intf), "key-pressed", val.i_int);
- return YES;
- }
- }
-
- return NO;
-}
-
-- (void)updateCurrentlyUsedHotkeys
-{
- NSMutableArray *mutArray = [[NSMutableArray alloc] init];
- /* Get the main Module */
- module_t *p_main = module_get_main();
- assert(p_main);
- unsigned confsize;
- module_config_t *p_config;
-
- p_config = module_config_get (p_main, &confsize);
-
- for (size_t i = 0; i < confsize; i++) {
- module_config_t *p_item = p_config + i;
-
- if (CONFIG_ITEM(p_item->i_type) && p_item->psz_name != NULL
- && !strncmp(p_item->psz_name , "key-", 4)
- && !EMPTY_STR(p_item->psz_text)) {
- if (p_item->value.psz)
- [mutArray addObject:toNSStr(p_item->value.psz)];
- }
- }
- module_config_free (p_config);
-
- _usedHotkeys = [[NSArray alloc] initWithArray:mutArray copyItems:YES];
-}
-
- at end
diff --git a/modules/gui/macosx/extensions/misc.m b/modules/gui/macosx/extensions/misc.m
index 149c19b066..616ff944c1 100644
--- a/modules/gui/macosx/extensions/misc.m
+++ b/modules/gui/macosx/extensions/misc.m
@@ -26,7 +26,6 @@
#import <vlc_common.h>
#import <vlc_actions.h>
-#import "coreinteraction/VLCCoreInteraction.h"
#import "extensions/NSString+Helpers.h"
#import "main/CompatibilityFixes.h"
#import "main/VLCMain.h"
diff --git a/modules/gui/macosx/main/VLCMain+OldPrefs.m b/modules/gui/macosx/main/VLCMain+OldPrefs.m
index 9f57712e5d..356839993a 100644
--- a/modules/gui/macosx/main/VLCMain+OldPrefs.m
+++ b/modules/gui/macosx/main/VLCMain+OldPrefs.m
@@ -28,7 +28,6 @@
#import <vlc_interface.h>
-#import "coreinteraction/VLCCoreInteraction.h"
#import "extensions/NSString+Helpers.h"
#import "preferences/VLCSimplePrefsController.h"
diff --git a/modules/gui/macosx/main/VLCMain.m b/modules/gui/macosx/main/VLCMain.m
index 4f1f66c857..86635dfe77 100644
--- a/modules/gui/macosx/main/VLCMain.m
+++ b/modules/gui/macosx/main/VLCMain.m
@@ -42,8 +42,6 @@
#include <vlc_url.h>
#include <vlc_variables.h>
-#import "coreinteraction/VLCCoreInteraction.h"
-
#import "library/VLCLibraryWindow.h"
#import "main/CompatibilityFixes.h"
@@ -52,6 +50,8 @@
#import "menus/VLCMainMenu.h"
+#import "os-integration/VLCClickerManager.h"
+
#import "panels/dialogs/VLCResumeDialogController.h"
#import "panels/dialogs/VLCCoreDialogProvider.h"
#import "panels/VLCAudioEffectsWindowController.h"
@@ -157,6 +157,19 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
}
}
+static int BossCallback(vlc_object_t *p_this, const char *psz_var,
+ vlc_value_t oldval, vlc_value_t new_val, void *param)
+{
+ @autoreleasepool {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [[[VLCMain sharedInstance] playlistController] pausePlayback];
+ [[NSApplication sharedApplication] hide:nil];
+ });
+
+ return VLC_SUCCESS;
+ }
+}
+
#pragma mark -
#pragma mark Private
@@ -188,6 +201,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
VLCExtensionsManager *_extensionsManager;
VLCInformationWindowController *_currentMediaInfoPanel;
VLCLibraryWindowController *_libraryWindowController;
+ VLCClickerManager *_clickerManager;
bool b_intf_terminating; /* Makes sure applicationWillTerminate will be called only once */
}
@@ -246,6 +260,7 @@ static VLCMain *sharedInstance = nil;
libvlc_int_t *libvlc = vlc_object_instance(p_intf);
var_AddCallback(libvlc, "intf-toggle-fscontrol", ShowController, (__bridge void *)self);
var_AddCallback(libvlc, "intf-show", ShowController, (__bridge void *)self);
+ var_AddCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self);
// Load them here already to apply stored profiles
_videoEffectsPanel = [[VLCVideoEffectsWindowController alloc] init];
@@ -285,6 +300,8 @@ static VLCMain *sharedInstance = nil;
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
+ _clickerManager = [[VLCClickerManager alloc] init];
+
#ifdef HAVE_SPARKLE
[[SUUpdater sharedUpdater] setDelegate:self];
#endif
@@ -297,8 +314,6 @@ static VLCMain *sharedInstance = nil;
if (!p_intf)
return;
- [[VLCCoreInteraction sharedInstance] updateCurrentlyUsedHotkeys];
-
[self migrateOldPreferences];
/* Handle sleep notification */
@@ -340,6 +355,7 @@ static VLCMain *sharedInstance = nil;
libvlc_int_t *libvlc = vlc_object_instance(p_intf);
var_DelCallback(libvlc, "intf-toggle-fscontrol", ShowController, (__bridge void *)self);
var_DelCallback(libvlc, "intf-show", ShowController, (__bridge void *)self);
+ var_DelCallback(libvlc, "intf-boss", BossCallback, (__bridge void *)self);
[[NSNotificationCenter defaultCenter] removeObserver: self];
@@ -358,7 +374,7 @@ static VLCMain *sharedInstance = nil;
- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update
{
[NSApp activateIgnoringOtherApps:YES];
- [[VLCCoreInteraction sharedInstance] stop];
+ [_playlistController stopPlayback];
}
/* don't be enthusiastic about an update if we currently play a video */
@@ -377,7 +393,7 @@ static VLCMain *sharedInstance = nil;
/* Triggered when the computer goes to sleep */
- (void)computerWillSleep: (NSNotification *)notification
{
- [[VLCCoreInteraction sharedInstance] pause];
+ [_playlistController pausePlayback];
}
#pragma mark -
diff --git a/modules/gui/macosx/coreinteraction/VLCClickerManager.h b/modules/gui/macosx/os-integration/VLCClickerManager.h
similarity index 100%
rename from modules/gui/macosx/coreinteraction/VLCClickerManager.h
rename to modules/gui/macosx/os-integration/VLCClickerManager.h
diff --git a/modules/gui/macosx/coreinteraction/VLCClickerManager.m b/modules/gui/macosx/os-integration/VLCClickerManager.m
similarity index 100%
rename from modules/gui/macosx/coreinteraction/VLCClickerManager.m
rename to modules/gui/macosx/os-integration/VLCClickerManager.m
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 46482564a1..eb1c31471e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -448,10 +448,6 @@ modules/demux/xa.c
modules/demux/xiph.h
modules/demux/xiph_metadata.c
modules/demux/xiph_metadata.h
-modules/gui/macosx/coreinteraction/VLCClickerManager.h
-modules/gui/macosx/coreinteraction/VLCClickerManager.m
-modules/gui/macosx/coreinteraction/VLCCoreInteraction.h
-modules/gui/macosx/coreinteraction/VLCCoreInteraction.m
modules/gui/macosx/coreinteraction/VLCVideoFilterHelper.h
modules/gui/macosx/coreinteraction/VLCVideoFilterHelper.m
modules/gui/macosx/extensions/NSScreen+VLCAdditions.h
@@ -488,6 +484,8 @@ modules/gui/macosx/menus/renderers/VLCRendererItem.m
modules/gui/macosx/menus/renderers/VLCRendererMenuController.h
modules/gui/macosx/menus/renderers/VLCRendererMenuController.m
modules/gui/macosx/os-integration/Spotify.h
+modules/gui/macosx/os-integration/VLCClickerManager.h
+modules/gui/macosx/os-integration/VLCClickerManager.m
modules/gui/macosx/os-integration/VLCDocumentController.h
modules/gui/macosx/os-integration/VLCDocumentController.m
modules/gui/macosx/os-integration/VLCKeyboardBacklightControl.h
More information about the vlc-commits
mailing list