// implementation
void ApplyWidgetStyle();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void OnInternalIdle();
GtkWidget *m_widgetCheckbox;
GtkWidget *m_widgetLabel;
class wxRadioButton: public wxControl
{
-DECLARE_DYNAMIC_CLASS(wxRadioButton)
-
public:
- inline wxRadioButton() {}
- inline wxRadioButton( wxWindow *parent, wxWindowID id,
+ inline wxRadioButton() {}
+ inline wxRadioButton( wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxRadioButtonNameStr )
- {
- Create( parent, id, label, pos, size, style, validator, name );
- }
- bool Create(wxWindow *parent, wxWindowID id,
+ {
+ Create( parent, id, label, pos, size, style, validator, name );
+ }
+ bool Create(wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxRadioButtonNameStr );
- virtual void SetLabel(const wxString& label);
- virtual void SetValue(bool val);
- virtual bool GetValue() const;
- bool Enable( bool enable );
+ virtual void SetLabel(const wxString& label);
+ virtual void SetValue(bool val);
+ virtual bool GetValue() const;
+ bool Enable( bool enable );
// implementation
- GSList *m_radioButtonGroup;
- void ApplyWidgetStyle();
+ GSList *m_radioButtonGroup;
+ void ApplyWidgetStyle();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void OnInternalIdle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxRadioButton)
};
#endif
// implementation
void ApplyWidgetStyle();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void OnInternalIdle();
GtkWidget *m_widgetCheckbox;
GtkWidget *m_widgetLabel;
class wxRadioButton: public wxControl
{
-DECLARE_DYNAMIC_CLASS(wxRadioButton)
-
public:
- inline wxRadioButton() {}
- inline wxRadioButton( wxWindow *parent, wxWindowID id,
+ inline wxRadioButton() {}
+ inline wxRadioButton( wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxRadioButtonNameStr )
- {
- Create( parent, id, label, pos, size, style, validator, name );
- }
- bool Create(wxWindow *parent, wxWindowID id,
+ {
+ Create( parent, id, label, pos, size, style, validator, name );
+ }
+ bool Create(wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxRadioButtonNameStr );
- virtual void SetLabel(const wxString& label);
- virtual void SetValue(bool val);
- virtual bool GetValue() const;
- bool Enable( bool enable );
+ virtual void SetLabel(const wxString& label);
+ virtual void SetValue(bool val);
+ virtual bool GetValue() const;
+ bool Enable( bool enable );
// implementation
- GSList *m_radioButtonGroup;
- void ApplyWidgetStyle();
+ GSList *m_radioButtonGroup;
+ void ApplyWidgetStyle();
+ bool IsOwnGtkWindow( GdkWindow *window );
+ void OnInternalIdle();
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxRadioButton)
};
#endif
SetMenuBar(menu_bar);
// make a panel with some controls
- wxPanel *panel = new wxScrolledWindow(this, -1, wxPoint(0, 0),
+ wxPanel *panel = new wxPanel(this, -1, wxPoint(0, 0),
wxSize(400, 200), wxTAB_TRAVERSAL);
// check list box
#endif
#ifndef WX_PRECOMP
- #include "wx/wx.h"
+ #include "wx/window.h"
+ #include "wx/dialog.h"
+ #include "wx/frame.h"
#endif
#include <stdlib.h>
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnDrag;
+extern wxCursor g_globalCursor;
//-----------------------------------------------------------------------------
// "clicked"
gtk_widget_set_style( m_widgetLabel, m_widgetStyle );
}
+bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window )
+{
+ return (window == GTK_TOGGLE_BUTTON(m_widget)->event_window);
+}
+
+void wxCheckBox::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (GTK_TOGGLE_BUTTON(m_widget)->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. */
+
+ gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
+ }
+
+ UpdateWindowUI();
+}
+
#endif
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnDrag;
+extern wxCursor g_globalCursor;
//-----------------------------------------------------------------------------
// "clicked"
gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle );
}
+bool wxRadioButton::IsOwnGtkWindow( GdkWindow *window )
+{
+ return (window == GTK_TOGGLE_BUTTON(m_widget)->event_window);
+}
+
+void wxRadioButton::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (GTK_TOGGLE_BUTTON(m_widget)->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. */
+
+ gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
+ }
+
+ UpdateWindowUI();
+}
+
#endif
}
}
-/*
- wxPrintf( wxT("2) OnButtonPress from ") );
- if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
- wxPrintf( win->GetClassInfo()->GetClassName() );
- wxPrintf( wxT(".\n") );
-*/
-
wxEventType event_type = wxEVT_LEFT_DOWN;
if (gdk_event->button == 1)
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
gs_timeLastClick = gdk_event->time;
+/*
+ wxPrintf( wxT("2) OnButtonPress from ") );
+ if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
+ wxPrintf( win->GetClassInfo()->GetClassName() );
+ wxPrintf( wxT(".\n") );
+*/
+
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" );
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnDrag;
+extern wxCursor g_globalCursor;
//-----------------------------------------------------------------------------
// "clicked"
gtk_widget_set_style( m_widgetLabel, m_widgetStyle );
}
+bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window )
+{
+ return (window == GTK_TOGGLE_BUTTON(m_widget)->event_window);
+}
+
+void wxCheckBox::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (GTK_TOGGLE_BUTTON(m_widget)->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. */
+
+ gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
+ }
+
+ UpdateWindowUI();
+}
+
#endif
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnDrag;
+extern wxCursor g_globalCursor;
//-----------------------------------------------------------------------------
// "clicked"
gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle );
}
+bool wxRadioButton::IsOwnGtkWindow( GdkWindow *window )
+{
+ return (window == GTK_TOGGLE_BUTTON(m_widget)->event_window);
+}
+
+void wxRadioButton::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (GTK_TOGGLE_BUTTON(m_widget)->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. */
+
+ gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widget)->event_window, cursor.GetCursor() );
+ }
+
+ UpdateWindowUI();
+}
+
#endif
}
}
-/*
- wxPrintf( wxT("2) OnButtonPress from ") );
- if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
- wxPrintf( win->GetClassInfo()->GetClassName() );
- wxPrintf( wxT(".\n") );
-*/
-
wxEventType event_type = wxEVT_LEFT_DOWN;
if (gdk_event->button == 1)
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
gs_timeLastClick = gdk_event->time;
+/*
+ wxPrintf( wxT("2) OnButtonPress from ") );
+ if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
+ wxPrintf( win->GetClassInfo()->GetClassName() );
+ wxPrintf( wxT(".\n") );
+*/
+
if (win->GetEventHandler()->ProcessEvent( event ))
{
gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" );
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;
if (!g_captureWindow)
{
+ int x = event.m_x;
+ int y = event.m_y;
+ if (win->m_wxwindow)
+ {
+ GtkMyFixed *myfixed = GTK_MYFIXED(win->m_wxwindow);
+ x += myfixed->xoffset;
+ y += myfixed->yoffset;
+ }
+
wxNode *node = win->GetChildren().First();
while (node)
{
if (child->m_isStaticBox)
{
// wxStaticBox is transparent in the box itself
- int x = event.m_x;
- int y = event.m_y;
int xx1 = child->m_x;
int yy1 = child->m_y;
int xx2 = child->m_x + child->m_width;
else
{
if ((child->m_wxwindow == (GtkWidget*) NULL) &&
- (child->m_x <= event.m_x) &&
- (child->m_y <= event.m_y) &&
- (child->m_x+child->m_width >= event.m_x) &&
- (child->m_y+child->m_height >= event.m_y))
+ (child->m_x <= x) &&
+ (child->m_y <= y) &&
+ (child->m_x+child->m_width >= x) &&
+ (child->m_y+child->m_height >= y))
{
win = child;
event.m_x -= child->m_x;