summaryrefslogtreecommitdiff
path: root/frontends/cocoa/URLFieldCell.m
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/cocoa/URLFieldCell.m')
-rw-r--r--frontends/cocoa/URLFieldCell.m249
1 files changed, 135 insertions, 114 deletions
diff --git a/frontends/cocoa/URLFieldCell.m b/frontends/cocoa/URLFieldCell.m
index e08ba3efc..6c36f17c4 100644
--- a/frontends/cocoa/URLFieldCell.m
+++ b/frontends/cocoa/URLFieldCell.m
@@ -25,176 +25,197 @@
@property (readonly, retain, nonatomic) NSButtonCell *refreshCell;
-- (NSRect) buttonFrame: (NSRect) cellFrame;
-- (NSRect) urlFrame: (NSRect) cellFrame;
-- (NSRect) iconFrame: (NSRect) cellFrame;
+- (NSRect)buttonFrame:(NSRect)cellFrame;
+- (NSRect)urlFrame:(NSRect)cellFrame;
+- (NSRect)iconFrame:(NSRect)cellFrame;
@end
-
@implementation URLFieldCell
@synthesize favicon;
-- (void) setFavicon: (NSImage *)newIcon
+- (void)setFavicon:(NSImage *)newIcon
{
- if (favicon != newIcon) {
- favicon = newIcon ;
- [[self controlView] setNeedsDisplay: YES];
- }
+ if (favicon != newIcon) {
+ favicon = newIcon;
+ [[self controlView] setNeedsDisplay:YES];
+ }
}
#define BUTTON_SIZE 32
#define PADDING 2
-- (void) drawInteriorWithFrame: (NSRect)cellFrame inView: (NSView *)controlView
+- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
- [favicon drawInRect: [self iconFrame: cellFrame] fromRect: NSZeroRect
- operation: NSCompositingOperationSourceOver fraction: 1.0];
+ [favicon drawInRect:[self iconFrame:cellFrame]
+ fromRect:NSZeroRect
+ operation:NSCompositingOperationSourceOver
+ fraction:1.0];
- [super drawInteriorWithFrame: [self urlFrame: cellFrame] inView: controlView];
+ [super drawInteriorWithFrame:[self urlFrame:cellFrame] inView:controlView];
- [[self refreshCell] drawInteriorWithFrame: [self buttonFrame: cellFrame]
- inView: controlView];
+ [[self refreshCell] drawInteriorWithFrame:[self buttonFrame:cellFrame]
+ inView:controlView];
}
-- (void) selectWithFrame: (NSRect)aRect inView: (NSView *)controlView editor: (NSText *)textObj
- delegate: (id)anObject start: (NSInteger)selStart length: (NSInteger)selLength
+- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj
+ delegate:(id)anObject
+ start:(NSInteger)selStart
+ length:(NSInteger)selLength
{
- const NSRect textFrame = [self urlFrame: aRect];
- [super selectWithFrame: textFrame inView: controlView editor: textObj
- delegate: anObject start: selStart length: selLength];
+ const NSRect textFrame = [self urlFrame:aRect];
+ [super selectWithFrame:textFrame
+ inView:controlView
+ editor:textObj
+ delegate:anObject
+ start:selStart
+ length:selLength];
}
-- (void) editWithFrame: (NSRect)aRect inView: (NSView *)controlView editor: (NSText *)textObj
- delegate: (id)anObject event: (NSEvent *)theEvent
+- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj
+ delegate:(id)anObject
+ event:(NSEvent *)theEvent
{
- const NSRect textFrame = [self urlFrame: aRect];
- [super editWithFrame: textFrame inView: controlView editor: textObj
- delegate: anObject event: theEvent];
+ const NSRect textFrame = [self urlFrame:aRect];
+ [super editWithFrame:textFrame
+ inView:controlView
+ editor:textObj
+ delegate:anObject
+ event:theEvent];
}
-- (void) startDragURLAt: (NSPoint) point inView: (NSView *) view
+- (void)startDragURLAt:(NSPoint)point inView:(NSView *)view
{
- NSString *url = [self stringValue];
- NSString *title = url;
- nsurl *nsurl;
-
- if (nsurl_create( [url UTF8String] , &nsurl ) != NSERROR_OK)
- return;
-
- const struct url_data *data = urldb_get_url_data( nsurl );
-
- nsurl_unref(nsurl);
-
- if (data && data->title) title = [NSString stringWithUTF8String: data->title];
-
- NSPasteboard *pb = [NSPasteboard pasteboardWithName: NSDragPboard];
- [pb declareTypes: [NSArray arrayWithObjects: NSStringPboardType, NSURLPboardType,
- @"public.url", @"public.url-name", nil] owner: nil];
- [pb setString: url forType: NSStringPboardType];
- [pb setString: url forType: @"public.url"];
- [pb setString: title forType: @"public.url-name"];
- [[NSURL URLWithString: url] writeToPasteboard: pb];
-
- NSRect urlBounds = NSZeroRect;
- urlBounds.size = [title sizeWithAttributes: nil];
- urlBounds.size.width += urlBounds.size.height + 2;
-
- NSImage *image = [[NSImage alloc] initWithSize: urlBounds.size];
-
- [image lockFocus];
- [favicon drawInRect: NSMakeRect( urlBounds.origin.x, urlBounds.origin.y, urlBounds.size.height, urlBounds.size.height )
- fromRect: NSZeroRect operation: NSCompositingOperationCopy fraction: 1.0];
- urlBounds.origin.x += urlBounds.size.height + 2;
- [title drawInRect: urlBounds withAttributes: nil];
- [image unlockFocus];
-
- point.x -= urlBounds.size.height / 2;
- point.y += urlBounds.size.height / 2;
-
- [view dragImage: image at: point offset: NSZeroSize event: [NSApp currentEvent]
- pasteboard: pb source: self slideBack: YES];
+ NSString *url = [self stringValue];
+ NSString *title = url;
+ nsurl *nsurl;
+
+ if (nsurl_create([url UTF8String], &nsurl) != NSERROR_OK)
+ return;
+
+ const struct url_data *data = urldb_get_url_data(nsurl);
+
+ nsurl_unref(nsurl);
+
+ if (data && data->title)
+ title = [NSString stringWithUTF8String:data->title];
+
+ NSPasteboard *pb = [NSPasteboard pasteboardWithName:NSDragPboard];
+ [pb declareTypes:[NSArray arrayWithObjects:NSStringPboardType, NSURLPboardType,
+ @"public.url", @"public.url-name", nil]
+ owner:nil];
+ [pb setString:url forType:NSStringPboardType];
+ [pb setString:url forType:@"public.url"];
+ [pb setString:title forType:@"public.url-name"];
+ [[NSURL URLWithString:url] writeToPasteboard:pb];
+
+ NSRect urlBounds = NSZeroRect;
+ urlBounds.size = [title sizeWithAttributes:nil];
+ urlBounds.size.width += urlBounds.size.height + 2;
+
+ NSImage *image = [[NSImage alloc] initWithSize:urlBounds.size];
+
+ [image lockFocus];
+ [favicon drawInRect:NSMakeRect(urlBounds.origin.x, urlBounds.origin.y, urlBounds.size.height, urlBounds.size.height)
+ fromRect:NSZeroRect
+ operation:NSCompositingOperationCopy
+ fraction:1.0];
+ urlBounds.origin.x += urlBounds.size.height + 2;
+ [title drawInRect:urlBounds withAttributes:nil];
+ [image unlockFocus];
+
+ point.x -= urlBounds.size.height / 2;
+ point.y += urlBounds.size.height / 2;
+
+ [view dragImage:image
+ at:point
+ offset:NSZeroSize
+ event:[NSApp currentEvent]
+ pasteboard:pb
+ source:self
+ slideBack:YES];
}
- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal
{
- return NSDragOperationCopy | NSDragOperationGeneric;
+ return NSDragOperationCopy | NSDragOperationGeneric;
}
-- (BOOL) trackMouse: (NSEvent *)theEvent inRect: (NSRect)cellFrame ofView: (NSView *)controlView untilMouseUp: (BOOL)flag
+- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)flag
{
- const NSPoint point = [controlView convertPoint: [theEvent locationInWindow] fromView: nil];
- const NSRect buttonRect = [self buttonFrame: cellFrame];
- if (NSPointInRect( point, [self iconFrame: cellFrame] )) {
- [self startDragURLAt: point inView: controlView];
- return NO;
- } else if (NSPointInRect( point, buttonRect )) {
- return [[self refreshCell] trackMouse: theEvent inRect: buttonRect
- ofView: controlView untilMouseUp: flag];
- } else {
- cellFrame.size.width -= BUTTON_SIZE + PADDING;
- return [super trackMouse: theEvent inRect: cellFrame ofView: controlView untilMouseUp: YES];
- }
+ const NSPoint point = [controlView convertPoint:[theEvent locationInWindow] fromView:nil];
+ const NSRect buttonRect = [self buttonFrame:cellFrame];
+ if (NSPointInRect(point, [self iconFrame:cellFrame])) {
+ [self startDragURLAt:point inView:controlView];
+ return NO;
+ } else if (NSPointInRect(point, buttonRect)) {
+ return [[self refreshCell] trackMouse:theEvent
+ inRect:buttonRect
+ ofView:controlView
+ untilMouseUp:flag];
+ } else {
+ cellFrame.size.width -= BUTTON_SIZE + PADDING;
+ return [super trackMouse:theEvent inRect:cellFrame ofView:controlView untilMouseUp:YES];
+ }
}
-
-- (NSRect) buttonFrame: (NSRect) cellFrame
+- (NSRect)buttonFrame:(NSRect)cellFrame
{
- NSRect buttonRect = cellFrame;
- buttonRect.origin.x = NSMaxX( cellFrame ) - BUTTON_SIZE;
- buttonRect.size.width = BUTTON_SIZE;
- return buttonRect;
+ NSRect buttonRect = cellFrame;
+ buttonRect.origin.x = NSMaxX(cellFrame) - BUTTON_SIZE;
+ buttonRect.size.width = BUTTON_SIZE;
+ return buttonRect;
}
-- (NSRect) urlFrame: (NSRect) cellFrame
+- (NSRect)urlFrame:(NSRect)cellFrame
{
- NSRect textFrame = cellFrame;
- textFrame.origin.x += cellFrame.size.height;
- textFrame.size.width -= cellFrame.size.height + BUTTON_SIZE + PADDING;
- return textFrame;
+ NSRect textFrame = cellFrame;
+ textFrame.origin.x += cellFrame.size.height;
+ textFrame.size.width -= cellFrame.size.height + BUTTON_SIZE + PADDING;
+ return textFrame;
}
-- (NSRect) iconFrame: (NSRect)cellFrame
+- (NSRect)iconFrame:(NSRect)cellFrame
{
- NSRect iconFrame = {
- .origin = {
- .x = cellFrame.origin.x + PADDING,
- .y = cellFrame.origin.y,
- },
- .size = NSMakeSize( NSHeight( cellFrame ), NSHeight( cellFrame ) )
- };
- return NSInsetRect( iconFrame, 2 * PADDING, 2 * PADDING );
+ NSRect iconFrame = {
+ .origin = {
+ .x = cellFrame.origin.x + PADDING,
+ .y = cellFrame.origin.y,
+ },
+ .size = NSMakeSize(NSHeight(cellFrame), NSHeight(cellFrame))
+ };
+ return NSInsetRect(iconFrame, 2 * PADDING, 2 * PADDING);
}
-- (NSButtonCell *) refreshCell
+- (NSButtonCell *)refreshCell
{
- if (nil == refreshCell) {
- refreshCell = [[NSButtonCell alloc] initImageCell: [NSImage imageNamed: NSImageNameRefreshTemplate]];
- [refreshCell setButtonType: NSMomentaryPushInButton];
- [refreshCell setBordered: NO];
- }
- return refreshCell;
+ if (nil == refreshCell) {
+ refreshCell = [[NSButtonCell alloc] initImageCell:[NSImage imageNamed:NSImageNameRefreshTemplate]];
+ [refreshCell setButtonType:NSMomentaryPushInButton];
+ [refreshCell setBordered:NO];
+ }
+ return refreshCell;
}
-- (void) setRefreshTarget: (id) newTarget
+- (void)setRefreshTarget:(id)newTarget
{
- [[self refreshCell] setTarget: newTarget];
+ [[self refreshCell] setTarget:newTarget];
}
-- (id) refreshTarget
+- (id)refreshTarget
{
- return [[self refreshCell] target];
+ return [[self refreshCell] target];
}
-- (void) setRefreshAction: (SEL) newAction
+- (void)setRefreshAction:(SEL)newAction
{
- [[self refreshCell] setAction: newAction];
+ [[self refreshCell] setAction:newAction];
}
-- (SEL) refreshAction
+- (SEL)refreshAction
{
- return [[self refreshCell] action];
+ return [[self refreshCell] action];
}
@end