X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fa1fcc6642439f48b1e68b6767090aaf814d90e8..369d17c0754fa6de6088aa120704d8de929ea566:/src/gtk1/cursor.cpp diff --git a/src/gtk1/cursor.cpp b/src/gtk1/cursor.cpp index dc03ce10db..bd1e6ca2bd 100644 --- a/src/gtk1/cursor.cpp +++ b/src/gtk1/cursor.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp +// Name: src/gtk1/cursor.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ @@ -7,14 +7,15 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/cursor.h" -#include "wx/utils.h" -#include "wx/app.h" + +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/utils.h" +#endif // WX_PRECOMP #include #include @@ -35,7 +36,7 @@ class wxCursorRefData: public wxObjectRefData public: wxCursorRefData(); - ~wxCursorRefData(); + virtual ~wxCursorRefData(); GdkCursor *m_cursor; }; @@ -68,6 +69,20 @@ wxCursor::wxCursor( int cursorId ) GdkCursorType gdk_cur = GDK_LEFT_PTR; switch (cursorId) { + case wxCURSOR_BLANK: + { + static const gchar bits[] = { 0 }; + static /* const -- not in GTK1 */ GdkColor color = { 0, 0, 0, 0 }; + + GdkPixmap *pixmap = gdk_bitmap_create_from_data(NULL, bits, 1, 1); + M_CURSORDATA->m_cursor = gdk_cursor_new_from_pixmap(pixmap, + pixmap, + &color, + &color, + 0, 0); + } + return; + case wxCURSOR_ARROW: // fall through to default case wxCURSOR_DEFAULT: gdk_cur = GDK_LEFT_PTR; break; case wxCURSOR_RIGHT_ARROW: gdk_cur = GDK_RIGHT_PTR; break; @@ -102,6 +117,7 @@ wxCursor::wxCursor( int cursorId ) case wxCURSOR_BASED_ARROW_UP: gdk_cur = GDK_BASED_ARROW_UP; break; case wxCURSOR_BASED_ARROW_DOWN: gdk_cur = GDK_BASED_ARROW_DOWN; break; */ + default: wxFAIL_MSG(wxT("unsupported cursor type")); // will use the standard one @@ -115,7 +131,7 @@ extern GtkWidget *wxGetRootWindow(); wxCursor::wxCursor(const char bits[], int width, int height, int hotSpotX, int hotSpotY, - const char maskBits[], wxColour *fg, wxColour *bg) + const char maskBits[], const wxColour *fg, const wxColour *bg) { if (!maskBits) maskBits = bits; @@ -140,13 +156,6 @@ wxCursor::wxCursor(const char bits[], int width, int height, gdk_bitmap_unref( mask ); } - -wxCursor::wxCursor( const wxCursor &cursor ) - : wxObject() -{ - Ref( cursor ); -} - #if wxUSE_IMAGE wxCursor::wxCursor( const wxImage & image ) @@ -252,16 +261,27 @@ wxCursor::wxCursor( const wxImage & image ) (unsigned char)(colNextMostFreq >> 8), (unsigned char)(colNextMostFreq) ); + int fg_intensity = fg.Red() + fg.Green() + fg.Blue(); + int bg_intensity = bg.Red() + bg.Green() + bg.Blue(); + + if (bg_intensity > fg_intensity) + { + //swap fg and bg + wxColour tmp = fg; + fg = bg; + bg = tmp; + } + int hotSpotX; int hotSpotY; - if (image.HasOption(wxCUR_HOTSPOT_X)) - hotSpotX = image.GetOptionInt(wxCUR_HOTSPOT_X); + if (image.HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_X)) + hotSpotX = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X); else hotSpotX = 0; - if (image.HasOption(wxCUR_HOTSPOT_Y)) - hotSpotY = image.GetOptionInt(wxCUR_HOTSPOT_Y); + if (image.HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y)) + hotSpotY = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y); else hotSpotY = 0; @@ -296,27 +316,7 @@ wxCursor::~wxCursor() { } -wxCursor& wxCursor::operator = ( const wxCursor& cursor ) -{ - if (*this == cursor) - return (*this); - - Ref( cursor ); - - return *this; -} - -bool wxCursor::operator == ( const wxCursor& cursor ) const -{ - return m_refData == cursor.m_refData; -} - -bool wxCursor::operator != ( const wxCursor& cursor ) const -{ - return m_refData != cursor.m_refData; -} - -bool wxCursor::Ok() const +bool wxCursor::IsOk() const { return (m_refData != NULL); } @@ -354,10 +354,10 @@ void wxEndBusyCursor() gs_savedCursor = wxNullCursor; if (wxTheApp) - wxTheApp->SendIdleEvents(); + wxTheApp->ProcessIdle(); } -void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) +void wxBeginBusyCursor( const wxCursor *WXUNUSED(cursor) ) { if (gs_busyCount++ > 0) return; @@ -370,7 +370,7 @@ void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) wxSetCursor( wxCursor(wxCURSOR_WATCH) ); if (wxTheApp) - wxTheApp->SendIdleEvents(); + wxTheApp->ProcessIdle(); gdk_flush(); }