wxListBox mouse events now report coords relative
to the whole list box. wxRadioButton doesn't emit any event when unpressed. Similar correction to wxRadioBox and wxToggleButton. Upported change to wxMenuEvent so that the id is set in the constructor. Otherwise the EVT_MENU macro is pretty useless. Already in 2.2.8. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1027,7 +1027,7 @@ class WXDLLEXPORT wxMenuEvent : public wxEvent
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0)
|
wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0)
|
||||||
{ m_eventType = type; m_menuId = id; }
|
{ m_eventType = type; m_menuId = id; m_id = id; }
|
||||||
|
|
||||||
int GetMenuId() const { return m_menuId; }
|
int GetMenuId() const { return m_menuId; }
|
||||||
|
|
||||||
|
@@ -193,6 +193,7 @@ public:
|
|||||||
bool m_resizing:1;
|
bool m_resizing:1;
|
||||||
bool m_isStaticBox:1; // faster than IS_KIND_OF
|
bool m_isStaticBox:1; // faster than IS_KIND_OF
|
||||||
bool m_isRadioButton:1; // faster than IS_KIND_OF
|
bool m_isRadioButton:1; // faster than IS_KIND_OF
|
||||||
|
bool m_isListBox:1; // faster than IS_KIND_OF
|
||||||
bool m_isFrame:1; // faster than IS_KIND_OF
|
bool m_isFrame:1; // faster than IS_KIND_OF
|
||||||
bool m_acceptsFocus:1; // not wxStaticBox, not wxStaticBitmap etc.
|
bool m_acceptsFocus:1; // not wxStaticBox, not wxStaticBitmap etc.
|
||||||
bool m_isScrolling;
|
bool m_isScrolling;
|
||||||
|
@@ -193,6 +193,7 @@ public:
|
|||||||
bool m_resizing:1;
|
bool m_resizing:1;
|
||||||
bool m_isStaticBox:1; // faster than IS_KIND_OF
|
bool m_isStaticBox:1; // faster than IS_KIND_OF
|
||||||
bool m_isRadioButton:1; // faster than IS_KIND_OF
|
bool m_isRadioButton:1; // faster than IS_KIND_OF
|
||||||
|
bool m_isListBox:1; // faster than IS_KIND_OF
|
||||||
bool m_isFrame:1; // faster than IS_KIND_OF
|
bool m_isFrame:1; // faster than IS_KIND_OF
|
||||||
bool m_acceptsFocus:1; // not wxStaticBox, not wxStaticBitmap etc.
|
bool m_acceptsFocus:1; // not wxStaticBox, not wxStaticBitmap etc.
|
||||||
bool m_isScrolling;
|
bool m_isScrolling;
|
||||||
|
@@ -333,6 +333,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
|||||||
{
|
{
|
||||||
m_needParent = TRUE;
|
m_needParent = TRUE;
|
||||||
m_acceptsFocus = TRUE;
|
m_acceptsFocus = TRUE;
|
||||||
|
m_isListBox = TRUE;
|
||||||
m_prevSelection = 0; // or -1 ??
|
m_prevSelection = 0; // or -1 ??
|
||||||
|
|
||||||
if (!PreCreation( parent, pos, size ) ||
|
if (!PreCreation( parent, pos, size ) ||
|
||||||
|
@@ -44,20 +44,14 @@ extern bool g_blockEventsOnDrag;
|
|||||||
// "clicked"
|
// "clicked"
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb )
|
static void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioBox *rb )
|
||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
if (!rb->m_hasVMT) return;
|
if (!rb->m_hasVMT) return;
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
if (rb->m_alreadySent)
|
if (!button->active) return;
|
||||||
{
|
|
||||||
rb->m_alreadySent = FALSE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rb->m_alreadySent = TRUE;
|
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() );
|
wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() );
|
||||||
event.SetInt( rb->GetSelection() );
|
event.SetInt( rb->GetSelection() );
|
||||||
@@ -166,7 +160,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl)
|
|||||||
|
|
||||||
void wxRadioBox::Init()
|
void wxRadioBox::Init()
|
||||||
{
|
{
|
||||||
m_alreadySent = FALSE;
|
|
||||||
m_needParent = TRUE;
|
m_needParent = TRUE;
|
||||||
m_acceptsFocus = TRUE;
|
m_acceptsFocus = TRUE;
|
||||||
|
|
||||||
@@ -184,7 +177,7 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
|
|||||||
!CreateBase( parent, id, pos, size, style, validator, name ))
|
!CreateBase( parent, id, pos, size, style, validator, name ))
|
||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxRadioBox creation failed") );
|
wxFAIL_MSG( wxT("wxRadioBox creation failed") );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widget = gtk_frame_new( title.mbc_str() );
|
m_widget = gtk_frame_new( title.mbc_str() );
|
||||||
@@ -478,7 +471,7 @@ void wxRadioBox::SetSelection( int n )
|
|||||||
|
|
||||||
GtkDisableEvents();
|
GtkDisableEvents();
|
||||||
|
|
||||||
gtk_toggle_button_set_state( button, 1 );
|
gtk_toggle_button_set_active( button, 1 );
|
||||||
|
|
||||||
GtkEnableEvents();
|
GtkEnableEvents();
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
// Author: Robert Roebling
|
// Author: Robert Roebling
|
||||||
// Id: $Id$
|
// Id: $Id$
|
||||||
// Copyright: (c) 1998 Robert Roebling
|
// Copyright: (c) 1998 Robert Roebling
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ extern wxCursor g_globalCursor;
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static
|
static
|
||||||
void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButton *rb )
|
void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioButton *rb )
|
||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
@@ -48,6 +48,8 @@ void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButto
|
|||||||
|
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
|
if (!button->active) return;
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
|
wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
|
||||||
event.SetInt( rb->GetValue() );
|
event.SetInt( rb->GetValue() );
|
||||||
event.SetEventObject( rb );
|
event.SetEventObject( rb );
|
||||||
@@ -72,7 +74,7 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
|
|||||||
!CreateBase( parent, id, pos, size, style, validator, name ))
|
!CreateBase( parent, id, pos, size, style, validator, name ))
|
||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxRadioButton creation failed") );
|
wxFAIL_MSG( wxT("wxRadioButton creation failed") );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasFlag(wxRB_GROUP))
|
if (HasFlag(wxRB_GROUP))
|
||||||
@@ -86,25 +88,25 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
|
|||||||
wxRadioButton *chief = (wxRadioButton*) NULL;
|
wxRadioButton *chief = (wxRadioButton*) NULL;
|
||||||
wxWindowList::Node *node = parent->GetChildren().GetLast();
|
wxWindowList::Node *node = parent->GetChildren().GetLast();
|
||||||
while (node)
|
while (node)
|
||||||
{
|
{
|
||||||
wxWindow *child = node->GetData();
|
wxWindow *child = node->GetData();
|
||||||
if (child->m_isRadioButton)
|
if (child->m_isRadioButton)
|
||||||
{
|
{
|
||||||
chief = (wxRadioButton*) child;
|
chief = (wxRadioButton*) child;
|
||||||
if (child->HasFlag(wxRB_GROUP)) break;
|
if (child->HasFlag(wxRB_GROUP)) break;
|
||||||
}
|
}
|
||||||
node = node->GetPrevious();
|
node = node->GetPrevious();
|
||||||
}
|
}
|
||||||
if (chief)
|
if (chief)
|
||||||
{
|
{
|
||||||
/* we are part of the group started by chief */
|
/* we are part of the group started by chief */
|
||||||
m_radioButtonGroup = gtk_radio_button_group( GTK_RADIO_BUTTON(chief->m_widget) );
|
m_radioButtonGroup = gtk_radio_button_group( GTK_RADIO_BUTTON(chief->m_widget) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* start a new group */
|
/* start a new group */
|
||||||
m_radioButtonGroup = (GSList*) NULL;
|
m_radioButtonGroup = (GSList*) NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, label.mbc_str() );
|
m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, label.mbc_str() );
|
||||||
@@ -159,7 +161,7 @@ void wxRadioButton::SetValue( bool val )
|
|||||||
|
|
||||||
if (val)
|
if (val)
|
||||||
{
|
{
|
||||||
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), TRUE );
|
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(m_widget), TRUE );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -209,11 +211,11 @@ void wxRadioButton::OnInternalIdle()
|
|||||||
if (GTK_TOGGLE_BUTTON(m_widget)->event_window && cursor.Ok())
|
if (GTK_TOGGLE_BUTTON(m_widget)->event_window && cursor.Ok())
|
||||||
{
|
{
|
||||||
/* I now set the cursor the anew in every OnInternalIdle call
|
/* I now set the cursor the anew in every OnInternalIdle call
|
||||||
as setting the cursor in a parent window also effects the
|
as setting the cursor in a parent window also effects the
|
||||||
windows above so that checking for the current cursor is
|
windows above so that checking for the current cursor is
|
||||||
not possible. */
|
not possible. */
|
||||||
|
|
||||||
gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
|
gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateWindowUI();
|
UpdateWindowUI();
|
||||||
|
@@ -106,7 +106,7 @@ void wxToggleButton::SetValue(bool state)
|
|||||||
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
||||||
(gpointer *)this);
|
(gpointer *)this);
|
||||||
|
|
||||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_widget), state);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_widget), state);
|
||||||
|
|
||||||
gtk_signal_connect(GTK_OBJECT(m_widget), "clicked",
|
gtk_signal_connect(GTK_OBJECT(m_widget), "clicked",
|
||||||
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
||||||
|
@@ -1333,6 +1333,14 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
|||||||
event.m_y = (wxCoord)gdk_event->y;
|
event.m_y = (wxCoord)gdk_event->y;
|
||||||
|
|
||||||
AdjustEventButtonState(event);
|
AdjustEventButtonState(event);
|
||||||
|
|
||||||
|
// wxListBox actually get mouse events from the item
|
||||||
|
|
||||||
|
if (win->m_isListBox)
|
||||||
|
{
|
||||||
|
event.m_x += widget->allocation.x;
|
||||||
|
event.m_y += widget->allocation.y;
|
||||||
|
}
|
||||||
|
|
||||||
// Some control don't have their own X window and thus cannot get
|
// Some control don't have their own X window and thus cannot get
|
||||||
// any events.
|
// any events.
|
||||||
@@ -1466,6 +1474,14 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
|||||||
|
|
||||||
AdjustEventButtonState(event);
|
AdjustEventButtonState(event);
|
||||||
|
|
||||||
|
// wxListBox actually get mouse events from the item
|
||||||
|
|
||||||
|
if (win->m_isListBox)
|
||||||
|
{
|
||||||
|
event.m_x += widget->allocation.x;
|
||||||
|
event.m_y += widget->allocation.y;
|
||||||
|
}
|
||||||
|
|
||||||
// Some control don't have their own X window and thus cannot get
|
// Some control don't have their own X window and thus cannot get
|
||||||
// any events.
|
// any events.
|
||||||
|
|
||||||
@@ -2366,6 +2382,7 @@ void wxWindowGTK::Init()
|
|||||||
|
|
||||||
m_isStaticBox = FALSE;
|
m_isStaticBox = FALSE;
|
||||||
m_isRadioButton = FALSE;
|
m_isRadioButton = FALSE;
|
||||||
|
m_isListBox = FALSE;
|
||||||
m_isFrame = FALSE;
|
m_isFrame = FALSE;
|
||||||
m_acceptsFocus = FALSE;
|
m_acceptsFocus = FALSE;
|
||||||
|
|
||||||
|
@@ -333,6 +333,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
|
|||||||
{
|
{
|
||||||
m_needParent = TRUE;
|
m_needParent = TRUE;
|
||||||
m_acceptsFocus = TRUE;
|
m_acceptsFocus = TRUE;
|
||||||
|
m_isListBox = TRUE;
|
||||||
m_prevSelection = 0; // or -1 ??
|
m_prevSelection = 0; // or -1 ??
|
||||||
|
|
||||||
if (!PreCreation( parent, pos, size ) ||
|
if (!PreCreation( parent, pos, size ) ||
|
||||||
|
@@ -44,20 +44,14 @@ extern bool g_blockEventsOnDrag;
|
|||||||
// "clicked"
|
// "clicked"
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb )
|
static void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioBox *rb )
|
||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
if (!rb->m_hasVMT) return;
|
if (!rb->m_hasVMT) return;
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
if (rb->m_alreadySent)
|
if (!button->active) return;
|
||||||
{
|
|
||||||
rb->m_alreadySent = FALSE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rb->m_alreadySent = TRUE;
|
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() );
|
wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() );
|
||||||
event.SetInt( rb->GetSelection() );
|
event.SetInt( rb->GetSelection() );
|
||||||
@@ -166,7 +160,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl)
|
|||||||
|
|
||||||
void wxRadioBox::Init()
|
void wxRadioBox::Init()
|
||||||
{
|
{
|
||||||
m_alreadySent = FALSE;
|
|
||||||
m_needParent = TRUE;
|
m_needParent = TRUE;
|
||||||
m_acceptsFocus = TRUE;
|
m_acceptsFocus = TRUE;
|
||||||
|
|
||||||
@@ -184,7 +177,7 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
|
|||||||
!CreateBase( parent, id, pos, size, style, validator, name ))
|
!CreateBase( parent, id, pos, size, style, validator, name ))
|
||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxRadioBox creation failed") );
|
wxFAIL_MSG( wxT("wxRadioBox creation failed") );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widget = gtk_frame_new( title.mbc_str() );
|
m_widget = gtk_frame_new( title.mbc_str() );
|
||||||
@@ -478,7 +471,7 @@ void wxRadioBox::SetSelection( int n )
|
|||||||
|
|
||||||
GtkDisableEvents();
|
GtkDisableEvents();
|
||||||
|
|
||||||
gtk_toggle_button_set_state( button, 1 );
|
gtk_toggle_button_set_active( button, 1 );
|
||||||
|
|
||||||
GtkEnableEvents();
|
GtkEnableEvents();
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
// Author: Robert Roebling
|
// Author: Robert Roebling
|
||||||
// Id: $Id$
|
// Id: $Id$
|
||||||
// Copyright: (c) 1998 Robert Roebling
|
// Copyright: (c) 1998 Robert Roebling
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ extern wxCursor g_globalCursor;
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
static
|
static
|
||||||
void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButton *rb )
|
void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioButton *rb )
|
||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
@@ -48,6 +48,8 @@ void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButto
|
|||||||
|
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
|
if (!button->active) return;
|
||||||
|
|
||||||
wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
|
wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
|
||||||
event.SetInt( rb->GetValue() );
|
event.SetInt( rb->GetValue() );
|
||||||
event.SetEventObject( rb );
|
event.SetEventObject( rb );
|
||||||
@@ -72,7 +74,7 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
|
|||||||
!CreateBase( parent, id, pos, size, style, validator, name ))
|
!CreateBase( parent, id, pos, size, style, validator, name ))
|
||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxRadioButton creation failed") );
|
wxFAIL_MSG( wxT("wxRadioButton creation failed") );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasFlag(wxRB_GROUP))
|
if (HasFlag(wxRB_GROUP))
|
||||||
@@ -86,25 +88,25 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
|
|||||||
wxRadioButton *chief = (wxRadioButton*) NULL;
|
wxRadioButton *chief = (wxRadioButton*) NULL;
|
||||||
wxWindowList::Node *node = parent->GetChildren().GetLast();
|
wxWindowList::Node *node = parent->GetChildren().GetLast();
|
||||||
while (node)
|
while (node)
|
||||||
{
|
{
|
||||||
wxWindow *child = node->GetData();
|
wxWindow *child = node->GetData();
|
||||||
if (child->m_isRadioButton)
|
if (child->m_isRadioButton)
|
||||||
{
|
{
|
||||||
chief = (wxRadioButton*) child;
|
chief = (wxRadioButton*) child;
|
||||||
if (child->HasFlag(wxRB_GROUP)) break;
|
if (child->HasFlag(wxRB_GROUP)) break;
|
||||||
}
|
}
|
||||||
node = node->GetPrevious();
|
node = node->GetPrevious();
|
||||||
}
|
}
|
||||||
if (chief)
|
if (chief)
|
||||||
{
|
{
|
||||||
/* we are part of the group started by chief */
|
/* we are part of the group started by chief */
|
||||||
m_radioButtonGroup = gtk_radio_button_group( GTK_RADIO_BUTTON(chief->m_widget) );
|
m_radioButtonGroup = gtk_radio_button_group( GTK_RADIO_BUTTON(chief->m_widget) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* start a new group */
|
/* start a new group */
|
||||||
m_radioButtonGroup = (GSList*) NULL;
|
m_radioButtonGroup = (GSList*) NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, label.mbc_str() );
|
m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, label.mbc_str() );
|
||||||
@@ -159,7 +161,7 @@ void wxRadioButton::SetValue( bool val )
|
|||||||
|
|
||||||
if (val)
|
if (val)
|
||||||
{
|
{
|
||||||
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), TRUE );
|
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(m_widget), TRUE );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -209,11 +211,11 @@ void wxRadioButton::OnInternalIdle()
|
|||||||
if (GTK_TOGGLE_BUTTON(m_widget)->event_window && cursor.Ok())
|
if (GTK_TOGGLE_BUTTON(m_widget)->event_window && cursor.Ok())
|
||||||
{
|
{
|
||||||
/* I now set the cursor the anew in every OnInternalIdle call
|
/* I now set the cursor the anew in every OnInternalIdle call
|
||||||
as setting the cursor in a parent window also effects the
|
as setting the cursor in a parent window also effects the
|
||||||
windows above so that checking for the current cursor is
|
windows above so that checking for the current cursor is
|
||||||
not possible. */
|
not possible. */
|
||||||
|
|
||||||
gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
|
gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateWindowUI();
|
UpdateWindowUI();
|
||||||
|
@@ -106,7 +106,7 @@ void wxToggleButton::SetValue(bool state)
|
|||||||
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
||||||
(gpointer *)this);
|
(gpointer *)this);
|
||||||
|
|
||||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_widget), state);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_widget), state);
|
||||||
|
|
||||||
gtk_signal_connect(GTK_OBJECT(m_widget), "clicked",
|
gtk_signal_connect(GTK_OBJECT(m_widget), "clicked",
|
||||||
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
GTK_SIGNAL_FUNC(gtk_togglebutton_clicked_callback),
|
||||||
|
@@ -1333,6 +1333,14 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
|
|||||||
event.m_y = (wxCoord)gdk_event->y;
|
event.m_y = (wxCoord)gdk_event->y;
|
||||||
|
|
||||||
AdjustEventButtonState(event);
|
AdjustEventButtonState(event);
|
||||||
|
|
||||||
|
// wxListBox actually get mouse events from the item
|
||||||
|
|
||||||
|
if (win->m_isListBox)
|
||||||
|
{
|
||||||
|
event.m_x += widget->allocation.x;
|
||||||
|
event.m_y += widget->allocation.y;
|
||||||
|
}
|
||||||
|
|
||||||
// Some control don't have their own X window and thus cannot get
|
// Some control don't have their own X window and thus cannot get
|
||||||
// any events.
|
// any events.
|
||||||
@@ -1466,6 +1474,14 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
|
|||||||
|
|
||||||
AdjustEventButtonState(event);
|
AdjustEventButtonState(event);
|
||||||
|
|
||||||
|
// wxListBox actually get mouse events from the item
|
||||||
|
|
||||||
|
if (win->m_isListBox)
|
||||||
|
{
|
||||||
|
event.m_x += widget->allocation.x;
|
||||||
|
event.m_y += widget->allocation.y;
|
||||||
|
}
|
||||||
|
|
||||||
// Some control don't have their own X window and thus cannot get
|
// Some control don't have their own X window and thus cannot get
|
||||||
// any events.
|
// any events.
|
||||||
|
|
||||||
@@ -2366,6 +2382,7 @@ void wxWindowGTK::Init()
|
|||||||
|
|
||||||
m_isStaticBox = FALSE;
|
m_isStaticBox = FALSE;
|
||||||
m_isRadioButton = FALSE;
|
m_isRadioButton = FALSE;
|
||||||
|
m_isListBox = FALSE;
|
||||||
m_isFrame = FALSE;
|
m_isFrame = FALSE;
|
||||||
m_acceptsFocus = FALSE;
|
m_acceptsFocus = FALSE;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user