From 261917904250fc47a5b89be3d799a2a4df80273c Mon Sep 17 00:00:00 2001 From: Ryan Norton Date: Wed, 6 Oct 2004 21:09:47 +0000 Subject: [PATCH] cocoa tooltips. Remove runtime warning from 10.2 (dave - I was too lazy to change this from my local copy, feel free to commit over this if you want) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29686 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure | 1 - configure.in | 1 - docs/latex/wx/tooltip.tex | 3 +++ include/wx/cocoa/tooltip.h | 43 ++++++++++++++++++++++++++++++++++++++ include/wx/tooltip.h | 2 ++ src/cocoa/window.mm | 26 +++++++++++++++++++---- 6 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 include/wx/cocoa/tooltip.h diff --git a/configure b/configure index b29fd156bd..e506c63584 100755 --- a/configure +++ b/configure @@ -7012,7 +7012,6 @@ fi if test "x$wxUSE_COCOA" != "x" -a "$wxUSE_COCOA" != "0" ; then wxUSE_PRINTING_ARCHITECTURE=no wxUSE_DRAG_AND_DROP=no - DEFAULT_wxUSE_TOOLTIPS=no DEFAULT_wxUSE_DRAGIMAGE=no fi diff --git a/configure.in b/configure.in index d1d6501d5e..3e2a21546b 100644 --- a/configure.in +++ b/configure.in @@ -1048,7 +1048,6 @@ fi if test "x$wxUSE_COCOA" != "x" -a "$wxUSE_COCOA" != "0" ; then wxUSE_PRINTING_ARCHITECTURE=no wxUSE_DRAG_AND_DROP=no - DEFAULT_wxUSE_TOOLTIPS=no DEFAULT_wxUSE_DRAGIMAGE=no fi diff --git a/docs/latex/wx/tooltip.tex b/docs/latex/wx/tooltip.tex index 0430c381f7..14ee782ad5 100644 --- a/docs/latex/wx/tooltip.tex +++ b/docs/latex/wx/tooltip.tex @@ -26,6 +26,8 @@ alter tooltips behaviour. Enable or disable tooltips globally. +May not be supported on all platforms (eg. wxCocoa). + \membersection{wxToolTip::SetDelay}\label{wxtooltipsetdelay} @@ -33,6 +35,7 @@ Enable or disable tooltips globally. Set the delay after which the tooltip appears. +May not be supported on all platforms (eg. wxCocoa). \membersection{wxToolTip::wxToolTip}\label{wxtooltipwxtooltip} diff --git a/include/wx/cocoa/tooltip.h b/include/wx/cocoa/tooltip.h new file mode 100644 index 0000000000..403445363b --- /dev/null +++ b/include/wx/cocoa/tooltip.h @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: cocoa/tooltip.h +// Purpose: wxToolTip class - tooltip control +// Author: Ryan Norton +// Modified by: +// Created: 31.01.99 +// RCS-ID: $Id$ +// Copyright: (c) Ryan Norton +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#include "wx/object.h" + +class wxToolTip : public wxObject +{ +public: + // ctor & dtor + wxToolTip(const wxString &tip) : m_text(tip), m_window(0) {} + virtual ~wxToolTip() {} + + // accessors + // tip text + void SetTip(const wxString& tip) { m_text = tip; } + const wxString& GetTip() const { return m_text; } + + // the window we're associated with + wxWindow *GetWindow() const { return m_window; } + + // controlling tooltip behaviour: globally change tooltip parameters + // enable or disable the tooltips globally + static void Enable(bool flag) {} + // set the delay after which the tooltip appears + static void SetDelay(long milliseconds) {} + +private: + void SetWindow(wxWindow* window) {m_window = window;} + friend class wxWindow; + + wxString m_text; // tooltip text + wxWindow *m_window; // window we're associated with + + DECLARE_ABSTRACT_CLASS(wxToolTip) +}; \ No newline at end of file diff --git a/include/wx/tooltip.h b/include/wx/tooltip.h index a378492a9a..c20fc7b6d9 100644 --- a/include/wx/tooltip.h +++ b/include/wx/tooltip.h @@ -13,6 +13,8 @@ #include "wx/gtk/tooltip.h" #elif defined(__WXMAC__) #include "wx/mac/tooltip.h" +#elif defined(__WXCOCOA__) +#include "wx/cocoa/tooltip.h" #elif defined(__WXPM__) #include "wx/os2/tooltip.h" #endif diff --git a/src/cocoa/window.mm b/src/cocoa/window.mm index a1e06db23e..f2b9e65341 100644 --- a/src/cocoa/window.mm +++ b/src/cocoa/window.mm @@ -12,10 +12,12 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/log.h" + #include "wx/tooltip.h" #include "wx/window.h" #endif //WX_PRECOMP #include "wx/cocoa/autorelease.h" +#include "wx/cocoa/string.h" #import #import @@ -23,6 +25,7 @@ #import #import #import +#import #include @@ -354,10 +357,9 @@ bool wxWindowCocoa::Cocoa_drawRect(const NSRect &rect) int countRects = 1; // Try replacing the larger rectangle with a list of smaller ones: NS_DURING - // This only works on Panther -// [GetNSView() getRectsBeingDrawn:&rects count:&countRects]; - // This compiles everywhere (and still only works on Panther) - objc_msgSend(GetNSView(),@selector(getRectsBeingDrawn:count:),&rects,&countRects); + //getRectsBeingDrawn:count: is a optimization that is only available on + //Panthar (10.3) and higher. Check to see if it supports it - + if ( [GetNSView() respondsToSelector:@selector(getRectsBeingDrawn:count:)] ) objc_msgSend(GetNSView(),@selector(getRectsBeingDrawn:count:),&rects,&countRects); NS_HANDLER NS_ENDHANDLER m_updateRegion = wxRegion(rects,countRects); @@ -598,6 +600,22 @@ void wxWindowCocoa::DoSetSize(int x, int y, int width, int height, int sizeFlags DoMoveWindow(x,y,width,height); } +//We should really get rid of wxToolTip :) +IMPLEMENT_ABSTRACT_CLASS(wxToolTip, wxObject) + +void wxWindowCocoa::DoSetToolTip( wxToolTip *tip ) +{ + wxWindowBase::DoSetToolTip(tip); + + wxAutoNSAutoreleasePool pool; + + if ( m_tooltip ) + { + m_tooltip->SetWindow((wxWindow *)this); + [GetNSView() setToolTip:wxNSStringWithWxString(m_tooltip->GetTip())]; + } +} + void wxWindowCocoa::DoMoveWindow(int x, int y, int width, int height) { wxAutoNSAutoreleasePool pool; -- 2.45.2