         }
     }
     
+    internal func shiftKeyDown(_ note: Notification) {
+        if let pcv : PlayItemCornerView = playitemTableView.cornerView as? PlayItemCornerView {
+            DispatchQueue.main.async {
+                pcv.setNeedsDisplay(pcv.bounds)
+            }
+        }
+    }
+
     override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
         let oldValue = change?[NSKeyValueChangeKey(rawValue: "old")]
         let newValue = change?[NSKeyValueChangeKey(rawValue: "new")]

    
    //  Start or forget observing any changes
    internal func setObserving(_ state: Bool) {
        self.observe(self, keyArray: [k.Playlists], observing: state)
        for playlist in playlists {
            self.observe(playlist, keyArray: listIvars, observing: state)

        playitemTableView.beginUpdates()

        //  True - prune duplicates, false resequence
        switch shiftKeyDown {
        case true:
            var seen = [String:PlayItem]()
            for (row,item) in (playitemArrayController.arrangedObjects as! [PlayItem]).enumerated().reversed() {
