]> git.saurik.com Git - wxWidgets.git/commitdiff
controls sample tests a bit more
authorRobert Roebling <robert@roebling.de>
Thu, 29 Apr 1999 15:00:11 +0000 (15:00 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 29 Apr 1999 15:00:11 +0000 (15:00 +0000)
  combox doesn't send start-up event
  spinbutton looks correct now
  slider had vertic/horiz flags mixed up
  threads use gdk_enter_gui()
  dnd works a bit more often

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
samples/controls/controls.cpp
src/gtk/combobox.cpp
src/gtk/dnd.cpp
src/gtk/slider.cpp
src/gtk/spinbutt.cpp
src/gtk/textctrl.cpp
src/gtk/window.cpp
src/gtk1/combobox.cpp
src/gtk1/dnd.cpp
src/gtk1/slider.cpp
src/gtk1/spinbutt.cpp
src/gtk1/textctrl.cpp
src/gtk1/window.cpp
src/unix/threadpsx.cpp

index 5365385b03a545824f426951851da311460e4899..21de316c79e3b4f0968f8fc8f04b107b07bc157c 100644 (file)
@@ -697,9 +697,12 @@ void MyPanel::OnPageChanged( wxNotebookEvent &event )
 
 void MyPanel::OnListBox( wxCommandEvent &event )
 {
-    m_text->AppendText( "ListBox selection string is: " );
+    m_text->AppendText( "ListBox event selection string is: " );
     m_text->AppendText( event.GetString() );
     m_text->AppendText( "\n" );
+    m_text->AppendText( "ListBox control selection string is: " );
+    m_text->AppendText( m_listbox->GetStringSelection() );
+    m_text->AppendText( "\n" );
 }
 
 void MyPanel::OnListBoxDoubleClick( wxCommandEvent &event )
@@ -763,9 +766,12 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event )
 
 void MyPanel::OnChoice( wxCommandEvent &event )
 {
-    m_text->AppendText( "Choice selection string is: " );
+    m_text->AppendText( "Choice event selection string is: " );
     m_text->AppendText( event.GetString() );
     m_text->AppendText( "\n" );
+    m_text->AppendText( "Choice control selection string is: " );
+    m_text->AppendText( m_choice->GetStringSelection() );
+    m_text->AppendText( "\n" );
 }
 
 void MyPanel::OnChoiceButtons( wxCommandEvent &event )
@@ -813,9 +819,12 @@ void MyPanel::OnChoiceButtons( wxCommandEvent &event )
 
 void MyPanel::OnCombo( wxCommandEvent &event )
 {
-    m_text->AppendText( "ComboBox selection string is: " );
+    m_text->AppendText( "ComboBox event selection string is: " );
     m_text->AppendText( event.GetString() );
     m_text->AppendText( "\n" );
+    m_text->AppendText( "ComboBox control selection string is: " );
+    m_text->AppendText( m_combo->GetStringSelection() );
+    m_text->AppendText( "\n" );
 }
 
 void MyPanel::OnComboButtons( wxCommandEvent &event )
index 7c2a75604b99fd6f66286986714436ba7f4abbcb..5283eed694740326a2364208c08f5ec6d38cd81c 100644 (file)
@@ -117,6 +117,10 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
     for (int i = 0; i < n; i++)
     {
+        /* don't send first event, which GTK sends aways when
+          inserting the first item */
+        m_alreadySent = TRUE;
+    
         GtkWidget *list_item = gtk_list_item_new_with_label( choices[i].mbc_str() );
 
         m_clientDataList.Append( (wxObject*)NULL );
@@ -124,10 +128,10 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
         gtk_container_add( GTK_CONTAINER(list), list_item );
 
-        gtk_widget_show( list_item );
-
         gtk_signal_connect( GTK_OBJECT(list_item), "select",
-        GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+           GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+
+        gtk_widget_show( list_item );
     }
 
     m_parent->AddChild( this );
index 0bfbbc7bde00381df2262c101446d57182dbfe40..7bef3e8f1cf32202dfce327c5839becaab39c122 100644 (file)
@@ -613,7 +613,7 @@ source_drag_data_get  (GtkWidget          *WXUNUSED(widget),
                
                 gtk_selection_data_set( selection_data,
                                        selection_data->target,
-                                       8,   /* 8-bit */
+                                       8,   // 8-bit
                                        buffer, 
                                        data_size );
                                        
@@ -776,8 +776,11 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
     
     m_waiting = TRUE;
 
+    GdkAtom atom = gdk_atom_intern( "STRING", FALSE );
+//    wxPrintf( _T("atom id: %d.\n"), (int)atom );
+
     GtkTargetList *target_list = gtk_target_list_new( (GtkTargetEntry*) NULL, 0 );
-    gtk_target_list_add( target_list, gdk_atom_intern( "STRING", FALSE ), 0, 0 );
+    gtk_target_list_add( target_list, atom, 0, 0 );
     
     GdkEventMotion event;
     event.window = m_widget->window;
@@ -788,6 +791,7 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
     event.x = x;
     event.y = y;
     event.state = state;
+    event.time = GDK_CURRENT_TIME;
     
     /* GTK wants to know which button was pressed which caused the dragging */
     int button_number = 0;
@@ -816,7 +820,7 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
                                  0,
                                  0 );
     
-        while (m_waiting) wxYield();
+        while (m_waiting) gtk_main_iteration();;
     }
 
     g_blockEventsOnDrag = FALSE;
index 0fa63e404e4a713fdd57bd7820d146e74617ea9d..fb6b989378e4ce4404e33ef5beccb3a5c226fdda 100644 (file)
@@ -102,15 +102,15 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
     m_oldPos = 0.0;
 
     if (style & wxSL_VERTICAL)
-        m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
-    else
         m_widget = gtk_vscale_new( (GtkAdjustment *) NULL );
+    else
+        m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
     
     if (style & wxSL_LABELS)
         gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE );
     else
         gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
-  
+
     m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) );
   
     gtk_signal_connect( GTK_OBJECT(m_adjust), 
index 73f6493e81ba1801085bb6ec96184d5fce21f4d8..e5826709025fdd44b1699f1881073dd12f607f05 100644 (file)
@@ -90,7 +90,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
     m_needParent = TRUE;
 
     wxSize new_size = size;
-    new_size.x = 16;
+    new_size.x = 15;
     if (new_size.y == -1)
         new_size.y = 30;
 
@@ -185,7 +185,7 @@ void wxSpinButton::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
     wxCHECK_RET( (m_widget != NULL), _T("invalid spin button") );
 
-    m_width = 16;
+    m_width = 15;
     gtk_widget_set_usize( m_widget, m_width, m_height );
 }
 
index eab7ee1db8bbc225955e7df0d3575fc2bc719c49..4969acb19ff837bd21e6a14c146fe42398d453d4 100644 (file)
@@ -195,7 +195,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
 
     if (multi_line)
     {
-        gtk_widget_realize(m_text);
+//        gtk_widget_realize(m_text);
         gtk_widget_show(m_text);
     }
 
index a9b05116b303194cbb74c77d4dfb944d0bc1f8e9..584b8f808c02708041312239db235a711bdf562e 100644 (file)
@@ -2051,7 +2051,17 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
             gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x, m_y );
 
             if ((old_width != m_width) || (old_height != m_height))
-              gtk_widget_set_usize( m_widget, m_width, m_height );
+           {
+/*
+               GtkAllocation alloc;
+               alloc.x = m_x;
+               alloc.y = m_y;
+               alloc.width = m_width;
+               alloc.height = m_height;
+               gtk_widget_size_allocate( m_widget, &alloc );
+*/             
+                gtk_widget_set_usize( m_widget, m_width, m_height );
+           }
        }
     }
 
index 7c2a75604b99fd6f66286986714436ba7f4abbcb..5283eed694740326a2364208c08f5ec6d38cd81c 100644 (file)
@@ -117,6 +117,10 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
     for (int i = 0; i < n; i++)
     {
+        /* don't send first event, which GTK sends aways when
+          inserting the first item */
+        m_alreadySent = TRUE;
+    
         GtkWidget *list_item = gtk_list_item_new_with_label( choices[i].mbc_str() );
 
         m_clientDataList.Append( (wxObject*)NULL );
@@ -124,10 +128,10 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
         gtk_container_add( GTK_CONTAINER(list), list_item );
 
-        gtk_widget_show( list_item );
-
         gtk_signal_connect( GTK_OBJECT(list_item), "select",
-        GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+           GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
+
+        gtk_widget_show( list_item );
     }
 
     m_parent->AddChild( this );
index 0bfbbc7bde00381df2262c101446d57182dbfe40..7bef3e8f1cf32202dfce327c5839becaab39c122 100644 (file)
@@ -613,7 +613,7 @@ source_drag_data_get  (GtkWidget          *WXUNUSED(widget),
                
                 gtk_selection_data_set( selection_data,
                                        selection_data->target,
-                                       8,   /* 8-bit */
+                                       8,   // 8-bit
                                        buffer, 
                                        data_size );
                                        
@@ -776,8 +776,11 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
     
     m_waiting = TRUE;
 
+    GdkAtom atom = gdk_atom_intern( "STRING", FALSE );
+//    wxPrintf( _T("atom id: %d.\n"), (int)atom );
+
     GtkTargetList *target_list = gtk_target_list_new( (GtkTargetEntry*) NULL, 0 );
-    gtk_target_list_add( target_list, gdk_atom_intern( "STRING", FALSE ), 0, 0 );
+    gtk_target_list_add( target_list, atom, 0, 0 );
     
     GdkEventMotion event;
     event.window = m_widget->window;
@@ -788,6 +791,7 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
     event.x = x;
     event.y = y;
     event.state = state;
+    event.time = GDK_CURRENT_TIME;
     
     /* GTK wants to know which button was pressed which caused the dragging */
     int button_number = 0;
@@ -816,7 +820,7 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
                                  0,
                                  0 );
     
-        while (m_waiting) wxYield();
+        while (m_waiting) gtk_main_iteration();;
     }
 
     g_blockEventsOnDrag = FALSE;
index 0fa63e404e4a713fdd57bd7820d146e74617ea9d..fb6b989378e4ce4404e33ef5beccb3a5c226fdda 100644 (file)
@@ -102,15 +102,15 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
     m_oldPos = 0.0;
 
     if (style & wxSL_VERTICAL)
-        m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
-    else
         m_widget = gtk_vscale_new( (GtkAdjustment *) NULL );
+    else
+        m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
     
     if (style & wxSL_LABELS)
         gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE );
     else
         gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
-  
+
     m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) );
   
     gtk_signal_connect( GTK_OBJECT(m_adjust), 
index 73f6493e81ba1801085bb6ec96184d5fce21f4d8..e5826709025fdd44b1699f1881073dd12f607f05 100644 (file)
@@ -90,7 +90,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
     m_needParent = TRUE;
 
     wxSize new_size = size;
-    new_size.x = 16;
+    new_size.x = 15;
     if (new_size.y == -1)
         new_size.y = 30;
 
@@ -185,7 +185,7 @@ void wxSpinButton::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
     wxCHECK_RET( (m_widget != NULL), _T("invalid spin button") );
 
-    m_width = 16;
+    m_width = 15;
     gtk_widget_set_usize( m_widget, m_width, m_height );
 }
 
index eab7ee1db8bbc225955e7df0d3575fc2bc719c49..4969acb19ff837bd21e6a14c146fe42398d453d4 100644 (file)
@@ -195,7 +195,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
 
     if (multi_line)
     {
-        gtk_widget_realize(m_text);
+//        gtk_widget_realize(m_text);
         gtk_widget_show(m_text);
     }
 
index a9b05116b303194cbb74c77d4dfb944d0bc1f8e9..584b8f808c02708041312239db235a711bdf562e 100644 (file)
@@ -2051,7 +2051,17 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
             gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x, m_y );
 
             if ((old_width != m_width) || (old_height != m_height))
-              gtk_widget_set_usize( m_widget, m_width, m_height );
+           {
+/*
+               GtkAllocation alloc;
+               alloc.x = m_x;
+               alloc.y = m_y;
+               alloc.width = m_width;
+               alloc.height = m_height;
+               gtk_widget_size_allocate( m_widget, &alloc );
+*/             
+                gtk_widget_set_usize( m_widget, m_width, m_height );
+           }
        }
     }
 
index ddb603d1726509fbf1c68b059d6a8d77fe7505b2..d7dac9c864feb37215c1ece6295119bfe5f4a41a 100644 (file)
     #include <sched.h>
 #endif
 
+#ifdef __WXGTK12__
+#include "gtk/gtk.h"
+#endif
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -81,8 +85,10 @@ static pthread_t gs_tidMain;
 // the key for the pointer to the associated wxThread object
 static pthread_key_t gs_keySelf;
 
+#ifndef __WXGTK12__
 // this mutex must be acquired before any call to a GUI function
 static wxMutex *gs_mutexGui;
+#endif
 
 // ============================================================================
 // implementation
@@ -765,12 +771,15 @@ bool wxThreadModule::OnInit()
         return FALSE;
     }
 
+#ifndef __WXGTK12__
     gs_mutexGui = new wxMutex();
-
-    //wxThreadGuiInit();
+#endif
 
     gs_tidMain = pthread_self();
+
+#ifndef __WXGTK12__
     gs_mutexGui->Lock();
+#endif
 
     return TRUE;
 }
@@ -789,12 +798,12 @@ void wxThreadModule::OnExit()
         gs_allThreads[n]->Delete();
     }
 
+#ifndef __WXGTK12__
     // destroy GUI mutex
     gs_mutexGui->Unlock();
 
-    //wxThreadGuiExit();
-
     delete gs_mutexGui;
+#endif
 
     // and free TLD slot
     (void)pthread_key_delete(gs_keySelf);
@@ -806,12 +815,20 @@ void wxThreadModule::OnExit()
 
 void wxMutexGuiEnter()
 {
+#ifdef __WXGTK12__
+  gdk_threads_enter();
+#else
   gs_mutexGui->Lock();
+#endif
 }
 
 void wxMutexGuiLeave()
 {
+#ifdef __WXGTK12__
+  gdk_threads_leave();
+#else
   gs_mutexGui->Unlock();
+#endif
 }
 
 #endif