diff --git a/Frameworks/OakAppKit/src/OakTabBarView.h b/Frameworks/OakAppKit/src/OakTabBarView.h index ea60e5a2..9b195afc 100644 --- a/Frameworks/OakAppKit/src/OakTabBarView.h +++ b/Frameworks/OakAppKit/src/OakTabBarView.h @@ -48,6 +48,7 @@ typedef std::tr1::shared_ptr layout_metrics_ptr; - (BOOL)tabBarView:(OakTabBarView*)aTabBarView shouldSelectIndex:(NSUInteger)anIndex; - (void)tabBarView:(OakTabBarView*)aTabBarView didDoubleClickIndex:(NSUInteger)anIndex; - (void)tabBarViewDidDoubleClick:(OakTabBarView*)aTabBarView; +- (NSMenu*)menuForTabBarView:(OakTabBarView*)aTabBarView; // Methods sent to the delegate which the tab was dragged from // When called, the delegate should set up the drag pasteboard using -addTypes:owner: with the data it requires diff --git a/Frameworks/OakAppKit/src/OakTabBarView.mm b/Frameworks/OakAppKit/src/OakTabBarView.mm index 2d1823ab..ecc34c21 100644 --- a/Frameworks/OakAppKit/src/OakTabBarView.mm +++ b/Frameworks/OakAppKit/src/OakTabBarView.mm @@ -73,7 +73,7 @@ struct layout_metrics_t double minTabSize; double maxTabSize; - std::vector layers_for (std::string const& layer_id, CGRect const& rect = CGRectZero, int tag = 0, NSString* label = nil, NSString* toolTip = nil, uint32_t requisiteFilter = layer_t::no_requisite) const; + std::vector layers_for (std::string const& layer_id, CGRect const& rect, int tag, NSString* label = nil, NSString* toolTip = nil, uint32_t requisiteFilter = layer_t::no_requisite) const; static layout_metrics_ptr parse (NSDictionary* dict); private: @@ -411,10 +411,10 @@ static id SafeObjectAtIndex (NSArray* array, NSUInteger index) D(DBF_TabBarView, bug("\n");); if(!isExpanded) - return [self setLayout:metrics->layers_for("backgroundCollapsed", rect)]; + return [self setLayout:metrics->layers_for("backgroundCollapsed", rect, -1)]; std::vector newLayout, selectedTabLayers; - newLayout = metrics->layers_for("background", rect); + newLayout = metrics->layers_for("background", rect, -1); // ========== @@ -548,6 +548,15 @@ static id SafeObjectAtIndex (NSArray* array, NSUInteger index) [NSApp sendAction:@selector(performCloseTab:) to:nil from:self]; } +- (NSMenu*)menuForEvent:(NSEvent*)anEvent +{ + NSPoint pos = [self convertPoint:[anEvent locationInWindow] fromView:nil]; + tag = [self tagForLayerContainingPoint:pos]; + if(tag != NSNotFound && [delegate respondsToSelector:@selector(menuForTabBarView:)]) + return [delegate menuForTabBarView:self]; + return [super menuForEvent:anEvent]; +} + - (void)setSelectedTab:(NSUInteger)anIndex { if(selectedTab == anIndex)