From d21447d096a320a08b3efb2b8768fad0dcdcfd64 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 5 May 2016 22:28:51 +0100 Subject: move frontends into sub directory --- frontends/cocoa/LocalHistoryController.m | 119 +++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 frontends/cocoa/LocalHistoryController.m (limited to 'frontends/cocoa/LocalHistoryController.m') diff --git a/frontends/cocoa/LocalHistoryController.m b/frontends/cocoa/LocalHistoryController.m new file mode 100644 index 000000000..b3992b614 --- /dev/null +++ b/frontends/cocoa/LocalHistoryController.m @@ -0,0 +1,119 @@ +/* + * Copyright 2011 Sven Weidauer + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#import "cocoa/LocalHistoryController.h" + +#import "cocoa/BrowserView.h" +#import "cocoa/HistoryView.h" +#import "cocoa/ArrowWindow.h" + +@implementation LocalHistoryController + +@synthesize browser; +@synthesize history; + +- initWithBrowser: (BrowserView *) bw; +{ + if ((self = [super initWithWindowNibName: @"LocalHistoryPanel"]) == nil) return nil; + + browser = bw; + + return self; +} + +- (void) attachToView: (NSView *) view; +{ + NSDisableScreenUpdates(); + + ArrowWindow *box = (ArrowWindow *)[self window]; + + [box setContentSize: [history size]]; + [box setArrowPosition: 50]; + [history updateHistory]; + [box attachToView: view]; + + NSRect frame = [box frame]; + NSRect screenFrame = [[box screen] visibleFrame]; + + const CGFloat arrowSize = [box arrowSize]; + frame.origin.x += arrowSize; + frame.origin.y += arrowSize; + frame.size.width -= 2 * arrowSize; + frame.size.height -= 2 * arrowSize; + + if (NSMinY( frame ) < NSMinY( screenFrame )) { + const CGFloat delta = NSMinY( screenFrame ) - NSMinY( frame ); + frame.size.height -= delta; + frame.origin.y += delta; + } + + CGFloat arrowPositionChange = 50; + if (NSMaxX( frame ) > NSMaxX( screenFrame )) { + const CGFloat delta = NSMaxX( frame ) - NSMaxX( screenFrame ); + arrowPositionChange += delta; + frame.origin.x -= delta; + } + + if (NSMinX( frame ) < NSMinX( screenFrame )) { + const CGFloat delta = NSMinX( screenFrame ) - NSMinX( frame ); + arrowPositionChange -= delta; + frame.origin.x += delta; + frame.size.width -= delta; + } + + frame.origin.x -= arrowSize; + frame.origin.y -= arrowSize; + frame.size.width += 2 * arrowSize; + frame.size.height += 2 * arrowSize; + + [box setArrowPosition: arrowPositionChange]; + [box setFrame: frame display: YES]; + + NSEnableScreenUpdates(); +} + +- (void) detach; +{ + [(ArrowWindow *)[self window] detach]; +} + +- (void) windowDidLoad; +{ + [history setBrowser: browser]; +} + +- (void) redraw; +{ + [history setNeedsDisplay: YES]; +} + +- (void) keyDown: (NSEvent *)theEvent; +{ + unichar key = [[theEvent characters] characterAtIndex: 0]; + switch (key) { + case 27: + [browser setHistoryVisible: NO]; + break; + + default: + NSBeep(); + break; + }; +} + +@end -- cgit v1.2.3