Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 9a17c62ecbafdac7084c862058c8ade4a8102406
Author: Collider LI <lhc199652@gmail.com>
Date:   Sat Apr 23 22:48:46 2022 -0400

    Make the fix #3399 macOS 11 only

commit b01feb81858c1c9dc3af273012f75cc5e25c0f45
Merge: d5e4300 51b5a22
Author: Collider LI <lhc199652@gmail.com>
Date:   Sat Apr 23 22:30:29 2022 -0400

    Merge branch 'fix-3364' of https://github.com/xjbeta/iina-danmaku into xjbeta-fix-3364

commit 51b5a22
Author: xjbeta <xjbeta.tiny@gmail.com>
Date:   Mon Apr 26 23:48:53 2021 +0800

    Fix #3364.
  • Loading branch information
lhc70000 committed Apr 24, 2022
1 parent d5e4300 commit 39be32d
Showing 1 changed file with 48 additions and 3 deletions.
51 changes: 48 additions & 3 deletions iina/MainWindowController.swift
Expand Up @@ -9,6 +9,16 @@
import Cocoa
import Mustache

fileprivate let isMacOS11: Bool = {
var res = false
if #available(macOS 11.0, *) {
if #available(macOS 12.0, *) {} else {
res = true
}
}
return res
}()

fileprivate let TitleBarHeightNormal: CGFloat = {
if #available(macOS 10.16, *) {
return 28
Expand Down Expand Up @@ -702,9 +712,14 @@ class MainWindowController: PlayerWindowController {
oscFloatingTopView.addView(fragVolumeView, in: .leading)
oscFloatingTopView.addView(fragToolbarView, in: .trailing)
oscFloatingTopView.addView(fragControlView, in: .center)
oscFloatingTopView.setVisibilityPriority(.detachOnlyIfNecessary, for: fragVolumeView)
oscFloatingTopView.setVisibilityPriority(.detachOnlyIfNecessary, for: fragToolbarView)
oscFloatingTopView.setClippingResistancePriority(.defaultLow, for: .horizontal)

// Setting the visibility priority to detach only will cause freeze when resizing the window
// (and triggering the detach) in macOS 11.
if !isMacOS11 {
oscFloatingTopView.setVisibilityPriority(.detachOnlyIfNecessary, for: fragVolumeView)
oscFloatingTopView.setVisibilityPriority(.detachOnlyIfNecessary, for: fragToolbarView)
oscFloatingTopView.setClippingResistancePriority(.defaultLow, for: .horizontal)
}
oscFloatingBottomView.addSubview(fragSliderView)
Utility.quickConstraints(["H:|[v]|", "V:|[v]|"], ["v": fragSliderView])
Utility.quickConstraints(["H:|-(>=0)-[v]-(>=0)-|"], ["v": fragControlView])
Expand Down Expand Up @@ -1425,6 +1440,36 @@ class MainWindowController: PlayerWindowController {
controlBarFloating.xConstraint.constant = xPos
controlBarFloating.yConstraint.constant = yPos
}

// Detach the views in oscFloatingTopView manually on macOS 11 only; as it will cause freeze
if isMacOS11 && oscPosition == .floating {
guard let maxWidth = [fragVolumeView, fragToolbarView].compactMap({ $0?.frame.width }).max() else {
return
}

// window - 10 - controlBarFloating
// controlBarFloating - 12 - oscFloatingTopView
let margin: CGFloat = (10 + 12) * 2
let hide = (window.frame.width
- fragControlView.frame.width
- maxWidth*2
- margin) < 0

let views = oscFloatingTopView.views
if hide {
if views.contains(fragVolumeView)
&& views.contains(fragToolbarView) {
oscFloatingTopView.removeView(fragVolumeView)
oscFloatingTopView.removeView(fragToolbarView)
}
} else {
if !views.contains(fragVolumeView)
&& !views.contains(fragToolbarView) {
oscFloatingTopView.addView(fragVolumeView, in: .leading)
oscFloatingTopView.addView(fragToolbarView, in: .trailing)
}
}
}
}

// resize framebuffer in videoView after resizing.
Expand Down

0 comments on commit 39be32d

Please sign in to comment.