Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (19)
Showing
with 135 additions and 38 deletions
......@@ -1102,10 +1102,10 @@
isa = PBXGroup;
children = (
1C1ED5162205AA8200811EC0 /* addons */,
1C1ED5092204ACC600811EC0 /* controlsbar */,
1C1ED51C2205AC0700811EC0 /* convertandsave */,
1C1ED5182205AABF00811EC0 /* extensions */,
1C1ED51F2205AC8000811EC0 /* logging */,
1C1ED5092204ACC600811EC0 /* mainwindow */,
1C1ED5052204AA5800811EC0 /* video */,
1C67C8A61D58C0A40079E1C1 /* VLCAboutWindowController.h */,
1C67C8A71D58C0A40079E1C1 /* VLCAboutWindowController.m */,
......@@ -1123,7 +1123,7 @@
path = windows;
sourceTree = "<group>";
};
1C1ED5092204ACC600811EC0 /* mainwindow */ = {
1C1ED5092204ACC600811EC0 /* controlsbar */ = {
isa = PBXGroup;
children = (
1C1ED51D2205AC6B00811EC0 /* VLCControlsBarCommon.h */,
......@@ -1133,7 +1133,7 @@
7D5678EE1D5BA397002698F3 /* VLCMainWindowControlsBar.h */,
7D5678EF1D5BA397002698F3 /* VLCMainWindowControlsBar.m */,
);
path = mainwindow;
path = controlsbar;
sourceTree = "<group>";
};
1C1ED50A2204AFA900811EC0 /* coreinteraction */ = {
......
......@@ -399,12 +399,12 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/windows/logging/VLCLogMessage.m \
gui/macosx/windows/logging/VLCLogWindowController.h \
gui/macosx/windows/logging/VLCLogWindowController.m \
gui/macosx/windows/mainwindow/VLCControlsBarCommon.h \
gui/macosx/windows/mainwindow/VLCControlsBarCommon.m \
gui/macosx/windows/mainwindow/VLCMainVideoViewControlsBar.h \
gui/macosx/windows/mainwindow/VLCMainVideoViewControlsBar.m \
gui/macosx/windows/mainwindow/VLCMainWindowControlsBar.h \
gui/macosx/windows/mainwindow/VLCMainWindowControlsBar.m \
gui/macosx/windows/controlsbar/VLCControlsBarCommon.h \
gui/macosx/windows/controlsbar/VLCControlsBarCommon.m \
gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.h \
gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m \
gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.h \
gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.m \
gui/macosx/windows/video/VLCAspectRatioRetainingVideoWindow.h \
gui/macosx/windows/video/VLCAspectRatioRetainingVideoWindow.m \
gui/macosx/windows/video/VLCFullVideoViewWindow.h \
......
......@@ -34,6 +34,7 @@
<outlet property="backwardButton" destination="V9d-hX-iyg" id="ZFn-jn-7OB"/>
<outlet property="bookmarksButton" destination="4tZ-52-1q9" id="dAN-YB-YZ5"/>
<outlet property="detailLabel" destination="5ii-yU-6Zp" id="ves-8e-T8E"/>
<outlet property="floatOnTopButton" destination="8jZ-hd-YVq" id="x53-4o-LsM"/>
<outlet property="forwardButton" destination="sF5-Z0-bef" id="H6w-Le-NAK"/>
<outlet property="fullscreenButton" destination="dYZ-ri-Kra" id="Cw2-BS-QG9"/>
<outlet property="fullscreenButtonWidthConstraint" destination="quS-fD-Od7" id="6hT-nR-yQI"/>
......@@ -174,16 +175,30 @@
<action selector="openBookmarks:" target="3" id="o6m-9M-L4U"/>
</connections>
</button>
<button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
<button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8jZ-hd-YVq" customClass="VLCImageButton">
<rect key="frame" x="111" y="-1" width="32" height="33"/>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="play.rectangle.on.rectangle.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="fyV-F5-ogO">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" secondItem="dYZ-ri-Kra" secondAttribute="height" multiplier="1:1" id="cHQ-Fu-L8k"/>
<constraint firstAttribute="width" constant="32" id="quS-fD-Od7"/>
<constraint firstAttribute="width" constant="32" id="QNF-zS-6Sz"/>
<constraint firstAttribute="width" secondItem="8jZ-hd-YVq" secondAttribute="height" multiplier="1:1" id="iNf-6g-2uS"/>
</constraints>
<connections>
<action selector="toggleFloatOnTop:" target="3" id="BvH-qi-jx1"/>
</connections>
</button>
<button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
<rect key="frame" x="148" y="-1" width="32" height="33"/>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="arrow.up.left.and.arrow.down.right" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="Z8g-js-0W6">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<constraints>
<constraint firstAttribute="width" secondItem="dYZ-ri-Kra" secondAttribute="height" multiplier="1:1" id="cHQ-Fu-L8k"/>
<constraint firstAttribute="width" constant="32" id="quS-fD-Od7"/>
</constraints>
<connections>
<action selector="fullscreen:" target="3" id="0Kk-UV-WtF"/>
</connections>
......@@ -198,12 +213,14 @@
<integer value="1000"/>
<integer value="1000"/>
<integer value="1000"/>
<integer value="1000"/>
</visibilityPriorities>
<customSpacing>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
<real value="3.4028234663852886e+38"/>
</customSpacing>
</stackView>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zyp-45-IgR">
......@@ -433,6 +450,7 @@
<image name="forward.fill" catalog="system" width="19" height="12"/>
<image name="play.fill" catalog="system" width="12" height="13"/>
<image name="text.bubble" catalog="system" width="17" height="16"/>
<image name="play.rectangle.on.rectangle.fill" catalog="system" width="20" height="16"/>
<image name="volume.3.fill" catalog="system" width="22" height="15"/>
<image name="waveform.circle" catalog="system" width="15" height="15"/>
</resources>
......
......@@ -32,7 +32,7 @@
#import "views/VLCBottomBarView.h"
#import "windows/mainwindow/VLCControlsBarCommon.h"
#import "windows/controlsbar/VLCControlsBarCommon.h"
@implementation VLCLibraryUIUnits
......
......@@ -70,7 +70,7 @@
#import "views/VLCDragDropView.h"
#import "views/VLCRoundedCornerTextField.h"
#import "windows/mainwindow/VLCControlsBarCommon.h"
#import "windows/controlsbar/VLCControlsBarCommon.h"
#import "windows/video/VLCVoutView.h"
#import "windows/video/VLCVideoOutputProvider.h"
......
......@@ -54,7 +54,7 @@
#import "windows/VLCOpenWindowController.h"
#import "windows/VLCErrorWindowController.h"
#import "windows/VLCHelpWindowController.h"
#import "windows/mainwindow/VLCMainWindowControlsBar.h"
#import "windows/controlsbar/VLCMainWindowControlsBar.h"
#import "windows/extensions/VLCExtensionsManager.h"
#import "windows/convertandsave/VLCConvertAndSaveWindowController.h"
#import "windows/logging/VLCLogWindowController.h"
......
......@@ -36,7 +36,7 @@
#import "views/VLCTrackingView.h"
#import "views/VLCBottomBarView.h"
#import "windows/mainwindow/VLCControlsBarCommon.h"
#import "windows/controlsbar/VLCControlsBarCommon.h"
@interface VLCDetachedAudioWindow()
{
......
......@@ -30,10 +30,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, strong) IBOutlet NSButton *bookmarksButton;
@property (readwrite, strong) IBOutlet NSButton *subtitlesButton;
@property (readwrite, strong) IBOutlet NSButton *audioButton;
@property (readwrite, strong) IBOutlet NSButton *floatOnTopButton;
- (IBAction)openBookmarks:(id)sender;
- (IBAction)openSubtitlesMenu:(id)sender;
- (IBAction)openAudioMenu:(id)sender;
- (IBAction)toggleFloatOnTop:(id)sender;
@end
......
......@@ -37,6 +37,10 @@
#import "views/VLCWrappableTextField.h"
#import "windows/video/VLCMainVideoViewController.h"
#import "windows/video/VLCVideoOutputProvider.h"
#import "windows/video/VLCVideoWindowCommon.h"
@interface VLCMainVideoViewControlsBar ()
{
VLCPlaylistController *_playlistController;
......@@ -67,6 +71,10 @@
selector:@selector(updateDetailLabel:)
name:VLCPlayerCurrentMediaItemChanged
object:nil];
[notificationCenter addObserver:self
selector:@selector(updateFloatOnTopButton:)
name:VLCWindowFloatOnTopChangedNotificationName
object:nil];
}
- (void)updateDetailLabel:(NSNotification *)notification
......@@ -103,4 +111,33 @@
inView:((NSView *)sender).superview];
}
- (IBAction)toggleFloatOnTop:(id)sender
{
VLCVideoWindowCommon * const window = (VLCVideoWindowCommon *)self.floatOnTopButton.window;
if (window == nil) {
return;
}
vout_thread_t * const p_vout = window.videoViewController.voutView.voutThread;
if (!p_vout) {
return;
}
var_ToggleBool(p_vout, "video-on-top");
vout_Release(p_vout);
}
- (void)updateFloatOnTopButton:(NSNotification *)notification
{
VLCVideoWindowCommon * const videoWindow = (VLCVideoWindowCommon *)notification.object;
NSAssert(videoWindow != nil, @"Received video window should not be nil!");
NSDictionary<NSString *, NSNumber *> * const userInfo = notification.userInfo;
NSAssert(userInfo != nil, @"Received user info should not be nil!");
NSNumber * const enabledNumberWrapper = userInfo[VLCWindowFloatOnTopEnabledNotificationKey];
NSAssert(enabledNumberWrapper != nil, @"Received user info enabled wrapper should not be nil!");
if (@available(macOS 10.14, *)) {
self.floatOnTopButton.contentTintColor =
enabledNumberWrapper.boolValue ? NSColor.controlAccentColor : NSColor.controlTextColor;
}
}
@end
......@@ -23,7 +23,7 @@
#import <Cocoa/Cocoa.h>
#import "windows/mainwindow/VLCControlsBarCommon.h"
#import "windows/controlsbar/VLCControlsBarCommon.h"
@class VLCVolumeSlider;
@class VLCTrackingView;
......
......@@ -22,11 +22,11 @@
#import <Cocoa/Cocoa.h>
#import <windows/mainwindow/VLCControlsBarCommon.h>
#import <windows/video/VLCVoutView.h>
@class VLCMainVideoViewOverlayView;
@class VLCMainVideoViewAudioMediaDecorativeView;
@class VLCMainVideoViewControlsBar;
NS_ASSUME_NONNULL_BEGIN
......@@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, strong) IBOutlet VLCMainVideoViewAudioMediaDecorativeView *audioDecorativeView;
@property (readwrite, strong) IBOutlet NSView *bottomBarView;
@property (readwrite, strong) IBOutlet NSStackView *centralControlsStackView;
@property (readwrite, strong) IBOutlet VLCControlsBarCommon *controlsBar;
@property (readwrite, strong) IBOutlet VLCMainVideoViewControlsBar *controlsBar;
@property (readwrite, strong) IBOutlet NSButton *returnButton;
@property (readwrite, strong) IBOutlet NSButton *playlistButton;
@property (readwrite, strong) IBOutlet NSLayoutConstraint *returnButtonTopConstraint;
......
......@@ -37,6 +37,8 @@
#import "views/VLCBottomBarView.h"
#import "windows/controlsbar/VLCMainVideoViewControlsBar.h"
#import "windows/video/VLCMainVideoViewAudioMediaDecorativeView.h"
#import "windows/video/VLCMainVideoViewOverlayView.h"
#import "windows/video/VLCVideoWindowCommon.h"
......
......@@ -29,8 +29,10 @@
@class VLCVideoWindowCommon;
@class VLCVoutView;
extern NSString *VLCWindowShouldUpdateLevel;
extern NSString *VLCWindowLevelKey;
extern NSString * const VLCWindowShouldUpdateLevel;
extern NSString * const VLCWindowLevelKey;
extern NSString * const VLCWindowFloatOnTopChangedNotificationName;
extern NSString * const VLCWindowFloatOnTopEnabledNotificationKey;
@interface VLCVideoOutputProvider : NSObject
......
......@@ -47,8 +47,10 @@
#include <vlc_configuration.h>
#include <vlc_vout_display.h>
NSString *VLCWindowShouldUpdateLevel = @"VLCWindowShouldUpdateLevel";
NSString *VLCWindowLevelKey = @"VLCWindowLevelKey";
NSString * const VLCWindowShouldUpdateLevel = @"VLCWindowShouldUpdateLevel";
NSString * const VLCWindowLevelKey = @"VLCWindowLevelKey";
NSString * const VLCWindowFloatOnTopChangedNotificationName = @"VLCWindowFloatOnTopChanged";
NSString * const VLCWindowFloatOnTopEnabledNotificationKey = @"VLCWindowFloatOnTopEnabled";
static int WindowEnable(vlc_window_t *p_wnd, const vlc_window_cfg_t *cfg)
{
......@@ -110,16 +112,16 @@ static void WindowSetState(vlc_window_t *p_wnd, unsigned i_state)
msg_Dbg(p_wnd, "Ignore change to VLC_WINDOW_STATE_BELOW");
@autoreleasepool {
VLCVideoOutputProvider *voutProvider = VLCMain.sharedInstance.voutProvider;
VLCVideoOutputProvider * const voutProvider = VLCMain.sharedInstance.voutProvider;
NSInteger i_cocoa_level = NSNormalWindowLevel;
if (i_state & VLC_WINDOW_STATE_ABOVE)
i_cocoa_level = NSStatusWindowLevel;
dispatch_async(dispatch_get_main_queue(), ^{
[voutProvider setWindowLevel:i_cocoa_level forWindow:p_wnd];
});
}
}
......@@ -175,6 +177,28 @@ int WindowOpen(vlc_window_t *p_wnd)
return VLC_SUCCESS;
}
static int WindowFloatOnTop(vlc_object_t *obj,
char const *psz_var,
vlc_value_t oldval,
vlc_value_t newval,
void *p_data)
{
VLC_UNUSED(obj); VLC_UNUSED(psz_var); VLC_UNUSED(oldval);
@autoreleasepool {
dispatch_async(dispatch_get_main_queue(), ^{
VLCVideoWindowCommon * const videoWindow = (__bridge VLCVideoWindowCommon *)p_data;
NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter;
NSDictionary<NSString *, NSNumber *> * const userInfo = @{
VLCWindowFloatOnTopEnabledNotificationKey: @(newval.b_bool)
};
[notificationCenter postNotificationName:VLCWindowFloatOnTopChangedNotificationName
object:videoWindow
userInfo:userInfo];
});
return VLC_SUCCESS;
}
}
@interface VLCVideoOutputProvider ()
{
NSMutableDictionary *_voutWindows;
......@@ -390,12 +414,14 @@ int WindowOpen(vlc_window_t *p_wnd)
- (void)setupVideoOutputForVideoWindow:(VLCVideoWindowCommon *)videoWindow
withVlcWindow:(vlc_window_t *)p_wnd
{
VLCVoutView *voutView = videoWindow.videoViewController.voutView;
VLCVoutView * const voutView = videoWindow.videoViewController.voutView;
[videoWindow setAlphaValue:config_GetFloat("macosx-opaqueness")];
videoWindow.alphaValue = config_GetFloat("macosx-opaqueness");
[_voutWindows setObject:videoWindow forKey:[NSValue valueWithPointer:p_wnd]];
[voutView setVoutThread:(vout_thread_t *)vlc_object_parent(p_wnd)];
[voutView setVoutWindow:p_wnd];
vout_thread_t * const p_vout = (vout_thread_t *)vlc_object_parent(p_wnd);
var_AddCallback(p_vout, "video-on-top", WindowFloatOnTop, (__bridge void *)videoWindow);
voutView.voutThread = p_vout;
voutView.voutWindow = p_wnd;
videoWindow.hasActiveVideo = YES;
_playerController.activeVideoPlayback = YES;
VLCMain.sharedInstance.libraryWindow.nonembedded = !b_mainWindowHasVideo;
......@@ -511,7 +537,8 @@ int WindowOpen(vlc_window_t *p_wnd)
- (void)setWindowLevel:(NSInteger)i_level forWindow:(vlc_window_t *)p_wnd
{
VLCVideoWindowCommon *o_window = [_voutWindows objectForKey:[NSValue valueWithPointer:p_wnd]];
NSValue * const windowKey = [NSValue valueWithPointer:p_wnd];
VLCVideoWindowCommon * const o_window = [_voutWindows objectForKey:windowKey];
if (!o_window) {
msg_Err(getIntf(), "Cannot set level for nonexisting window");
return;
......@@ -521,18 +548,27 @@ int WindowOpen(vlc_window_t *p_wnd)
if(i_level == NSStatusWindowLevel) {
_statusLevelWindowCounter++;
// window level need to stay on normal in fullscreen mode
if (![o_window fullscreen] && ![o_window inFullscreenTransition])
if (!o_window.fullscreen && !o_window.inFullscreenTransition) {
// make sure float on top can join all spaces, including full-screen ones
NSApp.activationPolicy = NSApplicationActivationPolicyAccessory;
[self updateWindowLevelForHelperWindows:i_level];
o_window.collectionBehavior = NSWindowCollectionBehaviorCanJoinAllSpaces |
NSWindowCollectionBehaviorIgnoresCycle |
NSWindowCollectionBehaviorTransient |
NSWindowCollectionBehaviorFullScreenAuxiliary;
}
} else {
if (_statusLevelWindowCounter > 0)
if (_statusLevelWindowCounter > 0) {
_statusLevelWindowCounter--;
}
if (_statusLevelWindowCounter == 0) {
NSApp.activationPolicy = NSApplicationActivationPolicyRegular;
[self updateWindowLevelForHelperWindows:i_level];
}
o_window.collectionBehavior = NSWindowCollectionBehaviorDefault;
}
[o_window setWindowLevel:i_level];
o_window.level = i_level;
}
- (void)setFullscreen:(int)i_full forWindow:(vlc_window_t *)p_wnd withAnimation:(BOOL)b_animation
......
......@@ -644,10 +644,10 @@ modules/gui/macosx/windows/logging/VLCLogMessage.h
modules/gui/macosx/windows/logging/VLCLogMessage.m
modules/gui/macosx/windows/logging/VLCLogWindowController.h
modules/gui/macosx/windows/logging/VLCLogWindowController.m
modules/gui/macosx/windows/mainwindow/VLCControlsBarCommon.h
modules/gui/macosx/windows/mainwindow/VLCControlsBarCommon.m
modules/gui/macosx/windows/mainwindow/VLCMainWindowControlsBar.h
modules/gui/macosx/windows/mainwindow/VLCMainWindowControlsBar.m
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.h
modules/gui/macosx/windows/controlsbar/VLCMainWindowControlsBar.m
modules/gui/macosx/windows/video/VLCVideoOutputProvider.h
modules/gui/macosx/windows/video/VLCVideoOutputProvider.m
modules/gui/macosx/windows/video/VLCVideoWindowCommon.h
......