projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't mention GUI-only changes in the base section
[wxWidgets.git]
/
src
/
gtk1
/
checkbox.cpp
diff --git
a/src/gtk1/checkbox.cpp
b/src/gtk1/checkbox.cpp
index f4ff061e921fd49cbcc8d6f076f3bb4887c22664..0916de575b12fde11c4ae13f3fe7c040b2cfe4aa 100644
(file)
--- a/
src/gtk1/checkbox.cpp
+++ b/
src/gtk1/checkbox.cpp
@@
-18,8
+18,7
@@
#include "wx/checkbox.h"
#include "wx/checkbox.h"
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
+#include "wx/gtk/private.h"
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
// idle system
@@
-32,8
+31,9
@@
extern bool g_isIdle;
// data
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
-extern wxCursor g_globalCursor;
+extern bool g_blockEventsOnDrag;
+extern wxCursor g_globalCursor;
+extern wxWindowGTK *g_delayedFocus;
//-----------------------------------------------------------------------------
// "clicked"
//-----------------------------------------------------------------------------
// "clicked"
@@
-46,6
+46,8
@@
static void gtk_checkbox_clicked_callback( GtkWidget *WXUNUSED(widget), wxCheckB
if (!cb->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
if (!cb->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
+
+ if (cb->m_blockEvent) return;
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId());
event.SetInt( cb->GetValue() );
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId());
event.SetInt( cb->GetValue() );
@@
-74,6
+76,7
@@
bool wxCheckBox::Create(wxWindow *parent,
{
m_needParent = TRUE;
m_acceptsFocus = TRUE;
{
m_needParent = TRUE;
m_acceptsFocus = TRUE;
+ m_blockEvent = FALSE;
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, validator, name ))
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, validator, name ))
@@
-91,7
+94,7
@@
bool wxCheckBox::Create(wxWindow *parent,
// left of it
m_widgetCheckbox = gtk_check_button_new();
// left of it
m_widgetCheckbox = gtk_check_button_new();
- m_widgetLabel = gtk_label_new(
m_label.mbc_str()
);
+ m_widgetLabel = gtk_label_new(
wxGTK_CONV( m_label )
);
gtk_misc_set_alignment(GTK_MISC(m_widgetLabel), 0.0, 0.5);
m_widget = gtk_hbox_new(FALSE, 0);
gtk_misc_set_alignment(GTK_MISC(m_widgetLabel), 0.0, 0.5);
m_widget = gtk_hbox_new(FALSE, 0);
@@
-103,8
+106,8
@@
bool wxCheckBox::Create(wxWindow *parent,
}
else
{
}
else
{
- m_widgetCheckbox = gtk_check_button_new_with_label(
m_label.mbc_str(
) );
- m_widgetLabel =
GTK_BUTTON( m_widgetCheckbox )->child
;
+ m_widgetCheckbox = gtk_check_button_new_with_label(
wxGTK_CONV( m_label
) );
+ m_widgetLabel =
BUTTON_CHILD( m_widgetCheckbox )
;
m_widget = m_widgetCheckbox;
}
m_widget = m_widgetCheckbox;
}
@@
-143,16
+146,11
@@
void wxCheckBox::SetValue( bool state )
if (state == GetValue())
return;
if (state == GetValue())
return;
- gtk_signal_disconnect_by_func( GTK_OBJECT(m_widgetCheckbox),
- GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
- (gpointer *)this );
+ m_blockEvent = TRUE;
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widgetCheckbox), state );
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widgetCheckbox), state );
- gtk_signal_connect( GTK_OBJECT(m_widgetCheckbox),
- "clicked",
- GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
- (gpointer *)this );
+ m_blockEvent = FALSE;
}
bool wxCheckBox::GetValue() const
}
bool wxCheckBox::GetValue() const
@@
-168,7
+166,7
@@
void wxCheckBox::SetLabel( const wxString& label )
wxControl::SetLabel( label );
wxControl::SetLabel( label );
- gtk_label_set( GTK_LABEL(m_widgetLabel),
GetLabel().mbc_str(
) );
+ gtk_label_set( GTK_LABEL(m_widgetLabel),
wxGTK_CONV( GetLabel()
) );
}
bool wxCheckBox::Enable( bool enable )
}
bool wxCheckBox::Enable( bool enable )
@@
-190,7
+188,7
@@
void wxCheckBox::ApplyWidgetStyle()
bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window )
{
bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window )
{
- return
(window == GTK_TOGGLE_BUTTON(m_widget)->event_window
);
+ return
window == TOGGLE_BUTTON_EVENT_WIN(m_widget
);
}
void wxCheckBox::OnInternalIdle()
}
void wxCheckBox::OnInternalIdle()
@@
-198,16
+196,26
@@
void wxCheckBox::OnInternalIdle()
wxCursor cursor = m_cursor;
if (g_globalCursor.Ok()) cursor = g_globalCursor;
wxCursor cursor = m_cursor;
if (g_globalCursor.Ok()) cursor = g_globalCursor;
- if (GTK_TOGGLE_BUTTON(m_widgetCheckbox)->event_window && cursor.Ok())
+ GdkWindow *event_window = TOGGLE_BUTTON_EVENT_WIN(m_widgetCheckbox);
+ if ( event_window && cursor.Ok() )
{
/* 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. */
{
/* 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_TOGGLE_BUTTON(m_widgetCheckbox)->
event_window, cursor.GetCursor() );
+ gdk_window_set_cursor( event_window, cursor.GetCursor() );
}
}
+ if (g_delayedFocus == this)
+ {
+ if (GTK_WIDGET_REALIZED(m_widget))
+ {
+ gtk_widget_grab_focus( m_widget );
+ g_delayedFocus = NULL;
+ }
+ }
+
UpdateWindowUI();
}
UpdateWindowUI();
}