From 53f258bb6fa1371074d3b1cafb8a61749eda1797 Mon Sep 17 00:00:00 2001 From: Kyle Lippincott Date: Tue, 24 Jun 2008 20:28:40 +0200 Subject: [PATCH] Add proxy icon support --- src/MacVim/MMBackend.h | 1 + src/MacVim/MMBackend.m | 12 ++++++++++++ src/MacVim/MMVimController.m | 14 ++++++++++++++ src/MacVim/MMWindowController.h | 1 + src/MacVim/MMWindowController.m | 6 ++++++ src/MacVim/MacVim.h | 1 + src/MacVim/MacVim.m | 1 + src/MacVim/gui_macvim.m | 8 +++++++- 8 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/MacVim/MMBackend.h b/src/MacVim/MMBackend.h index f518b25ab1..96e7688029 100644 --- a/src/MacVim/MMBackend.h +++ b/src/MacVim/MMBackend.h @@ -83,6 +83,7 @@ - (void)showTabBar:(BOOL)enable; - (void)setRows:(int)rows columns:(int)cols; - (void)setWindowTitle:(char *)title; +- (void)setDocumentFilename:(char *)filename; - (char *)browseForFileInDirectory:(char *)dir title:(char *)title saving:(int)saving; - (int)presentDialogWithType:(int)type title:(char *)title message:(char *)msg diff --git a/src/MacVim/MMBackend.m b/src/MacVim/MMBackend.m index 21c84ed55b..b385357dc9 100644 --- a/src/MacVim/MMBackend.m +++ b/src/MacVim/MMBackend.m @@ -641,6 +641,18 @@ static NSString *MMSymlinkWarningString = [self queueMessage:SetWindowTitleMsgID data:data]; } +- (void)setDocumentFilename:(char *)filename +{ + NSMutableData *data = [NSMutableData data]; + int len = filename ? strlen(filename) : 0; + + [data appendBytes:&len length:sizeof(int)]; + if (len > 0) + [data appendBytes:filename length:len]; + + [self queueMessage:SetDocumentFilenameMsgID data:data]; +} + - (char *)browseForFileInDirectory:(char *)dir title:(char *)title saving:(int)saving { diff --git a/src/MacVim/MMVimController.m b/src/MacVim/MMVimController.m index 6a861f0378..b053a567bd 100644 --- a/src/MacVim/MMVimController.m +++ b/src/MacVim/MMVimController.m @@ -685,6 +685,20 @@ static BOOL isUnsafeMessage(int msgid); [windowController setTitle:string]; [string release]; + } else if (SetDocumentFilenameMsgID == msgid) { + const void *bytes = [data bytes]; + int len = *((int*)bytes); bytes += sizeof(int); + + if (len > 0) { + NSString *filename = [[NSString alloc] initWithBytes:(void*)bytes + length:len encoding:NSUTF8StringEncoding]; + + [windowController setDocumentFilename:filename]; + + [filename release]; + } else { + [windowController setDocumentFilename:@""]; + } } else if (AddMenuMsgID == msgid) { NSDictionary *attrs = [NSDictionary dictionaryWithData:data]; [self addMenuWithDescriptor:[attrs objectForKey:@"descriptor"] diff --git a/src/MacVim/MMWindowController.h b/src/MacVim/MMWindowController.h index 24b7e7a3d7..31fa81dcc4 100644 --- a/src/MacVim/MMWindowController.h +++ b/src/MacVim/MMWindowController.h @@ -40,6 +40,7 @@ - (void)selectTabWithIndex:(int)idx; - (void)setTextDimensionsWithRows:(int)rows columns:(int)cols live:(BOOL)live; - (void)setTitle:(NSString *)title; +- (void)setDocumentFilename:(NSString *)filename; - (void)setToolbar:(NSToolbar *)toolbar; - (void)createScrollbarWithIdentifier:(long)ident type:(int)type; - (BOOL)destroyScrollbarWithIdentifier:(long)ident; diff --git a/src/MacVim/MMWindowController.m b/src/MacVim/MMWindowController.m index 4aab9aa004..dbc1aa8b24 100644 --- a/src/MacVim/MMWindowController.m +++ b/src/MacVim/MMWindowController.m @@ -314,6 +314,12 @@ } } +- (void)setDocumentFilename:(NSString *)filename +{ + if (filename) + [decoratedWindow setRepresentedFilename:filename]; +} + - (void)setToolbar:(NSToolbar *)toolbar { // The full-screen window has no toolbar. diff --git a/src/MacVim/MacVim.h b/src/MacVim/MacVim.h index 09f3970673..1d39868970 100644 --- a/src/MacVim/MacVim.h +++ b/src/MacVim/MacVim.h @@ -168,6 +168,7 @@ enum { EnableAntialiasMsgID, DisableAntialiasMsgID, SetVimStateMsgID, + SetDocumentFilenameMsgID, }; diff --git a/src/MacVim/MacVim.m b/src/MacVim/MacVim.m index d8b1c47013..c82d1ac7ea 100644 --- a/src/MacVim/MacVim.m +++ b/src/MacVim/MacVim.m @@ -76,6 +76,7 @@ char *MessageStrings[] = "EnableAntialiasMsgID", "DisableAntialiasMsgID", "SetVimStateMsgID", + "SetDocumentFilenameMsgID", }; diff --git a/src/MacVim/gui_macvim.m b/src/MacVim/gui_macvim.m index e18268f28b..849f4d4e57 100644 --- a/src/MacVim/gui_macvim.m +++ b/src/MacVim/gui_macvim.m @@ -1532,7 +1532,12 @@ gui_mch_settitle(char_u *title, char_u *icon) title = CONVERT_TO_UTF8(title); #endif - [[MMBackend sharedInstance] setWindowTitle:(char*)title]; + MMBackend *backend = [MMBackend sharedInstance]; + [backend setWindowTitle:(char*)title]; + + // TODO: Convert filename to UTF-8? + if (curbuf) + [backend setDocumentFilename:(char*)curbuf->b_ffname]; #ifdef FEAT_MBYTE CONVERT_TO_UTF8_FREE(title); @@ -1825,6 +1830,7 @@ odb_event(buf_T *buf, const AEEventID action) bytes:&buf->b_odb_server_id length:sizeof(OSType)]; + // TODO: Convert b_ffname to UTF-8? NSString *path = [NSString stringWithUTF8String:(char*)buf->b_ffname]; NSData *pathData = [[[NSURL fileURLWithPath:path] absoluteString] dataUsingEncoding:NSUTF8StringEncoding];