Skip to content

Commit

Permalink
Reset scroll position on preview when switching notes.
Browse files Browse the repository at this point in the history
  • Loading branch information
ttscoff committed Jan 15, 2011
1 parent 1f07cc0 commit 766b2e9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
3 changes: 3 additions & 0 deletions PreviewController.h
Expand Up @@ -10,6 +10,7 @@
#import "MAAttachedWindow.h"

@class AppController;
@class NoteObject;

@interface PreviewController : NSWindowController
{
Expand All @@ -32,6 +33,8 @@
NSString *shareURL;
NSString *cssString;
NSString *htmlString;

NoteObject *lastNote;
}

@property (assign) BOOL isPreviewOutdated;
Expand Down
13 changes: 9 additions & 4 deletions PreviewController.m
Expand Up @@ -74,8 +74,10 @@ -(id)init

-(void)awakeFromNib
{
AppController *app = [[NSApplication sharedApplication] delegate];;
cssString = [[[self class] css] retain];
htmlString = [[[self class] html] retain];
lastNote = [app selectedNoteObject];
}

- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener {
Expand Down Expand Up @@ -189,11 +191,14 @@ -(void)preview:(id)object
[outputString replaceOccurrencesOfString:@"{%title%}" withString:noteTitle options:0 range:NSMakeRange(0, [outputString length])];
[outputString replaceOccurrencesOfString:@"{%content%}" withString:processedString options:0 range:NSMakeRange(0, [outputString length])];
[outputString replaceOccurrencesOfString:@"{%style%}" withString:cssString options:0 range:NSMakeRange(0, [outputString length])];
NSString *restoreScrollPosition = [NSString stringWithFormat:@"<script>window.onload = function(){var div = document.getElementById('contentdiv'),oldscroll = %@;div.scrollTop = oldscroll;}</script></body>",lastScrollPosition];
[outputString replaceOccurrencesOfString:@"</body>" withString:restoreScrollPosition options:0 range:NSMakeRange(0, [outputString length])];
if (lastNote == [app selectedNoteObject]) {
NSString *restoreScrollPosition = [NSString stringWithFormat:@"<script>window.onload = function(){var div = document.getElementById('contentdiv'),oldscroll = %@;div.scrollTop = oldscroll;}</script></body>",lastScrollPosition];
[outputString replaceOccurrencesOfString:@"</body>" withString:restoreScrollPosition options:0 range:NSMakeRange(0, [outputString length])];
} else {
lastNote = [app selectedNoteObject];
}
[[preview mainFrame] loadHTMLString:outputString baseURL:nil];
[sourceView replaceCharactersInRange:NSMakeRange(0, [[sourceView string] length]) withString:processedString];
[[preview windowScriptObject] evaluateWebScript:restoreScrollPosition];
self.isPreviewOutdated = NO;
}

Expand Down Expand Up @@ -452,7 +457,7 @@ - (IBAction)openShareURL:(id)sender
- (void)dealloc {
[htmlString release];
[cssString release];

[lastNote release];
[super dealloc];
}
@end

0 comments on commit 766b2e9

Please sign in to comment.