X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e90a0abcb337eadf62266c60307543e76fc9cf2..74a8f67d96591cec101def2a7d47c64072aff7fd:/src/cocoa/tooltip.mm diff --git a/src/cocoa/tooltip.mm b/src/cocoa/tooltip.mm index 8b13789179..95008e474b 100644 --- a/src/cocoa/tooltip.mm +++ b/src/cocoa/tooltip.mm @@ -1 +1,147 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/cocoa/tooltip.mm +// Purpose: Cocoa tooltips +// Author: Ryan Norton +// Modified by: +// Created: 2004-10-03 +// RCS-ID: $Id$ +// Copyright: (c) Ryan Norton +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// +#include "wx/wxprec.h" + +// =========================================================================== +// declarations +// =========================================================================== + +// --------------------------------------------------------------------------- +// headers +// --------------------------------------------------------------------------- + +#if wxUSE_TOOLTIPS + +#ifndef WX_PRECOMP + #include "wx/window.h" +#endif + +#include "wx/tooltip.h" + +#include "wx/cocoa/autorelease.h" +#include "wx/cocoa/string.h" + +#import + +// +// Private object in AppKit - exists in 10.2 at least - +// most likely exists earlier too +// +@interface NSToolTipManager : NSObject +{ +/* + NSWindow *toolTipWindow; + NSMutableArray *toolTips; + double toolTipDelay; + NSDate *timeToolTipRemovedFromScreen; + struct __CFRunLoopTimer *toolTipDisplayTimer; + NSToolTip *currentDisplayedToolTip; + NSToolTip *currentFadingToolTip; + float currentFadeValue; + NSTimer *fadeTimer; + NSWindow *lastToolTipWindow; +*/ +} + ++ (id)sharedToolTipManager; +- (int)_addTrackingRect:(struct _NSRect)fp12 andStartToolTipIfNecessary:(BOOL)fp28 view:(id)fp32 owner:(id)fp32 toolTip:(id)fp36; +- (void)_checkToolTipDelay; +- (void)_removeToolTip:(id)fp12 stopTimerIfNecessary:(BOOL)fp16; +- (void)_removeTrackingRectForToolTip:(id)fp12 stopTimerIfNecessary:(BOOL)fp16; +- (int)_setToolTip:(id)fp12 forView:(id)fp16 cell:(id)fp20 rect:(struct _NSRect)fp20 owner:(id)fp36 ownerIsDisplayDelegate:(BOOL)fp43 userData:(void *)fp44; +- (void)_stopTimerIfRunningForToolTip:(id)fp12; +- (void)abortToolTip; +- (void)addTrackingRectForToolTip:(id)fp12; +- (void)dealloc; +- (void)displayToolTip:(id)fp12; +- (void)fadeToolTip:(id)fp12; +- (id)init; +- (void)mouseEntered:(id)fp12; +- (void)mouseEnteredToolTip:(id)fp12 inWindow:(id)fp16 withEvent:(id)fp20; +- (void)mouseExited:(id)fp12; +- (void)orderOutToolTip; +- (void)orderOutToolTipImmediately:(BOOL)fp12; +- (void)recomputeToolTipsForView:(id)fp12 remove:(BOOL)fp16 add:(BOOL)fp20; +- (void)removeAllToolTipsForView:(id)fp12; +- (void)removeToolTipForView:(id)fp12 tag:(int)fp16; +- (void)setInitialToolTipDelay:(double)fp40; +- (void)setToolTip:(id)fp12 forView:(id)fp16 cell:(id)fp20; +- (int)setToolTipForView:(id)fp12 rect:(struct _NSRect)fp16 displayDelegate:(id)fp32 userData:(void *)fp32; +- (int)setToolTipForView:(id)fp12 rect:(struct _NSRect)fp16 owner:(id)fp32 userData:(void *)fp32; +- (void)setToolTipWithOwner:(id)fp12 forView:(id)fp16 cell:(id)fp20; +- (void)startTimer:(float)fp40 userInfo:(id)fp16; +- (void)stopTimer; +- (id)toolTipForView:(id)fp12 cell:(id)fp16; +- (BOOL)viewHasToolTips:(id)fp12; + +@end + +//----------------------------------------------------------------------------- +// wxToolTip +//----------------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxToolTip, wxObject) + +wxToolTip::wxToolTip(const wxString &tip) : + m_text(tip), m_window(0) +{ +} + +wxToolTip::~wxToolTip() +{ +} + +void wxToolTip::SetTip(const wxString& tip) +{ + m_text = tip; +} + +const wxString& wxToolTip::GetTip() const +{ + return m_text; +} + +// the window we're associated with +wxWindow *wxToolTip::GetWindow() const +{ + return m_window; +} + +// enable or disable the tooltips globally +//static + void wxToolTip::Enable(bool flag) +{ + //TODO + wxFAIL_MSG(wxT("Not implemented")); +} + +// set the delay after which the tooltip appears +//static + void wxToolTip::SetDelay(long milliseconds) +{ + [[NSToolTipManager sharedToolTipManager] setInitialToolTipDelay: ((double)milliseconds) / 1000.0]; +} + +void wxToolTip::SetWindow(wxWindow* window) +{ + wxAutoNSAutoreleasePool pool; + + m_window = window; + + //set the tooltip - empty string means remove + if (m_text.empty()) + [m_window->GetNSView() setToolTip:nil]; + else + [m_window->GetNSView() setToolTip:wxNSStringWithWxString(m_text)]; +} + +#endif //wxUSE_TOOLTIPS