From cf37037f2032bc23cb67594799cc7b7c9e72c4b8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= Date: Mon, 8 Aug 2011 21:01:31 +0200 Subject: [PATCH] macosx: prepared fullscreen support and clean-up --- .../English.lproj/MainMenu.nib/designable.nib | 1379 +++++++++++++++-- .../MainMenu.nib/keyedobjects.nib | Bin 120672 -> 120790 bytes modules/gui/macosx/CoreInteraction.m | 18 +- modules/gui/macosx/MainMenu.h | 5 + modules/gui/macosx/MainMenu.m | 77 +- modules/gui/macosx/MainWindow.h | 37 +- modules/gui/macosx/MainWindow.m | 479 +++++- modules/gui/macosx/controls.h | 3 - modules/gui/macosx/controls.m | 46 - modules/gui/macosx/intf.h | 4 +- modules/gui/macosx/intf.m | 44 +- 11 files changed, 1888 insertions(+), 204 deletions(-) diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib index 26cff4b60a..e530effea5 100644 --- a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib +++ b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib @@ -2,9 +2,9 @@ 1040 - 11A511a + 11C26 851 - 1138 + 1138.11 566.00 YES @@ -21,14 +21,14 @@ YES + - + + - - + - YES @@ -4698,54 +4698,6 @@ LCAuLi4 1187 - - - windowAction: - - - - 1502 - - - - windowAction: - - - - 1503 - - - - windowAction: - - - - 1504 - - - - windowAction: - - - - 1505 - - - - windowAction: - - - - 1506 - - - - windowAction: - - - - 1520 - random: @@ -4930,14 +4882,6 @@ LCAuLi4 2246 - - - windowAction: - - - - 2252 - o_mi_services @@ -5154,14 +5098,6 @@ LCAuLi4 2727 - - - windowAction: - - - - 2735 - play: @@ -5218,14 +5154,6 @@ LCAuLi4 2753 - - - windowAction: - - - - 2754 - showMessagesPanel: @@ -7186,6 +7114,78 @@ LCAuLi4 4738 + + + resizeVideoWindow: + + + + 4741 + + + + resizeVideoWindow: + + + + 4742 + + + + resizeVideoWindow: + + + + 4743 + + + + resizeVideoWindow: + + + + 4744 + + + + toggleFullscreen: + + + + 4745 + + + + floatOnTop: + + + + 4746 + + + + createVideoSnapshot: + + + + 4747 + + + + toggleFullscreen: + + + + 4748 + + + + createVideoSnapshot: + + + + 4749 + @@ -11028,14 +11028,14 @@ LCAuLi4 com.apple.InterfaceBuilder.CocoaPlugin - {{373, 736}, {468, 20}} + {{85, 668}, {468, 20}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{608, 373}, {208, 363}} + {{364, 305}, {208, 363}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -11448,7 +11448,7 @@ LCAuLi4 - 4740 + 4749 @@ -14169,38 +14169,1203 @@ LCAuLi4 YES - NSObject - - IBDocumentRelativeSource - ../../../../contrib/hosts/x86_64-apple-darwin10/Sparkle/Sparkle.framework/Headers/SUUpdater.h - - - - SUUpdater + VLCMainMenu NSObject - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id + YES + + YES + clearRecentItems: + createVideoSnapshot: + floatOnTop: + intfOpenCapture: + intfOpenDisc: + intfOpenFile: + intfOpenFileGeneric: + intfOpenNet: + openDocumentation: + openDonate: + openForum: + openReadMe: + openWebsite: + resizeVideoWindow: + setPlaybackRate: + showAudioEffects: + showBookmarks: + showInformationPanel: + showLicense: + showTrackSynchronization: + showVideoEffects: + showWizard: + toggleFullscreen: + toggleVar: + viewAbout: + viewErrorsAndWarnings: + viewHelp: + viewPreferences: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id - - delegate - id - - - delegate - - delegate - id + + YES + + YES + clearRecentItems: + createVideoSnapshot: + floatOnTop: + intfOpenCapture: + intfOpenDisc: + intfOpenFile: + intfOpenFileGeneric: + intfOpenNet: + openDocumentation: + openDonate: + openForum: + openReadMe: + openWebsite: + resizeVideoWindow: + setPlaybackRate: + showAudioEffects: + showBookmarks: + showInformationPanel: + showLicense: + showTrackSynchronization: + showVideoEffects: + showWizard: + toggleFullscreen: + toggleVar: + viewAbout: + viewErrorsAndWarnings: + viewHelp: + viewPreferences: + + YES + + clearRecentItems: + id + + + createVideoSnapshot: + id + + + floatOnTop: + id + + + intfOpenCapture: + id + + + intfOpenDisc: + id + + + intfOpenFile: + id + + + intfOpenFileGeneric: + id + + + intfOpenNet: + id + + + openDocumentation: + id + + + openDonate: + id + + + openForum: + id + + + openReadMe: + id + + + openWebsite: + id + + + resizeVideoWindow: + id + + + setPlaybackRate: + id + + + showAudioEffects: + id + + + showBookmarks: + id + + + showInformationPanel: + id + + + showLicense: + id + + + showTrackSynchronization: + id + + + showVideoEffects: + id + + + showWizard: + id + + + toggleFullscreen: + id + + + toggleVar: + id + + + viewAbout: + id + + + viewErrorsAndWarnings: + id + + + viewHelp: + id + + + viewPreferences: + id + + + + + YES + + YES + o_about + o_audioeffects + o_bookmarks + o_dmi_mute + o_dmi_next + o_dmi_play + o_dmi_previous + o_dmi_stop + o_mi_about + o_mi_addSub + o_mi_add_intf + o_mi_aspect_ratio + o_mi_audioeffects + o_mi_audiotrack + o_mi_bookmarks + o_mi_bring_atf + o_mi_bwd + o_mi_channels + o_mi_chapter + o_mi_checkForUpdate + o_mi_clear + o_mi_close_window + o_mi_controller + o_mi_copy + o_mi_crop + o_mi_cut + o_mi_deinterlace + o_mi_deinterlace_mode + o_mi_device + o_mi_documentation + o_mi_donation + o_mi_double_window + o_mi_errorsAndWarnings + o_mi_ffmpeg_pp + o_mi_fittoscreen + o_mi_floatontop + o_mi_forum + o_mi_fullscreen + o_mi_fwd + o_mi_half_window + o_mi_help + o_mi_hide + o_mi_hide_others + o_mi_info + o_mi_license + o_mi_loop + o_mi_messages + o_mi_minimize + o_mi_mute + o_mi_next + o_mi_normal_window + o_mi_open_capture + o_mi_open_disc + o_mi_open_file + o_mi_open_generic + o_mi_open_net + o_mi_open_recent + o_mi_open_recent_cm + o_mi_open_wizard + o_mi_paste + o_mi_play + o_mi_player + o_mi_playlist + o_mi_prefs + o_mi_previous + o_mi_program + o_mi_quit + o_mi_quitAfterPB + o_mi_random + o_mi_rate + o_mi_rate_faster_lbl + o_mi_rate_fld + o_mi_rate_lbl + o_mi_rate_lbl_gray + o_mi_rate_normal_lbl + o_mi_rate_sld + o_mi_rate_slower_lbl + o_mi_rate_view + o_mi_readme + o_mi_repeat + o_mi_screen + o_mi_select_all + o_mi_services + o_mi_show_all + o_mi_snapshot + o_mi_stop + o_mi_subtitle + o_mi_teletext + o_mi_teletext_blue + o_mi_teletext_green + o_mi_teletext_index + o_mi_teletext_red + o_mi_teletext_transparent + o_mi_teletext_yellow + o_mi_title + o_mi_trackSynchronization + o_mi_videoeffects + o_mi_videotrack + o_mi_visual + o_mi_vol_down + o_mi_vol_up + o_mi_website + o_mu_add_intf + o_mu_aspect_ratio + o_mu_audio + o_mu_audiotrack + o_mu_channels + o_mu_chapter + o_mu_controls + o_mu_crop + o_mu_deinterlace + o_mu_deinterlace_mode + o_mu_device + o_mu_edit + o_mu_ffmpeg_pp + o_mu_file + o_mu_help + o_mu_program + o_mu_screen + o_mu_subtitle + o_mu_title + o_mu_video + o_mu_videotrack + o_mu_visual + o_mu_window + o_trackSynchronization + o_videoeffects + o_vmi_fullscreen + o_vmi_mute + o_vmi_next + o_vmi_play + o_vmi_prev + o_vmi_snapshot + o_vmi_stop + o_vmi_voldown + o_vmi_volup + o_vout_menu + + + YES + id + id + id + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + id + id + id + id + id + id + id + NSView + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + NSMenu + id + id + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenu + + + + YES + + YES + o_about + o_audioeffects + o_bookmarks + o_dmi_mute + o_dmi_next + o_dmi_play + o_dmi_previous + o_dmi_stop + o_mi_about + o_mi_addSub + o_mi_add_intf + o_mi_aspect_ratio + o_mi_audioeffects + o_mi_audiotrack + o_mi_bookmarks + o_mi_bring_atf + o_mi_bwd + o_mi_channels + o_mi_chapter + o_mi_checkForUpdate + o_mi_clear + o_mi_close_window + o_mi_controller + o_mi_copy + o_mi_crop + o_mi_cut + o_mi_deinterlace + o_mi_deinterlace_mode + o_mi_device + o_mi_documentation + o_mi_donation + o_mi_double_window + o_mi_errorsAndWarnings + o_mi_ffmpeg_pp + o_mi_fittoscreen + o_mi_floatontop + o_mi_forum + o_mi_fullscreen + o_mi_fwd + o_mi_half_window + o_mi_help + o_mi_hide + o_mi_hide_others + o_mi_info + o_mi_license + o_mi_loop + o_mi_messages + o_mi_minimize + o_mi_mute + o_mi_next + o_mi_normal_window + o_mi_open_capture + o_mi_open_disc + o_mi_open_file + o_mi_open_generic + o_mi_open_net + o_mi_open_recent + o_mi_open_recent_cm + o_mi_open_wizard + o_mi_paste + o_mi_play + o_mi_player + o_mi_playlist + o_mi_prefs + o_mi_previous + o_mi_program + o_mi_quit + o_mi_quitAfterPB + o_mi_random + o_mi_rate + o_mi_rate_faster_lbl + o_mi_rate_fld + o_mi_rate_lbl + o_mi_rate_lbl_gray + o_mi_rate_normal_lbl + o_mi_rate_sld + o_mi_rate_slower_lbl + o_mi_rate_view + o_mi_readme + o_mi_repeat + o_mi_screen + o_mi_select_all + o_mi_services + o_mi_show_all + o_mi_snapshot + o_mi_stop + o_mi_subtitle + o_mi_teletext + o_mi_teletext_blue + o_mi_teletext_green + o_mi_teletext_index + o_mi_teletext_red + o_mi_teletext_transparent + o_mi_teletext_yellow + o_mi_title + o_mi_trackSynchronization + o_mi_videoeffects + o_mi_videotrack + o_mi_visual + o_mi_vol_down + o_mi_vol_up + o_mi_website + o_mu_add_intf + o_mu_aspect_ratio + o_mu_audio + o_mu_audiotrack + o_mu_channels + o_mu_chapter + o_mu_controls + o_mu_crop + o_mu_deinterlace + o_mu_deinterlace_mode + o_mu_device + o_mu_edit + o_mu_ffmpeg_pp + o_mu_file + o_mu_help + o_mu_program + o_mu_screen + o_mu_subtitle + o_mu_title + o_mu_video + o_mu_videotrack + o_mu_visual + o_mu_window + o_trackSynchronization + o_videoeffects + o_vmi_fullscreen + o_vmi_mute + o_vmi_next + o_vmi_play + o_vmi_prev + o_vmi_snapshot + o_vmi_stop + o_vmi_voldown + o_vmi_volup + o_vout_menu + + + YES + + o_about + id + + + o_audioeffects + id + + + o_bookmarks + id + + + o_dmi_mute + NSMenuItem + + + o_dmi_next + NSMenuItem + + + o_dmi_play + NSMenuItem + + + o_dmi_previous + NSMenuItem + + + o_dmi_stop + NSMenuItem + + + o_mi_about + NSMenuItem + + + o_mi_addSub + NSMenuItem + + + o_mi_add_intf + NSMenuItem + + + o_mi_aspect_ratio + NSMenuItem + + + o_mi_audioeffects + NSMenuItem + + + o_mi_audiotrack + NSMenuItem + + + o_mi_bookmarks + NSMenuItem + + + o_mi_bring_atf + NSMenuItem + + + o_mi_bwd + NSMenuItem + + + o_mi_channels + NSMenuItem + + + o_mi_chapter + NSMenuItem + + + o_mi_checkForUpdate + NSMenuItem + + + o_mi_clear + NSMenuItem + + + o_mi_close_window + NSMenuItem + + + o_mi_controller + NSMenuItem + + + o_mi_copy + NSMenuItem + + + o_mi_crop + NSMenuItem + + + o_mi_cut + NSMenuItem + + + o_mi_deinterlace + NSMenuItem + + + o_mi_deinterlace_mode + NSMenuItem + + + o_mi_device + NSMenuItem + + + o_mi_documentation + NSMenuItem + + + o_mi_donation + NSMenuItem + + + o_mi_double_window + NSMenuItem + + + o_mi_errorsAndWarnings + NSMenuItem + + + o_mi_ffmpeg_pp + NSMenuItem + + + o_mi_fittoscreen + NSMenuItem + + + o_mi_floatontop + NSMenuItem + + + o_mi_forum + NSMenuItem + + + o_mi_fullscreen + NSMenuItem + + + o_mi_fwd + NSMenuItem + + + o_mi_half_window + NSMenuItem + + + o_mi_help + NSMenuItem + + + o_mi_hide + NSMenuItem + + + o_mi_hide_others + NSMenuItem + + + o_mi_info + NSMenuItem + + + o_mi_license + NSMenuItem + + + o_mi_loop + NSMenuItem + + + o_mi_messages + NSMenuItem + + + o_mi_minimize + NSMenuItem + + + o_mi_mute + NSMenuItem + + + o_mi_next + NSMenuItem + + + o_mi_normal_window + NSMenuItem + + + o_mi_open_capture + NSMenuItem + + + o_mi_open_disc + NSMenuItem + + + o_mi_open_file + NSMenuItem + + + o_mi_open_generic + NSMenuItem + + + o_mi_open_net + NSMenuItem + + + o_mi_open_recent + NSMenuItem + + + o_mi_open_recent_cm + NSMenuItem + + + o_mi_open_wizard + NSMenuItem + + + o_mi_paste + NSMenuItem + + + o_mi_play + NSMenuItem + + + o_mi_player + NSMenuItem + + + o_mi_playlist + NSMenuItem + + + o_mi_prefs + NSMenuItem + + + o_mi_previous + NSMenuItem + + + o_mi_program + NSMenuItem + + + o_mi_quit + NSMenuItem + + + o_mi_quitAfterPB + NSMenuItem + + + o_mi_random + NSMenuItem + + + o_mi_rate + NSMenuItem + + + o_mi_rate_faster_lbl + id + + + o_mi_rate_fld + id + + + o_mi_rate_lbl + id + + + o_mi_rate_lbl_gray + id + + + o_mi_rate_normal_lbl + id + + + o_mi_rate_sld + id + + + o_mi_rate_slower_lbl + id + + + o_mi_rate_view + NSView + + + o_mi_readme + NSMenuItem + + + o_mi_repeat + NSMenuItem + + + o_mi_screen + NSMenuItem + + + o_mi_select_all + NSMenuItem + + + o_mi_services + NSMenuItem + + + o_mi_show_all + NSMenuItem + + + o_mi_snapshot + NSMenuItem + + + o_mi_stop + NSMenuItem + + + o_mi_subtitle + NSMenuItem + + + o_mi_teletext + NSMenuItem + + + o_mi_teletext_blue + NSMenuItem + + + o_mi_teletext_green + NSMenuItem + + + o_mi_teletext_index + NSMenuItem + + + o_mi_teletext_red + NSMenuItem + + + o_mi_teletext_transparent + NSMenuItem + + + o_mi_teletext_yellow + NSMenuItem + + + o_mi_title + NSMenuItem + + + o_mi_trackSynchronization + NSMenuItem + + + o_mi_videoeffects + NSMenuItem + + + o_mi_videotrack + NSMenuItem + + + o_mi_visual + NSMenuItem + + + o_mi_vol_down + NSMenuItem + + + o_mi_vol_up + NSMenuItem + + + o_mi_website + NSMenuItem + + + o_mu_add_intf + NSMenu + + + o_mu_aspect_ratio + NSMenu + + + o_mu_audio + NSMenu + + + o_mu_audiotrack + NSMenu + + + o_mu_channels + NSMenu + + + o_mu_chapter + NSMenu + + + o_mu_controls + NSMenu + + + o_mu_crop + NSMenu + + + o_mu_deinterlace + NSMenu + + + o_mu_deinterlace_mode + NSMenu + + + o_mu_device + NSMenu + + + o_mu_edit + NSMenu + + + o_mu_ffmpeg_pp + NSMenu + + + o_mu_file + NSMenu + + + o_mu_help + NSMenu + + + o_mu_program + NSMenu + + + o_mu_screen + NSMenu + + + o_mu_subtitle + NSMenu + + + o_mu_title + NSMenu + + + o_mu_video + NSMenu + + + o_mu_videotrack + NSMenu + + + o_mu_visual + NSMenu + + + o_mu_window + NSMenu + + + o_trackSynchronization + id + + + o_videoeffects + id + + + o_vmi_fullscreen + NSMenuItem + + + o_vmi_mute + NSMenuItem + + + o_vmi_next + NSMenuItem + + + o_vmi_play + NSMenuItem + + + o_vmi_prev + NSMenuItem + + + o_vmi_snapshot + NSMenuItem + + + o_vmi_stop + NSMenuItem + + + o_vmi_voldown + NSMenuItem + + + o_vmi_volup + NSMenuItem + + + o_vout_menu + NSMenu + + + + + IBDocumentRelativeSource + ../../../../../modules/gui/macosx/MainMenu.h - VLCMainWindow diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib index e440b961a1565c080d10250e5d9eb513c47d0b12..ec451599123e9e8b3af20d168bc31b01c13e2aec 100644 GIT binary patch literal 120790 zcmbR}2|yHO+w;z~JF~m6H!Li;dCrWYfZ%Q7eV-sA9=O5^D6q(a_c5=Tnx>YTre@w| zWoD(O)|c5~_pOzwS=n87X=RrBKkv*gte}1W|NDIl!_GU;^*-9$#Vc zeSprO&(Rm?Jo*xShkipB(Ixa3P16j`(ni`wyJ$BZN5|7%x*6S^Zb3_QD>{>IN4KXt z&|T=>bRW7eJ&?|!N7A|UD0(biKu@6kbby{rhv@0_40arkB$z=#}&u zdK3L1y_w!Z@1*zAkJJ0;C+LIp)AY0SQTloM7=4`nmi~_Zp8kRUnZ8J0qJO6h48sVF zi*YllOd8XH>Bw|px-&hP-pl}I7&DP6VP-OOnR}U?%r533W;gRN^9b`Ovxj+%*~>i6 z>|>r_o@Ab4_A>{VgUr*+^USNvTghY3y`%20NQw$ll4W zVpp?kDFeHXUC(Y{H?j|~o7gSvR(2QrIQta4pFO}HWS?PQVqa#Dv#+pkvM1RO*^k(d z*)!}{?APo!?6>R%_9yltdx`yvqdA6SIf1it4$jGWxCE{dCvh^Ta4or1t|Qlp>&$iG zx^n}#q1-TTIG4*6a7A1>SH;cdRPHWr1-Fj7pWDPe$nEA1aL;ouaxZbOaqn{S^a$QgN~XfzpPjB&|-2Y9B3S39A(TiPBKn5PB8|JmBx^9 zj&ZJWneiUu8smM&^~Mdx?ZzF(Cyh@VpD{jbeBOA>_`2~8<0<1=1)$Brk_lIoBlDgX2C3)t>y%CqPdB=skw!@jk%+_levev zr+J`xq&e3--dtcVHkX)7%^`EOd7gQ``400!^PT2<%%@D_u`Y_VAEmIRB>a+@W^($>=6(#?`(8DJS`8D<%7$+qNJMq9>PCRvIt z)s`B|G|P0$9Lqw>ot9OW)s{7u^_H!cZI(wZdn`{_p0qq=Ib=C(dCqdw@{;9c%j=ep zEvGD>Sk78LvwUv(-twE}qU9gURm(NY^%yD!#qcqP7;}sz#vYRxh#oQgUJm&tG^)VY_w#00Yc{FBE z%z>DLF;6o?V~)f;6Z3q`v6$mAuf)6=b28?Wm~%1T#$1T`Bj)c|HdctW$Hv9_Vw=Ub zj%^#;CAMqq?Xf*$d&TyT9S}P-HZOK`Y<}#R*a@-z*h#S!vDL9Pu?u4Fh+PA7B zCR&?Y6>Fxoowc(y%i7D@*E-NT(mKu>uuifTTT84{tyR`J*16Vs)u=VJ)=SpEY{*9247OOC)#kD#*^+HdY%OiAY-zT1TNhg&+dx~cE#EfAHo@k%O|li+ z%4{{ZX}0OMIW}xtU|VckVq0!oVOwomV_R?AVB2ilV%urkWqZ`N-*(7$*mlHr)b^_F zHQSrEw`_0QKCqpzow9vmJ7@dM_Lc2x+Yh#jwoA6(ZC7kpZP#qq?W~=%i*}RUYPZ?l z_BgxO-qhaA-rU~O-p=0M-of6*-p!t6?``j6A860DkFw|4$Jz_*6YK$drG2Ws%0A6L z(>}{S-@e3tmwl;ynf)I7z4o>Cb@m7B57~FyAGSYc-)Dcqe$al*{(}8Q`z!X>?QhuM zwZCWo(EgGAjQy zdmXDB>l|AgTOHdR+a0?dPdJ`*Jmom#c+v5a<7LNdjyD}|Io@}icARmXb$seL@A%Pi z!SR#hqT?UORmU|a<1{-h&KPH`)9G|M6P!()O`Xl0inFaV!CwZmxc={;mP8fv#b$;jUbl-!;)y=qh$i zc1>|rx~96Oxu(13xaPVRxR$x@b}e_Ua;pjdd8#$ArP8h0(8 ziD%=5cro4=FU8C88S&lX`^V?RkBrZc9}`~@KQn$|{POq}@hjsu#P5vX75`BDp7;at z2jicKe>VPD{0s4~#J?Kq+o5^Q3yx zJncN~JzYFqJv}@pe?5<4gMO6;9DFmY(&u*Cet z!o;G)$%z$-!NkhMsfksIp~M-KArU9uop@j3+QiL?TM~CBK9cxo;{L<~iO(e-O?)-+ zwZ!)mzeqfv_+{b`i9aU(ocLSf---WtIWO;x^;*3iZ-Tdpx2ZS9+uGaS+riu0+n+Lc z2Y3g1hk1v4bG@UyW4+_N6TOAr5^t%u!W;BfduzP2ytBQk7kd|Z7klsaF88kTuJ+#V zUGII+yV<+LyVLuK_fhXY?-SmG-lx6KdjI2n!TX~3Rqt!wx4rLpPk2vyKk=USe&+q$ z`?dEQ?~mRK-ru|zy_dazd9Qh|C$ULfl9*&lvL?Bb5|R>=d`ZocnkThPN=?d4YM0bG zsY_D#q#j9qllmnMP8yPwos^R_Iw?P?AZbEUAZb$4l%%qxsY%n4rYFrwnwzvBX>rn$ zq~(+$X+zTHq&-Rdk`5;wO?oZq^`tkFK1}*3=}gkuq#u$lCHU;-3~*TU={#U7{o;(GnxE5-0JJK{85$BuXa9ELo%&DOR#dHpwnI zB&Xz(+)|trFL|T{DN*uDNm8=ZNb*UyNsXl@Qd6m!)Ld#INs=rnQcJ0olp?j3+DNHV znv^cJl`^DEsh!kb>L7KLI!T?SE>c(NcBz|`C3Tm2NIj)qQg5k`)K}^!^_K=n1EoRI zU}=anR2n7?mqtk0QjRoI%9Tb*dD3VpUm7EgmBvZqr2=V!Cl%A6IO9!Nb($mr*>9BM}dPaIy z`j7OSbX0m?Iwrj!y(qmTy(}G5BBX^pA8^x+YzhDH+MM%*d?F$-Hckjj|w%vPm|}7CAgzuaWPQ*UIbU`{niW26?0WfV@e5 zP~I$Wk+;g*FXgY~ujOy#Z{_dg@8uulALR@3 zPx8<5FY>SQZ}LU?lKi{;hy15}S^i7DBL6M_BVU!T$=4N1K?812m z`Y3&seoB93fHF`SqzqPuC_|ND%5Y_blC9(@Bb8ibl#-{6R`QiG%2;KbGF~ZACMbSo zqEe_7DFJ1YQmm9HrOISwic+SOD-}vmsZ^#aRZ2*yR%(=K%5-IhGE3ym$~xtKWxcXN z*{D3AY*HRnHY;0{t;#lKyRt*ssq9i7Qg$m3D~~9TDtna2l)cL1%0A@@m!?1)RdK-rUXi)Oq7|jP%%_2 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 Y-+v-2{oh|({QiG`{r~?R(W=V-13iCU!2kdN diff --git a/modules/gui/macosx/CoreInteraction.m b/modules/gui/macosx/CoreInteraction.m index c055a72355..10fdb1661d 100644 --- a/modules/gui/macosx/CoreInteraction.m +++ b/modules/gui/macosx/CoreInteraction.m @@ -261,22 +261,12 @@ static VLCCoreInteraction *_o_sharedInstance = nil; - (void)toggleFullscreen { input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - + if( p_input != NULL ) { - vout_thread_t *p_vout = input_GetVout( p_input ); - if( p_vout != NULL ) - { - id o_vout_view = [self voutView]; - if( o_vout_view ) - [o_vout_view toggleFullscreen]; - vlc_object_release( p_vout ); - } - else - { - playlist_t * p_playlist = pl_Get( VLCIntf ); - var_ToggleBool( p_playlist, "fullscreen" ); - } + playlist_t * p_playlist = pl_Get( VLCIntf ); + var_ToggleBool( p_playlist, "fullscreen" ); + vlc_object_release( p_input ); } } diff --git a/modules/gui/macosx/MainMenu.h b/modules/gui/macosx/MainMenu.h index 2825eeb3a5..9c6ea3f570 100644 --- a/modules/gui/macosx/MainMenu.h +++ b/modules/gui/macosx/MainMenu.h @@ -209,6 +209,11 @@ - (IBAction)setPlaybackRate:(id)sender; - (void)updatePlaybackRate; +- (IBAction)toggleFullscreen:(id)sender; +- (IBAction)resizeVideoWindow:(id)sender; +- (IBAction)floatOnTop:(id)sender; +- (IBAction)createVideoSnapshot:(id)sender; + - (IBAction)showWizard:(id)sender; - (IBAction)showVideoEffects:(id)sender; - (IBAction)showAudioEffects:(id)sender; diff --git a/modules/gui/macosx/MainMenu.m b/modules/gui/macosx/MainMenu.m index 3898f846e1..991429e2b3 100644 --- a/modules/gui/macosx/MainMenu.m +++ b/modules/gui/macosx/MainMenu.m @@ -39,6 +39,7 @@ #import "playlistinfo.h" #import "vout.h" #import "CoreInteraction.h" +#import "MainWindow.h" @implementation VLCMainMenu static VLCMainMenu *_o_sharedInstance = nil; @@ -560,6 +561,68 @@ static VLCMainMenu *_o_sharedInstance = nil; [o_mi_rate_sld setIntValue: i]; } +#pragma mark - +#pragma video menu +- (IBAction)toggleFullscreen:(id)sender +{ + [[VLCCoreInteraction sharedInstance] toggleFullscreen]; +} + +- (IBAction)resizeVideoWindow:(id)sender +{ + input_thread_t *p_input = pl_CurrentInput( VLCIntf ); + if (p_input) + { + vout_thread_t *p_vout = getVout(); + if (p_vout) + { + if (sender == o_mi_half_window) + var_SetFloat( p_vout, "zoom", 0.5 ); + else if (sender == o_mi_normal_window) + var_SetFloat( p_vout, "zoom", 1.0 ); + else if (sender == o_mi_double_window) + var_SetFloat( p_vout, "zoom", 2.0 ); + else + { + if (![[VLCMainWindow sharedInstance] isZoomed]) + [[VLCMainWindow sharedInstance] performZoom: sender]; + } + vlc_object_release( p_vout ); + } + vlc_object_release( p_input ); + } +} + +- (IBAction)floatOnTop:(id)sender +{ + input_thread_t *p_input = pl_CurrentInput( VLCIntf ); + if (p_input) + { + vout_thread_t *p_vout = getVout(); + if (p_vout) + { + var_ToggleBool( p_vout, "video-on-top" ); + vlc_object_release( p_vout ); + } + vlc_object_release( p_input ); + } +} + +- (IBAction)createVideoSnapshot:(id)sender +{ + input_thread_t *p_input = pl_CurrentInput( VLCIntf ); + if (p_input) + { + vout_thread_t *p_vout = getVout(); + if (p_vout) + { + var_TriggerCallback( p_vout, "video-snapshot" ); + vlc_object_release( p_vout ); + } + vlc_object_release( p_input ); + } +} + #pragma mark - #pragma mark Panels @@ -1132,9 +1195,6 @@ static VLCMainMenu *_o_sharedInstance = nil; [o_title isEqualToString: _NS("Fullscreen")] || [o_title isEqualToString: _NS("Float on Top")] ) { - id o_window; - NSArray *o_windows = [NSApp orderedWindows]; - NSEnumerator *o_enumerator = [o_windows objectEnumerator]; bEnabled = FALSE; if( p_input != NULL ) @@ -1148,16 +1208,7 @@ static VLCMainMenu *_o_sharedInstance = nil; [o_mi setState: val.b_bool ? NSOnState : NSOffState]; } - while( (o_window = [o_enumerator nextObject])) - { - if( [[o_window className] isEqualToString: @"VLCVoutWindow"] || - [[[VLCMain sharedInstance] embeddedList] - windowContainsEmbedded: o_window]) - { - bEnabled = TRUE; - break; - } - } + bEnabled = TRUE; vlc_object_release( (vlc_object_t *)p_vout ); } diff --git a/modules/gui/macosx/MainWindow.h b/modules/gui/macosx/MainWindow.h index 57973eebbb..22bb753aff 100644 --- a/modules/gui/macosx/MainWindow.h +++ b/modules/gui/macosx/MainWindow.h @@ -29,7 +29,11 @@ #import #import "misc.h" -@interface VLCMainWindow : NSWindow { +#ifndef MAC_OS_X_VERSION_10_6 +@protocol NSAnimationDelegate @end +#endif + +@interface VLCMainWindow : NSWindow { IBOutlet id o_play_btn; IBOutlet id o_bwd_btn; IBOutlet id o_fwd_btn; @@ -90,6 +94,19 @@ BOOL just_triggered_next; BOOL just_triggered_previous; NSMutableArray *o_sidebaritems; + + VLCWindow * o_fullscreen_window; + NSViewAnimation * o_fullscreen_anim1; + NSViewAnimation * o_fullscreen_anim2; + NSViewAnimation * o_makekey_anim; + NSView * o_temp_view; + /* set to yes if we are fullscreen and all animations are over */ + BOOL b_fullscreen; + BOOL b_window_is_invisible; + NSRecursiveLock * o_animation_lock; + NSSize nativeVideoSize; + + NSInteger i_originalLevel; } + (VLCMainWindow *)sharedInstance; @@ -106,8 +123,6 @@ - (IBAction)fullscreen:(id)sender; - (IBAction)dropzoneButtonAction:(id)sender; -- (id)videoView; -- (void)setVideoplayEnabled; - (void)showDropZone; - (void)hideDropZone; - (void)updateTimeSlider; @@ -123,6 +138,22 @@ - (void)drawFancyGradientEffectForTimeSlider; +- (id)videoView; +- (void)setVideoplayEnabled; +- (void)resizeWindow; +- (void)setNativeVideoSize:(NSSize)size; + +/* fullscreen handling */ +- (BOOL)isFullscreen; +- (void)lockFullscreenAnimation; +- (void)unlockFullscreenAnimation; +- (void)enterFullscreen; +- (void)leaveFullscreen; +- (void)leaveFullscreenAndFadeOut: (BOOL)fadeout; +- (void)hasEndedFullscreen; +- (void)hasBecomeFullscreen; +- (void)setFrameOnMainThread:(NSData*)packedargs; + @end @interface VLCProgressBarGradientEffect : NSView { diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m index 6f4cc6116e..514f491cd9 100644 --- a/modules/gui/macosx/MainWindow.m +++ b/modules/gui/macosx/MainWindow.m @@ -208,10 +208,12 @@ static VLCMainWindow *_o_sharedInstance = nil; [self setDelegate: self]; [self setExcludedFromWindowsMenu: YES]; // Set that here as IB seems to be buggy - [self setContentMinSize:NSMakeSize(400., 288.)]; + [self setContentMinSize:NSMakeSize(500., 288.)]; [self setTitle: _NS("VLC media player")]; [o_playlist_btn setEnabled:NO]; [o_video_view setFrame: [o_split_view frame]]; + o_temp_view = [[NSView alloc] init]; + [o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable]; /* reset the interface */ [self updateVolumeSlider]; @@ -555,8 +557,8 @@ static VLCMainWindow *_o_sharedInstance = nil; - (IBAction)fullscreen:(id)sender { - NSLog( @"fullscreen mode not yet implemented" ); - [[VLCCoreInteraction sharedInstance] toggleFullscreen]; +//?! [[VLCCoreInteraction sharedInstance] toggleFullscreen]; + [self enterFullscreen]; } - (IBAction)dropzoneButtonAction:(id)sender @@ -815,6 +817,477 @@ static VLCMainWindow *_o_sharedInstance = nil; [o_playlist_btn setEnabled: [[VLCMain sharedInstance] activeVideoPlayback]]; } +- (void)resizeWindow +{ + if ( !b_fullscreen ) + { + NSPoint topleftbase; + NSPoint topleftscreen; + NSRect new_frame; + topleftbase.x = 0; + topleftbase.y = [self frame].size.height; + topleftscreen = [self convertBaseToScreen: topleftbase]; + + /* Calculate the window's new size */ + new_frame.size.width = [self frame].size.width - [o_video_view frame].size.width + nativeVideoSize.width; + new_frame.size.height = [self frame].size.height - [o_video_view frame].size.height + nativeVideoSize.height; + + new_frame.origin.x = topleftscreen.x; + new_frame.origin.y = topleftscreen.y - new_frame.size.height; + + [[self animator] setFrame:new_frame display:YES]; + } +} + +- (void)setNativeVideoSize:(NSSize)size +{ + if (size.width != nativeVideoSize.width || size.height != nativeVideoSize.height ) + { + nativeVideoSize = size; + [self resizeWindow]; + } +} + +#pragma mark - +#pragma mark Fullscreen support +- (BOOL)isFullscreen +{ + return b_fullscreen; +} + +- (void)lockFullscreenAnimation +{ + [o_animation_lock lock]; +} + +- (void)unlockFullscreenAnimation +{ + [o_animation_lock unlock]; +} + +- (void)enterFullscreen +{ + NSMutableDictionary *dict1, *dict2; + NSScreen *screen; + NSRect screen_rect; + NSRect rect; + vout_thread_t *p_vout = getVout(); + BOOL blackout_other_displays = config_GetInt( VLCIntf, "macosx-black" ); + + if( p_vout ) + screen = [NSScreen screenWithDisplayID:(CGDirectDisplayID)var_GetInteger( p_vout, "video-device" )]; + + [self lockFullscreenAnimation]; + + if (!screen) + { + msg_Dbg( VLCIntf, "chosen screen isn't present, using current screen for fullscreen mode" ); + screen = [self screen]; + } + if (!screen) + { + msg_Dbg( VLCIntf, "Using deepest screen" ); + screen = [NSScreen deepestScreen]; + } + + if( p_vout ) + vlc_object_release( p_vout ); + + screen_rect = [screen frame]; + + [o_fullscreen_btn setState: YES]; + + [NSCursor setHiddenUntilMouseMoves: YES]; + + if( blackout_other_displays ) + [screen blackoutOtherScreens]; + + /* Make sure we don't see the window flashes in float-on-top mode */ + i_originalLevel = [self level]; + [self setLevel:NSNormalWindowLevel]; + + /* Only create the o_fullscreen_window if we are not in the middle of the zooming animation */ + if (!o_fullscreen_window) + { + /* We can't change the styleMask of an already created NSWindow, so we create another window, and do eye catching stuff */ + + rect = [[o_video_view superview] convertRect: [o_video_view frame] toView: nil]; /* Convert to Window base coord */ + rect.origin.x += [self frame].origin.x; + rect.origin.y += [self frame].origin.y; + o_fullscreen_window = [[VLCWindow alloc] initWithContentRect:rect styleMask: NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; + [o_fullscreen_window setBackgroundColor: [NSColor blackColor]]; + [o_fullscreen_window setCanBecomeKeyWindow: YES]; + + if (![self isVisible] || [self alphaValue] == 0.0) + { + /* We don't animate if we are not visible, instead we + * simply fade the display */ + CGDisplayFadeReservationToken token; + + if( blackout_other_displays ) + { + CGAcquireDisplayFadeReservation( kCGMaxDisplayReservationInterval, &token ); + CGDisplayFade( token, 0.5, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES ); + } + + if ([screen isMainScreen]) + SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar); + + [[o_video_view superview] replaceSubview:o_dropzone_view with:o_temp_view]; + [o_temp_view setFrame:[o_video_view frame]]; + [o_fullscreen_window setContentView:o_video_view]; + + [o_fullscreen_window makeKeyAndOrderFront:self]; + [o_fullscreen_window orderFront:self animate:YES]; + + [o_fullscreen_window setFrame:screen_rect display:YES]; + + if( blackout_other_displays ) + { + CGDisplayFade( token, 0.3, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0, 0, 0, NO ); + CGReleaseDisplayFadeReservation( token ); + } + + /* Will release the lock */ + [self hasBecomeFullscreen]; + + return; + } + + /* Make sure we don't see the o_video_view disappearing of the screen during this operation */ + NSDisableScreenUpdates(); + [[o_video_view superview] replaceSubview:o_video_view with:o_temp_view]; + [o_temp_view setFrame:[o_video_view frame]]; + [o_fullscreen_window setContentView:o_video_view]; + [o_fullscreen_window makeKeyAndOrderFront:self]; + NSEnableScreenUpdates(); + } + + /* We are in fullscreen (and no animation is running) */ + if (b_fullscreen) + { + /* Make sure we are hidden */ + [super orderOut: self]; + [self unlockFullscreenAnimation]; + return; + } + + if (o_fullscreen_anim1) + { + [o_fullscreen_anim1 stopAnimation]; + [o_fullscreen_anim1 release]; + } + if (o_fullscreen_anim2) + { + [o_fullscreen_anim2 stopAnimation]; + [o_fullscreen_anim2 release]; + } + + if ([screen isMainScreen]) + SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar); + + dict1 = [[NSMutableDictionary alloc] initWithCapacity:2]; + dict2 = [[NSMutableDictionary alloc] initWithCapacity:3]; + + [dict1 setObject:self forKey:NSViewAnimationTargetKey]; + [dict1 setObject:NSViewAnimationFadeOutEffect forKey:NSViewAnimationEffectKey]; + + [dict2 setObject:o_fullscreen_window forKey:NSViewAnimationTargetKey]; + [dict2 setObject:[NSValue valueWithRect:[o_fullscreen_window frame]] forKey:NSViewAnimationStartFrameKey]; + [dict2 setObject:[NSValue valueWithRect:screen_rect] forKey:NSViewAnimationEndFrameKey]; + + /* Strategy with NSAnimation allocation: + - Keep at most 2 animation at a time + - leaveFullscreen/enterFullscreen are the only responsible for releasing and alloc-ing + */ + o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict1]]; + o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict2]]; + + [dict1 release]; + [dict2 release]; + + [o_fullscreen_anim1 setAnimationBlockingMode: NSAnimationNonblocking]; + [o_fullscreen_anim1 setDuration: 0.3]; + [o_fullscreen_anim1 setFrameRate: 30]; + [o_fullscreen_anim2 setAnimationBlockingMode: NSAnimationNonblocking]; + [o_fullscreen_anim2 setDuration: 0.2]; + [o_fullscreen_anim2 setFrameRate: 30]; + + [o_fullscreen_anim2 setDelegate: self]; + [o_fullscreen_anim2 startWhenAnimation: o_fullscreen_anim1 reachesProgress: 1.0]; + + [o_fullscreen_anim1 startAnimation]; + /* fullscreenAnimation will be unlocked when animation ends */ +} + +- (void)hasBecomeFullscreen +{ + [o_fullscreen_window makeFirstResponder: o_video_view]; + + [o_fullscreen_window makeKeyWindow]; + [o_fullscreen_window setAcceptsMouseMovedEvents: TRUE]; + + /* tell the fspanel to move itself to front next time it's triggered */ + [[[[VLCMain sharedInstance] controls] fspanel] setVoutWasUpdated: (int)[[o_fullscreen_window screen] displayID]]; + + if([self isVisible]) + [super orderOut: self]; + + [[[[VLCMain sharedInstance] controls] fspanel] setActive: nil]; + + b_fullscreen = YES; + [self unlockFullscreenAnimation]; +} + +- (void)leaveFullscreen +{ + [self leaveFullscreenAndFadeOut: NO]; +} + +- (void)leaveFullscreenAndFadeOut: (BOOL)fadeout +{ + NSMutableDictionary *dict1, *dict2; + NSRect frame; + BOOL blackout_other_displays = config_GetInt( VLCIntf, "macosx-black" ); + + [self lockFullscreenAnimation]; + + b_fullscreen = NO; + [o_fullscreen_btn setState: NO]; + + /* We always try to do so */ + [NSScreen unblackoutScreens]; + + /* Don't do anything if o_fullscreen_window is already closed */ + if (!o_fullscreen_window) + { + [self unlockFullscreenAnimation]; + return; + } + + if (fadeout) + { + /* We don't animate if we are not visible, instead we + * simply fade the display */ + CGDisplayFadeReservationToken token; + + if( blackout_other_displays ) + { + CGAcquireDisplayFadeReservation( kCGMaxDisplayReservationInterval, &token ); + CGDisplayFade( token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES ); + } + + [[[[VLCMain sharedInstance] controls] fspanel] setNonActive: nil]; + SetSystemUIMode( kUIModeNormal, kUIOptionAutoShowMenuBar); + + /* Will release the lock */ + [self hasEndedFullscreen]; + + /* Our window is hidden, and might be faded. We need to workaround that, so note it + * here */ + b_window_is_invisible = YES; + + if( blackout_other_displays ) + { + CGDisplayFade( token, 0.5, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0, 0, 0, NO ); + CGReleaseDisplayFadeReservation( token ); + } + + return; + } + + [self setAlphaValue: 0.0]; + [self orderFront: self]; + + [[[[VLCMain sharedInstance] controls] fspanel] setNonActive: nil]; + SetSystemUIMode( kUIModeNormal, kUIOptionAutoShowMenuBar); + + if (o_fullscreen_anim1) + { + [o_fullscreen_anim1 stopAnimation]; + [o_fullscreen_anim1 release]; + } + if (o_fullscreen_anim2) + { + [o_fullscreen_anim2 stopAnimation]; + [o_fullscreen_anim2 release]; + } + + frame = [[o_temp_view superview] convertRect: [o_temp_view frame] toView: nil]; /* Convert to Window base coord */ + frame.origin.x += [self frame].origin.x; + frame.origin.y += [self frame].origin.y; + + dict2 = [[NSMutableDictionary alloc] initWithCapacity:2]; + [dict2 setObject:self forKey:NSViewAnimationTargetKey]; + [dict2 setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey]; + + o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict2, nil]]; + [dict2 release]; + + [o_fullscreen_anim2 setAnimationBlockingMode: NSAnimationNonblocking]; + [o_fullscreen_anim2 setDuration: 0.3]; + [o_fullscreen_anim2 setFrameRate: 30]; + + [o_fullscreen_anim2 setDelegate: self]; + + dict1 = [[NSMutableDictionary alloc] initWithCapacity:3]; + + [dict1 setObject:o_fullscreen_window forKey:NSViewAnimationTargetKey]; + [dict1 setObject:[NSValue valueWithRect:[o_fullscreen_window frame]] forKey:NSViewAnimationStartFrameKey]; + [dict1 setObject:[NSValue valueWithRect:frame] forKey:NSViewAnimationEndFrameKey]; + + o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict1, nil]]; + [dict1 release]; + + [o_fullscreen_anim1 setAnimationBlockingMode: NSAnimationNonblocking]; + [o_fullscreen_anim1 setDuration: 0.2]; + [o_fullscreen_anim1 setFrameRate: 30]; + [o_fullscreen_anim2 startWhenAnimation: o_fullscreen_anim1 reachesProgress: 1.0]; + + /* Make sure o_fullscreen_window is the frontmost window */ + [o_fullscreen_window orderFront: self]; + + [o_fullscreen_anim1 startAnimation]; + /* fullscreenAnimation will be unlocked when animation ends */ +} + +- (void)hasEndedFullscreen +{ + /* This function is private and should be only triggered at the end of the fullscreen change animation */ + /* Make sure we don't see the o_video_view disappearing of the screen during this operation */ + NSDisableScreenUpdates(); + [o_video_view retain]; + [o_video_view removeFromSuperviewWithoutNeedingDisplay]; + [[o_temp_view superview] replaceSubview:o_temp_view with:o_video_view]; + [o_video_view release]; + [o_video_view setFrame:[o_temp_view frame]]; + [self makeFirstResponder: o_video_view]; + if ([self isVisible]) + [super makeKeyAndOrderFront:self]; /* our version contains a workaround */ + [o_fullscreen_window orderOut: self]; + NSEnableScreenUpdates(); + + [o_fullscreen_window release]; + o_fullscreen_window = nil; + [self setLevel:i_originalLevel]; + + [self unlockFullscreenAnimation]; +} + +- (void)animationDidEnd:(NSAnimation*)animation +{ + NSArray *viewAnimations; + if( o_makekey_anim == animation ) + { + [o_makekey_anim release]; + return; + } + if ([animation currentValue] < 1.0) + return; + + /* Fullscreen ended or started (we are a delegate only for leaveFullscreen's/enterFullscren's anim2) */ + viewAnimations = [o_fullscreen_anim2 viewAnimations]; + if ([viewAnimations count] >=1 && + [[[viewAnimations objectAtIndex: 0] objectForKey: NSViewAnimationEffectKey] isEqualToString:NSViewAnimationFadeInEffect]) + { + /* Fullscreen ended */ + [self hasEndedFullscreen]; + } + else + { + /* Fullscreen started */ + [self hasBecomeFullscreen]; + } +} + +- (void)orderOut: (id)sender +{ + [super orderOut: sender]; + + /* Make sure we leave fullscreen */ + [self leaveFullscreenAndFadeOut: YES]; +} + +- (void)makeKeyAndOrderFront: (id)sender +{ + /* Hack + * when we exit fullscreen and fade out, we may endup in + * having a window that is faded. We can't have it fade in unless we + * animate again. */ + + if(!b_window_is_invisible) + { + /* Make sure we don't do it too much */ + [super makeKeyAndOrderFront: sender]; + return; + } + + [super setAlphaValue:0.0f]; + [super makeKeyAndOrderFront: sender]; + + NSMutableDictionary * dict = [[NSMutableDictionary alloc] initWithCapacity:2]; + [dict setObject:self forKey:NSViewAnimationTargetKey]; + [dict setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey]; + + o_makekey_anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict]]; + [dict release]; + + [o_makekey_anim setAnimationBlockingMode: NSAnimationNonblocking]; + [o_makekey_anim setDuration: 0.1]; + [o_makekey_anim setFrameRate: 30]; + [o_makekey_anim setDelegate: self]; + + [o_makekey_anim startAnimation]; + b_window_is_invisible = NO; + + /* fullscreenAnimation will be unlocked when animation ends */ +} + + + +/* Make sure setFrame gets executed on main thread especially if we are animating. + * (Thus we won't block the video output thread) */ +- (void)setFrame:(NSRect)frame display:(BOOL)display animate:(BOOL)animate +{ + struct { NSRect frame; BOOL display; BOOL animate;} args; + NSData *packedargs; + + args.frame = frame; + args.display = display; + args.animate = animate; + + packedargs = [NSData dataWithBytes:&args length:sizeof(args)]; + + [self performSelectorOnMainThread:@selector(setFrameOnMainThread:) + withObject: packedargs waitUntilDone: YES]; +} + +- (void)setFrameOnMainThread:(NSData*)packedargs +{ + struct args { NSRect frame; BOOL display; BOOL animate; } * args = (struct args*)[packedargs bytes]; + + if( args->animate ) + { + /* Make sure we don't block too long and set up a non blocking animation */ + NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys: + self, NSViewAnimationTargetKey, + [NSValue valueWithRect:[self frame]], NSViewAnimationStartFrameKey, + [NSValue valueWithRect:args->frame], NSViewAnimationEndFrameKey, nil]; + + NSViewAnimation * anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict]]; + [dict release]; + + [anim setAnimationBlockingMode: NSAnimationNonblocking]; + [anim setDuration: 0.4]; + [anim setFrameRate: 30]; + [anim startAnimation]; + } + else { + [super setFrame:args->frame display:args->display animate:args->animate]; + } +} + + #pragma mark - #pragma mark Side Bar Data handling /* taken under BSD-new from the PXSourceList sample project, adapted for VLC */ diff --git a/modules/gui/macosx/controls.h b/modules/gui/macosx/controls.h index 390c431d97..7add587b55 100644 --- a/modules/gui/macosx/controls.h +++ b/modules/gui/macosx/controls.h @@ -63,9 +63,6 @@ - (IBAction)volumeSliderUpdated:(id)sender; - (IBAction)showPosition: (id)sender; -- (IBAction)toogleFullscreen:(id)sender; -- (BOOL)isFullscreen; -- (IBAction)windowAction:(id)sender; - (IBAction)telxTransparent:(id)sender; - (IBAction)telxNavLink:(id)sender; diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 65537a57a3..226d667f35 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -186,52 +186,6 @@ return NO; } -- (IBAction)windowAction:(id)sender -{ - NSString *o_title = [sender title]; - input_thread_t * p_input = pl_CurrentInput( VLCIntf ); - - if( p_input != NULL ) - { - vout_thread_t *p_vout = input_GetVout( p_input ); - if( p_vout != NULL ) - { - id o_vout_view = [[VLCCoreInteraction sharedInstance] voutView]; - if( o_vout_view ) - { - if( [o_title isEqualToString: _NS("Half Size") ] ) - [o_vout_view scaleWindowWithFactor: 0.5 animate: YES]; - else if( [o_title isEqualToString: _NS("Normal Size") ] ) - [o_vout_view scaleWindowWithFactor: 1.0 animate: YES]; - else if( [o_title isEqualToString: _NS("Double Size") ] ) - [o_vout_view scaleWindowWithFactor: 2.0 animate: YES]; - else if( [o_title isEqualToString: _NS("Float on Top") ] ) - [o_vout_view toggleFloatOnTop]; - else if( [o_title isEqualToString: _NS("Fit to Screen") ] ) - { - id o_window = [o_vout_view voutWindow]; - if( ![o_window isZoomed] ) - [o_window performZoom:self]; - } - else if( [o_title isEqualToString: _NS("Snapshot") ] ) - { - [o_vout_view snapshot]; - } - else - { - [[VLCCoreInteraction sharedInstance] toggleFullscreen]; - } - } - vlc_object_release( (vlc_object_t *)p_vout ); - } - else - { - [[VLCCoreInteraction sharedInstance] toggleFullscreen]; - } - vlc_object_release( p_input ); - } -} - - (IBAction)telxTransparent:(id)sender { vlc_object_t *p_vbi; diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 4e3f72eeb5..f7187cf2c6 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -108,7 +108,7 @@ struct intf_sys_t BOOL nib_bookmarks_loaded; /* Bookmarks nibfile */ BOOL b_active_videoplayback; - IBOutlet id o_mainwindow; /* VLCMainWindow */ + id o_mainwindow; /* VLCMainWindow */ IBOutlet VLCControls * o_controls; /* VLCControls */ IBOutlet VLCPlaylist * o_playlist; /* VLCPlaylist */ @@ -159,6 +159,7 @@ struct intf_sys_t - (id)wizard; - (id)embeddedList; - (id)getVideoViewAtPositionX: (int *)pi_x Y: (int *)pi_y withWidth: (unsigned int*)pi_width andHeight: (unsigned int*)pi_height; +- (void)setNativeVideoSize:(NSSize)size; - (id)coreDialogProvider; - (id)eyeTVController; - (id)appleRemoteController; @@ -172,6 +173,7 @@ struct intf_sys_t - (NSString *)VLCKeyToString:(NSString *)theString; - (unsigned int)VLCModifiersToCocoa:(NSString *)theString; - (void)updateCurrentlyUsedHotkeys; +- (void)fullscreenChanged; - (void)PlaylistItemChanged; - (void)playbackStatusUpdated; - (void)playbackModeUpdated; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 7333a5d516..47a93ff871 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -132,7 +132,6 @@ int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg ) return VLC_EGENERIC; } - msg_Dbg( p_wnd, "looking for video view" ); int i_x = cfg->x; int i_y = cfg->y; unsigned i_width = cfg->width; @@ -145,6 +144,7 @@ int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg ) return VLC_EGENERIC; } + [[VLCMain sharedInstance] setNativeVideoSize:NSMakeSize( cfg->width, cfg->height )]; [[VLCMain sharedInstance] setActiveVideoPlayback: YES]; p_wnd->control = WindowControl; p_wnd->sys = (vout_window_sys_t *)VLCIntf; @@ -158,7 +158,12 @@ static int WindowControl( vout_window_t *p_wnd, int i_query, va_list args ) if( i_query == VOUT_WINDOW_SET_STATE ) NSLog( @"WindowControl:VOUT_WINDOW_SET_STATE" ); else if( i_query == VOUT_WINDOW_SET_SIZE ) + { NSLog( @"WindowControl:VOUT_WINDOW_SET_SIZE" ); + unsigned int i_width = va_arg( args, unsigned int ); + unsigned int i_height = va_arg( args, unsigned int ); + [[VLCMain sharedInstance] setNativeVideoSize:NSMakeSize( i_width, i_height )]; + } else if( i_query == VOUT_WINDOW_SET_FULLSCREEN ) NSLog( @"WindowControl:VOUT_WINDOW_SET_FULLSCREEN" ); else @@ -340,7 +345,7 @@ static int VolumeUpdated( vlc_object_t *p_this, const char *psz_var, vlc_value_t oldval, vlc_value_t new_val, void *param ) { NSAutoreleasePool * o_pool = [[NSAutoreleasePool alloc] init]; - [[VLCMain sharedInstance] updateVolume]; + [[VLCMain sharedInstance] performSelectorOnMainThread:@selector(updateVolume) withObject:nil waitUntilDone:NO]; [o_pool release]; return VLC_SUCCESS; @@ -357,12 +362,7 @@ static int ShowController( vlc_object_t *p_this, const char *psz_variable, intf_thread_t * p_intf = VLCIntf; if( p_intf && p_intf->p_sys ) { - NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init]; - if( [[[VLCCoreInteraction sharedInstance] voutView] isFullscreen] && config_GetInt( VLCIntf, "macosx-fspanel" ) ) - [[[[VLCMain sharedInstance] controls] fspanel] fadeIn]; - else - [[VLCMainWindow sharedInstance] makeKeyAndOrderFront: nil]; - [o_pool release]; + NSLog( @"fixme! we should implement ShowController here" ); } return VLC_SUCCESS; } @@ -375,8 +375,12 @@ static int FullscreenChanged( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ) { intf_thread_t * p_intf = VLCIntf; - if( p_intf && p_intf->p_sys ) - NSLog( @"we should update fullscreen state" ); //FIXME + if (p_intf) + { + NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init]; + [[VLCMain sharedInstance] fullscreenChanged]; + [o_pool release]; + } return VLC_SUCCESS; } @@ -1229,6 +1233,14 @@ unsigned int CocoaKeyToVLC( unichar i_key ) #pragma mark - #pragma mark Interface updaters +- (void)fullscreenChanged +{ + if(! [o_mainwindow isFullscreen] ) + [o_mainwindow performSelectorOnMainThread:@selector(enterFullscreen) withObject:nil waitUntilDone:NO]; + else + [o_mainwindow performSelectorOnMainThread:@selector(leaveFullscreen) withObject:nil waitUntilDone:NO]; +} + - (void)PlaylistItemChanged { input_thread_t * p_input; @@ -1240,7 +1252,8 @@ unsigned int CocoaKeyToVLC( unichar i_key ) [o_mainmenu setRateControlsEnabled: YES]; vlc_object_release( p_input ); } - else[o_mainmenu setRateControlsEnabled: NO]; + else + [o_mainmenu setRateControlsEnabled: NO]; [o_playlist updateRowSelection]; [o_mainwindow updateWindow]; @@ -1441,6 +1454,11 @@ unsigned int CocoaKeyToVLC( unichar i_key ) return videoView; } +- (void)setNativeVideoSize:(NSSize)size +{ + [o_mainwindow setNativeVideoSize:size]; +} + - (id)embeddedList { if( o_embedded_list ) @@ -1748,10 +1766,8 @@ unsigned int CocoaKeyToVLC( unichar i_key ) - (IBAction)saveDebugLog:(id)sender { - NSOpenPanel * saveFolderPanel = [[NSSavePanel alloc] init]; + NSSavePanel * saveFolderPanel = [[NSSavePanel alloc] init]; - [saveFolderPanel setCanChooseDirectories: NO]; - [saveFolderPanel setCanChooseFiles: YES]; [saveFolderPanel setCanSelectHiddenExtension: NO]; [saveFolderPanel setCanCreateDirectories: YES]; [saveFolderPanel setAllowedFileTypes: [NSArray arrayWithObject:@"rtfd"]]; -- 2.39.5