blob: 5c92958595e3e11cbfeef9dd87c49621fbf70dd5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
//
// PlaylistTableRowView.m
// VKPC
//
// Created by Eugene on 12/2/13.
// Copyright (c) 2013-2014 Eugene Z. All rights reserved.
// TODO иногда не реагирует на нажатия; найти и исправить
// TODO проблемы с ретиной! исправить
// TODO выяснить, актуальны ли предыдущие TODO
#import "PlaylistTableRowView.h"
@implementation PlaylistTableRowView {
BOOL _trackSelected;
BOOL _everSelected;
NSTrackingArea *trackingArea;
}
//@dynamic _mouseInside;
- (id)initWithFrame:(NSRect)frameRect {
if (self = [super initWithFrame:frameRect]) {
_everSelected = NO;
}
return self;
}
- (void)setMouseInside:(BOOL)mouseInside {
if (_mouseInside != mouseInside) {
_mouseInside = mouseInside;
if (_trackSelected) {
[self setNeedsDisplay:YES];
if (!_mouseInside) {
_trackSelected = NO;
}
}
}
}
- (void)ensureTrackingArea {
if (trackingArea == nil) {
trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect options:NSTrackingInVisibleRect | NSTrackingActiveAlways | NSTrackingMouseEnteredAndExited owner:self userInfo:nil];
}
}
- (void)updateTrackingAreas {
[super updateTrackingAreas];
[self ensureTrackingArea];
if (![[self trackingAreas] containsObject:trackingArea]) {
[self addTrackingArea:trackingArea];
}
}
- (void)mouseEntered:(NSEvent *)theEvent {
self.mouseInside = YES;
}
- (void)mouseExited:(NSEvent *)theEvent {
self.mouseInside = NO;
_trackSelected = NO;
}
- (BOOL)isFlipped {
return NO;
}
- (BOOL)allowsVibrancy {
return YES;
}
//- (BOOL)wantsLayer {
// return YES;
//}
// TODO what is it
- (void)setSelected:(BOOL)selected {
// Do nothing
}
- (void)setTrackSelected:(BOOL)is {
if (_trackSelected != is) {
_everSelected = YES;
_trackSelected = is;
[self setNeedsDisplay:YES];
}
}
- (void)drawBackgroundInRect:(NSRect)dirtyRect {
[super drawBackgroundInRect:dirtyRect];
// return;
NSImage *img = VKPCGetImagesDictionary()[_trackSelected && _everSelected && _mouseInside ? VKPCImageCellPressedBg : VKPCImageCellBg];
// NSImage *img = VKPCGetImagesDictionary()[VKPCImageCellBg];
[img drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];
// NSLog(@"rowview draw");
}
- (void)drawSelectionInRect:(NSRect)dirtyRect {
[super drawSelectionInRect:dirtyRect];
}
- (NSBackgroundStyle)interiorBackgroundStyle {
return NSBackgroundStyleLight;
}
@end
|