void wxRadioButton::OnInternalIdle() { wxCursor cursor = m_cursor; if (g_globalCursor.IsOk()) cursor = g_globalCursor; GdkWindow *win = TOGGLE_BUTTON_EVENT_WIN(m_widget); if ( win && cursor.IsOk()) { /* I now set the cursor the anew in every OnInternalIdle call as setting the cursor in a parent window also effects the windows above so that checking for the current cursor is not possible. */ gdk_window_set_cursor( win, cursor.GetCursor() ); } if (g_delayedFocus == this) { if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_grab_focus( m_widget ); g_delayedFocus = NULL; } } if (wxUpdateUIEvent::CanUpdate(this)) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }
// Global cursor setting void wxSetCursor(const wxCursor& cursor) { extern wxCursor *g_globalCursor; if ( cursor.IsOk() && cursor.GetHCURSOR() ) { // ::SetCursor((HCURSOR) cursor.GetHCURSOR()); if ( g_globalCursor ) (*g_globalCursor) = cursor; } }
void wxTextCtrl::OnInternalIdle() { wxCursor cursor = m_cursor; if (g_globalCursor.IsOk()) cursor = g_globalCursor; if (cursor.IsOk()) { GdkWindow *window = NULL; if (HasFlag(wxTE_MULTILINE)) window = GTK_TEXT(m_text)->text_area; else window = GTK_ENTRY(m_text)->text_area; if (window) gdk_window_set_cursor( window, cursor.GetCursor() ); if (!g_globalCursor.IsOk()) cursor = *wxSTANDARD_CURSOR; window = m_widget->window; if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget))) gdk_window_set_cursor( window, cursor.GetCursor() ); } if (g_delayedFocus == this) { if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_grab_focus( m_widget ); g_delayedFocus = NULL; } } if (wxUpdateUIEvent::CanUpdate(this)) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }
void wxBeginBusyCursor( const wxCursor *WXUNUSED(cursor) ) { if (gs_busyCount++ > 0) return; wxASSERT_MSG( !gs_savedCursor.IsOk(), wxT("forgot to call wxEndBusyCursor, will leak memory") ); gs_savedCursor = g_globalCursor; wxSetCursor( wxCursor(wxCURSOR_WATCH) ); if (wxTheApp) wxTheApp->ProcessIdle(); }
void wxBeginBusyCursor(const wxCursor* cursor) { if (gs_busyCount++ > 0) return; wxASSERT_MSG( !gs_savedCursor.IsOk(), wxT("forgot to call wxEndBusyCursor, will leak memory") ); gs_savedCursor = g_globalCursor; g_globalCursor = *cursor; GdkDisplay* display = NULL; UpdateCursors(&display); if (display) gdk_display_flush(display); }
void wxListBox::OnInternalIdle() { wxCursor cursor = m_cursor; if (g_globalCursor.IsOk()) cursor = g_globalCursor; if (GTK_WIDGET(m_list)->window && cursor.IsOk()) { /* I now set the cursor the anew in every OnInternalIdle call as setting the cursor in a parent window also effects the windows above so that checking for the current cursor is not possible. */ gdk_window_set_cursor( GTK_WIDGET(m_list)->window, cursor.GetCursor() ); GList *child = m_list->children; while (child) { GtkBin *bin = GTK_BIN( child->data ); GtkWidget *label = GTK_WIDGET( bin->child ); if (!label->window) break; else gdk_window_set_cursor( label->window, cursor.GetCursor() ); child = child->next; } } if (g_delayedFocus == this) { if (GTK_WIDGET_REALIZED(m_widget)) { gtk_widget_grab_focus( m_widget ); g_delayedFocus = NULL; } } if (wxUpdateUIEvent::CanUpdate(this)) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }
void wxToggleButton::OnInternalIdle() { wxCursor cursor = m_cursor; if (g_globalCursor.IsOk()) cursor = g_globalCursor; GdkWindow *win = TOGGLE_BUTTON_EVENT_WIN(m_widget); if ( win && cursor.IsOk() ) { /* I now set the cursor the anew in every OnInternalIdle call as setting the cursor in a parent window also effects the windows above so that checking for the current cursor is not possible. */ gdk_window_set_cursor(win, cursor.GetCursor()); } if (wxUpdateUIEvent::CanUpdate(this)) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }