git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
148 lines
4.2 KiB
Plaintext
148 lines
4.2 KiB
Plaintext
/////////////////////////////////////////////////////////////////////////////
|
|
// 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 <AppKit/NSView.h>
|
|
|
|
//
|
|
// 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
|