]> git.sesse.net Git - vlc/commitdiff
macosx: Fix drawing issues with podcast controls and dropzone
authorDavid Fuhrmann <dfuhrmann@videolan.org>
Sat, 18 Oct 2014 07:05:09 +0000 (09:05 +0200)
committerDavid Fuhrmann <dfuhrmann@videolan.org>
Sat, 18 Oct 2014 07:15:01 +0000 (09:15 +0200)
- Remove black lines below podcast controls
- fix uncentered dropzone when starting native fullscreen, by slightly
  increasing the min height
- fix disappearing or uncentered dropzone when changing between
  normal and minimum view quickly
- consolidate dropzone and podcast sizings in interface builder

extras/package/macosx/Resources/English.lproj/MainWindow.xib
modules/gui/macosx/MainWindow.m

index cfcd6650d396b92bf1c58380eed458d4b44ecb5e..171a0d52131cb8aa9c5351e80dfa31f9a99861d2 100644 (file)
     </object>
     <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
       <bool key="EncodedWithXMLCoder">YES</bool>
-      <integer value="5260"/>
+      <integer value="5305"/>
       <integer value="5605"/>
-      <integer value="5608"/>
+      <integer value="4756"/>
+      <integer value="5265"/>
+      <integer value="5260"/>
       <integer value="4850"/>
     </object>
     <object class="NSArray" key="IBDocument.PluginDependencies">
                     <reference key="NSSuperview" ref="83235998"/>
                   </object>
                 </object>
-                <string key="NSFrame">{{50, 35}, {300, 230}}</string>
+                <string key="NSFrame">{{10, 10}, {300, 230}}</string>
                 <reference key="NSSuperview" ref="108902636"/>
                 <string key="NSOffsets">{0, 0}</string>
                 <object class="NSTextFieldCell" key="NSTitleCell">
                 <bool key="NSFullyTransparent">YES</bool>
               </object>
             </object>
-            <string key="NSFrameSize">{400, 300}</string>
+            <string key="NSFrameSize">{320, 250}</string>
             <reference key="NSSuperview" ref="256817023"/>
             <string key="NSReuseIdentifierKey">_NS:1109</string>
             <string key="NSClassName">VLCDragDropView</string>
                 <string>NeXT TIFF v4.0 pasteboard type</string>
               </object>
             </object>
-            <string key="NSFrameSize">{400, 300}</string>
+            <string key="NSFrameSize">{320, 250}</string>
             <reference key="NSSuperview" ref="256817023"/>
             <bool key="NSEnabled">YES</bool>
             <object class="NSImageCell" key="NSCell" id="1064809555">
             <bool key="NSEditable">YES</bool>
           </object>
         </object>
-        <string key="NSFrameSize">{400, 300}</string>
+        <string key="NSFrameSize">{320, 250}</string>
         <reference key="NSSuperview"/>
         <object class="CIDarkenBlendMode" key="NSViewCompositeFilter">
           <bool key="CIEnabled">YES</bool>
           <object class="NSButton" id="545072553">
             <reference key="NSNextResponder" ref="115834448"/>
             <int key="NSvFlags">265</int>
-            <string key="NSFrame">{{298, 1}, {101, 17}}</string>
+            <string key="NSFrame">{{298, -1}, {101, 17}}</string>
             <reference key="NSSuperview" ref="115834448"/>
             <string key="NSReuseIdentifierKey">_NS:125</string>
             <bool key="NSEnabled">YES</bool>
           <object class="NSButton" id="882473348">
             <reference key="NSNextResponder" ref="115834448"/>
             <int key="NSvFlags">268</int>
-            <string key="NSFrame">{{5, 1}, {101, 17}}</string>
+            <string key="NSFrame">{{5, -1}, {101, 17}}</string>
             <reference key="NSSuperview" ref="115834448"/>
             <string key="NSReuseIdentifierKey">_NS:125</string>
             <bool key="NSEnabled">YES</bool>
           </object>
           <object class="NSImageView" id="157740914">
             <reference key="NSNextResponder" ref="115834448"/>
-            <int key="NSvFlags">266</int>
+            <int key="NSvFlags">314</int>
             <object class="NSMutableSet" key="NSDragTypes">
               <bool key="EncodedWithXMLCoder">YES</bool>
               <object class="NSArray" key="set.sortedObjects">
                 <string>NeXT TIFF v4.0 pasteboard type</string>
               </object>
             </object>
-            <string key="NSFrame">{{0, -2}, {403, 23}}</string>
+            <string key="NSFrame">{{0, -6}, {403, 25}}</string>
             <reference key="NSSuperview" ref="115834448"/>
             <bool key="NSEnabled">YES</bool>
             <object class="NSImageCell" key="NSCell" id="816225529">
             <bool key="NSEditable">YES</bool>
           </object>
         </object>
-        <string key="NSFrameSize">{403, 21}</string>
+        <string key="NSFrameSize">{403, 19}</string>
         <reference key="NSSuperview"/>
         <string key="NSReuseIdentifierKey">_NS:1109</string>
         <string key="NSClassName">NSView</string>
         <string key="NSWindowContentMaxSize">{612, 159}</string>
         <string key="NSWindowContentMinSize">{612, 159}</string>
         <object class="NSView" key="NSWindowView" id="383192078">
-          <nil key="NSNextResponder"/>
+          <reference key="NSNextResponder"/>
           <int key="NSvFlags">256</int>
           <object class="NSMutableArray" key="NSSubviews">
             <bool key="EncodedWithXMLCoder">YES</bool>
             </object>
           </object>
           <string key="NSFrameSize">{612, 159}</string>
+          <reference key="NSSuperview"/>
         </object>
         <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
         <string key="NSMinSize">{612, 181}</string>
         <string key="NSWindowContentMaxSize">{612, 159}</string>
         <string key="NSWindowContentMinSize">{612, 159}</string>
         <object class="NSView" key="NSWindowView" id="306630988">
-          <nil key="NSNextResponder"/>
+          <reference key="NSNextResponder"/>
           <int key="NSvFlags">256</int>
           <object class="NSMutableArray" key="NSSubviews">
             <bool key="EncodedWithXMLCoder">YES</bool>
             </object>
           </object>
           <string key="NSFrameSize">{612, 159}</string>
+          <reference key="NSSuperview"/>
         </object>
         <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
         <string key="NSMinSize">{612, 181}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <string>{{566, 376}, {400, 300}}</string>
+          <string>{{566, 426}, {320, 250}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <object class="NSAffineTransform"/>
           <string>VLCDropDisabledImageView</string>
           <object class="NSAffineTransform">
             <bytes key="NSTransformStruct">AUNbAABBIAAAA</bytes>
           </object>
-          <string>{{565, 246}, {403, 21}}</string>
+          <string>{{565, 248}, {403, 19}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <object class="NSAffineTransform">
index aa7a04515bba2807b23b692360a70106e326ff63..6b932b9c6aea009ac99fbfd9d42ae89eb2edf7e4 100644 (file)
@@ -54,6 +54,7 @@
 - (void)hidePodcastControls;
 @end
 
+static const float f_min_window_height = 307.;
 
 @implementation VLCMainWindow
 
@@ -201,9 +202,9 @@ static VLCMainWindow *_o_sharedInstance = nil;
     [self setAcceptsMouseMovedEvents: YES];
     // Set that here as IB seems to be buggy
     if (b_dark_interface)
-        [self setContentMinSize:NSMakeSize(604., 288. + [o_titlebar_view frame].size.height)];
+        [self setContentMinSize:NSMakeSize(604., f_min_window_height + [o_titlebar_view frame].size.height)];
     else
-        [self setContentMinSize:NSMakeSize(604., 288.)];
+        [self setContentMinSize:NSMakeSize(604., f_min_window_height)];
 
     [self setTitle: _NS("VLC media player")];
 
@@ -441,28 +442,30 @@ static VLCMainWindow *_o_sharedInstance = nil;
 - (void)resizePlaylistAfterCollapse
 {
     // no animation here since we might be in the middle of another resize animation
+    NSRect rightSplitRect = [o_right_split_view frame];
+
     NSRect plrect;
-    plrect = [o_playlist_table frame];
-    plrect.size.height = [o_split_view frame].size.height - 20.0; // actual pl top bar height, which differs from its frame
-    [o_playlist_table setFrame: plrect];
-    [o_playlist_table setNeedsDisplay: YES];
+    plrect.size.height = rightSplitRect.size.height - 20.0; // actual pl top bar height, which differs from its frame
+    plrect.size.width = rightSplitRect.size.width;
+    plrect.origin.x = plrect.origin.y = 0.;
 
-    NSRect rightSplitRect;
-    rightSplitRect = [o_right_split_view frame];
-    plrect = [o_dropzone_box frame];
-    plrect.origin.x = (rightSplitRect.size.width - plrect.size.width) / 2;
-    plrect.origin.y = (rightSplitRect.size.height - plrect.size.height) / 2;
-    [o_dropzone_view setFrame: [o_playlist_table frame]];
-    [o_dropzone_box setFrame: plrect];
+    NSRect dropzoneboxRect = [o_dropzone_box frame];
+    dropzoneboxRect.origin.x = (plrect.size.width - dropzoneboxRect.size.width) / 2;
+    dropzoneboxRect.origin.y = (plrect.size.height - dropzoneboxRect.size.height) / 2;
+
+    [o_playlist_table setFrame: plrect];
+    [o_dropzone_view setFrame: plrect];
+    [o_dropzone_box setFrame: dropzoneboxRect];
     [o_dropzone_view setNeedsDisplay: YES];
+    [o_playlist_table setNeedsDisplay: YES];
 }
 
 - (void)makeSplitViewVisible
 {
     if (b_dark_interface)
-        [self setContentMinSize: NSMakeSize(604., 288. + [o_titlebar_view frame].size.height)];
+        [self setContentMinSize: NSMakeSize(604., f_min_window_height + [o_titlebar_view frame].size.height)];
     else
-        [self setContentMinSize: NSMakeSize(604., 288.)];
+        [self setContentMinSize: NSMakeSize(604., f_min_window_height)];
 
     NSRect old_frame = [self frame];
     CGFloat newHeight = [self minSize].height;
@@ -630,6 +633,9 @@ static VLCMainWindow *_o_sharedInstance = nil;
 
 - (void)hideSplitView:(BOOL)b_with_resize
 {
+    // cancel pending pl resizes, in case of fast toggle between both modes
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(resizePlaylistAfterCollapse) object:nil];
+
     if (b_with_resize) {
         NSRect winrect = [self frame];
         f_lastSplitViewHeight = [o_split_view frame].size.height;
@@ -638,7 +644,6 @@ static VLCMainWindow *_o_sharedInstance = nil;
         [self setFrame: winrect display: YES animate: YES];
     }
 
-    [self performSelector:@selector(hideDropZone) withObject:nil afterDelay:0.1];
     if (b_dark_interface) {
         [self setContentMinSize: NSMakeSize(604., [o_controls_bar height] + [o_titlebar_view frame].size.height)];
         [self setContentMaxSize: NSMakeSize(FLT_MAX, [o_controls_bar height] + [o_titlebar_view frame].size.height)];
@@ -654,9 +659,9 @@ static VLCMainWindow *_o_sharedInstance = nil;
 {
     [self updateWindow];
     if (b_dark_interface)
-        [self setContentMinSize:NSMakeSize(604., 288. + [o_titlebar_view frame].size.height)];
+        [self setContentMinSize:NSMakeSize(604., f_min_window_height + [o_titlebar_view frame].size.height)];
     else
-        [self setContentMinSize:NSMakeSize(604., 288.)];
+        [self setContentMinSize:NSMakeSize(604., f_min_window_height)];
     [self setContentMaxSize: NSMakeSize(FLT_MAX, FLT_MAX)];
 
     if (b_with_resize) {
@@ -667,6 +672,8 @@ static VLCMainWindow *_o_sharedInstance = nil;
         [self setFrame: winrect display: YES animate: YES];
     }
 
+    // cancel pending pl resizes, in case of fast toggle between both modes
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(resizePlaylistAfterCollapse) object:nil];
     [self performSelector:@selector(resizePlaylistAfterCollapse) withObject: nil afterDelay:0.75];
 
     b_splitview_removed = NO;