Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Messenger/AppDelegate.mm
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,11 @@ - (void)applicationDidFinishLaunching:(NSNotification*)notification {
toItem:_curtainView
attribute:NSLayoutAttributeCenterY
multiplier:1.f constant:0.f]];

// Touch bar
if ([NSTouchBar class]) {
[[NSApplication sharedApplication] setAutomaticCustomizeTouchBarMenuItemEnabled:YES];
}

// Present main window
[_window makeKeyAndOrderFront:self];
Expand Down
2 changes: 1 addition & 1 deletion Messenger/FBMWindow.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@interface FBMWindow : NSWindow <NSWindowDelegate>
@interface FBMWindow : NSWindow <NSWindowDelegate, NSTouchBarDelegate>

@property (nonatomic) CGFloat titlebarHeight;

Expand Down
42 changes: 42 additions & 0 deletions Messenger/FBMWindow.mm
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,48 @@ - (void)hideTitlebarAnimate:(BOOL)animate {



#pragma mark - Touch Bar

static NSString * const touchBarIdentifier = @"me.rsms.fbmessenger.touchbar";
static NSString * const touchBarComposeButtonIdentifier = @"me.rsms.fbmessenger.touchbar.compose";
static NSString * const touchBarConversationNavigationIdentifier = @"me.rsms.fbmessenger.touchbar.conversationNavigation";

- (NSTouchBar *)makeTouchBar {
auto bar = [NSTouchBar new];
bar.delegate = self;
bar.customizationIdentifier = touchBarIdentifier;
bar.defaultItemIdentifiers = @[touchBarComposeButtonIdentifier, NSTouchBarItemIdentifierOtherItemsProxy, NSTouchBarItemIdentifierFlexibleSpace, touchBarConversationNavigationIdentifier];
bar.customizationAllowedItemIdentifiers = @[touchBarComposeButtonIdentifier, touchBarConversationNavigationIdentifier];

return bar;
}

- (NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier {
if ([identifier isEqual:touchBarComposeButtonIdentifier]) {
auto item = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
item.customizationLabel = @"New Message";
item.view = [NSButton buttonWithImage:[NSImage imageNamed:NSImageNameTouchBarComposeTemplate] target:[NSApp delegate] action:@selector(composeNewMessage:)];
return item;
}
if ([identifier isEqual:touchBarConversationNavigationIdentifier]) {
auto item = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
item.customizationLabel = @"Conversation Navigation";
auto segmentedControl = [NSSegmentedControl segmentedControlWithImages:@[[NSImage imageNamed:NSImageNameTouchBarGoUpTemplate], [NSImage imageNamed:NSImageNameTouchBarGoDownTemplate]] trackingMode:NSSegmentSwitchTrackingMomentary target:self action:@selector(conversationNavigationSegmentedControlDidSelect:)];
segmentedControl.segmentStyle = NSSegmentStyleSeparated;
item.view = segmentedControl;
return item;
}
return nil;
}

- (void)conversationNavigationSegmentedControlDidSelect:(NSSegmentedControl *)sender {
auto delegate = (AppDelegate *)[NSApp delegate];
if (sender.selectedSegment == 0) [delegate selectNewerConversation:sender];
else if (sender.selectedSegment == 1) [delegate selectOlderConversation:sender];
}



#pragma mark - NSWindowDelegate


Expand Down
6 changes: 5 additions & 1 deletion website/app/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,11 @@
},

currentConversationItem: function() {
return document.querySelector('li[aria-relevant="additions text"]');
// when a conversation is unread, it has both aria-relevant _and_ aria-live.
// so we are looking for the element with aria-relevant but _not_ aria-live, _unless_ there's only one aria-relevant (then it's selected and unread).
var item = document.querySelector('div[aria-label="Conversations"] li[aria-relevant]:not([aria-live])');
if (!item) item = document.querySelector('div[aria-label="Conversations"] li[aria-relevant]');
return item;
},

canSelectNewerConversation: function () {
Expand Down