person could help me by running a small testprogram and sending
me the output.
+Added Calendar control.
+
+Added classes for recoding text (e.g. from Windows encoding to ISO encoding
+and for converting to and from Unicode).
+
Updated the 64-bit long class (a class that substitutes a 64-bit int
type on platforms which don't provide a native one).
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
+ void GtkDisableEvents();
+ void GtkEnableEvents();
GtkAdjustment *m_adjust;
float m_oldPos;
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
+ void GtkDisableEvents();
+ void GtkEnableEvents();
GtkAdjustment *m_adjust;
float m_oldPos;
panel = new wxPanel(m_notebook);
(void)new wxStaticBox( panel, -1, "Box around combobox",
wxPoint(5, 5), wxSize(150, 100));
- m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(20,20), wxSize(120,-1), 5, choices, wxCB_READONLY );
+ m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(20,25), wxSize(120,-1), 5, choices, wxCB_READONLY );
(void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
(void)new wxButton( panel, ID_COMBO_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) );
(void)new wxButton( panel, ID_COMBO_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) );
if ( TestDestroy() )
break;
+ wxString text;
+ text.Printf("[%u] Thread 0x%x here!!", m_count, GetId());
+
+ // create any type of command event here
wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, WORKER_EVENT );
event.SetInt( WORKER_EVENT );
+ event.SetString( text );
+
+ // send in a thread-safe way
wxPostEvent( m_frame, event );
+
+ // same as:
+ // m_frame->AddPendingEvent( event );
- // wxSleep() can't be called from non-GUI thread!
+ // wxSleep() can't be called from non-main thread!
wxThread::Sleep(1000);
}
{
wxMessageDialog dialog(this, "wxWindows multithreaded application sample\n"
"(c) 1998 Julian Smart, Guilhem Lavaux\n"
- "(c) 1999 Vadim Zeitlin",
+ "(c) 1999 Vadim Zeitlin\n"
+ "(c) 2000 Robert Roebling",
"About wxThread sample",
wxOK | wxICON_INFORMATION);
thread->Run();
}
-void MyFrame::OnWorkerEvent(wxCommandEvent& WXUNUSED(event))
+void MyFrame::OnWorkerEvent(wxCommandEvent& event)
{
- WriteText( "Got message from worker thread\n" );
+ WriteText( "Got message from worker thread: " );
+ WriteText( event.GetString() );
+ WriteText( "\n" );
}
{
if (wxTheApp->m_wakeUpTimerTag) return;
- wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 500, wxapp_wakeup_timerout_callback, (gpointer) NULL );
+ wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
}
void wxapp_uninstall_thread_wakeup()
gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget),
(int)(m_windowStyle & wxSP_WRAP) );
- gtk_signal_connect( GTK_OBJECT (m_adjust),
- "value_changed",
- (GtkSignalFunc) gtk_spinctrl_callback,
- (gpointer) this );
-
+ GtkEnableEvents();
m_parent->DoAddChild( this );
PostCreation();
return TRUE;
}
+void wxSpinCtrl::GtkDisableEvents()
+{
+ gtk_signal_disconnect_by_func( GTK_OBJECT(m_adjust),
+ GTK_SIGNAL_FUNC(gtk_spinctrl_callback),
+ (gpointer) this );
+
+}
+
+void wxSpinCtrl::GtkEnableEvents()
+{
+ gtk_signal_connect( GTK_OBJECT (m_adjust),
+ "value_changed",
+ GTK_SIGNAL_FUNC(gtk_spinctrl_callback),
+ (gpointer) this );
+}
+
int wxSpinCtrl::GetMin() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
else
{
// invalid number - set text as is (wxMSW compatible)
+ GtkDisableEvents();
gtk_entry_set_text( GTK_ENTRY(m_widget), value.mbc_str() );
+ GtkEnableEvents();
}
}
m_adjust->value = fpos;
+ GtkDisableEvents();
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
+ GtkEnableEvents();
}
void wxSpinCtrl::SetRange(int minVal, int maxVal)
GTK_STATE_NORMAL,
GTK_SHADOW_OUT,
dx, dy,
- win->m_width-dw, win->m_height-dh );
+ widget->allocation.width-dw, widget->allocation.height-dh );
return;
}
GTK_STATE_NORMAL,
GTK_SHADOW_IN,
dx, dy,
- win->m_width-dw, win->m_height-dh );
+ widget->allocation.width-dw, widget->allocation.height-dh );
return;
}
gdk_gc_set_foreground( gc, &widget->style->black );
gdk_draw_rectangle( widget->window, gc, FALSE,
dx, dy,
- win->m_width-dw-1, win->m_height-dh-1 );
+ widget->allocation.width-dw-1, widget->allocation.height-dh-1 );
gdk_gc_unref( gc );
return;
}
{
if (wxTheApp->m_wakeUpTimerTag) return;
- wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 500, wxapp_wakeup_timerout_callback, (gpointer) NULL );
+ wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
}
void wxapp_uninstall_thread_wakeup()
gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget),
(int)(m_windowStyle & wxSP_WRAP) );
- gtk_signal_connect( GTK_OBJECT (m_adjust),
- "value_changed",
- (GtkSignalFunc) gtk_spinctrl_callback,
- (gpointer) this );
-
+ GtkEnableEvents();
m_parent->DoAddChild( this );
PostCreation();
return TRUE;
}
+void wxSpinCtrl::GtkDisableEvents()
+{
+ gtk_signal_disconnect_by_func( GTK_OBJECT(m_adjust),
+ GTK_SIGNAL_FUNC(gtk_spinctrl_callback),
+ (gpointer) this );
+
+}
+
+void wxSpinCtrl::GtkEnableEvents()
+{
+ gtk_signal_connect( GTK_OBJECT (m_adjust),
+ "value_changed",
+ GTK_SIGNAL_FUNC(gtk_spinctrl_callback),
+ (gpointer) this );
+}
+
int wxSpinCtrl::GetMin() const
{
wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
else
{
// invalid number - set text as is (wxMSW compatible)
+ GtkDisableEvents();
gtk_entry_set_text( GTK_ENTRY(m_widget), value.mbc_str() );
+ GtkEnableEvents();
}
}
m_adjust->value = fpos;
+ GtkDisableEvents();
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
+ GtkEnableEvents();
}
void wxSpinCtrl::SetRange(int minVal, int maxVal)
GTK_STATE_NORMAL,
GTK_SHADOW_OUT,
dx, dy,
- win->m_width-dw, win->m_height-dh );
+ widget->allocation.width-dw, widget->allocation.height-dh );
return;
}
GTK_STATE_NORMAL,
GTK_SHADOW_IN,
dx, dy,
- win->m_width-dw, win->m_height-dh );
+ widget->allocation.width-dw, widget->allocation.height-dh );
return;
}
gdk_gc_set_foreground( gc, &widget->style->black );
gdk_draw_rectangle( widget->window, gc, FALSE,
dx, dy,
- win->m_width-dw-1, win->m_height-dh-1 );
+ widget->allocation.width-dw-1, widget->allocation.height-dh-1 );
gdk_gc_unref( gc );
return;
}