]> git.saurik.com Git - wxWidgets.git/commitdiff
Small distrib changes,
authorRobert Roebling <robert@roebling.de>
Sun, 24 Oct 1999 16:45:01 +0000 (16:45 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 24 Oct 1999 16:45:01 +0000 (16:45 +0000)
  Use GTK's native insert for wxListBox,
  Compile pacthes for AIX,
  wxClipboard things,
  Ignore wxSIZE_AUTO flags in wxDialog and wxFrame,
  Ignore toolbar size in wxFrame::Get/SetClientSize

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

30 files changed:
Makefile.in
distrib/msw/tmake/filelist.txt
docs/gtk/changes.txt
include/wx/gtk/listbox.h
include/wx/gtk1/listbox.h
samples/controls/controls.cpp
samples/text/text.cpp
src/common/parser.y
src/common/unzip.c
src/gtk/checklst.cpp
src/gtk/choice.cpp
src/gtk/clipbrd.cpp
src/gtk/dialog.cpp
src/gtk/dnd.cpp
src/gtk/frame.cpp
src/gtk/listbox.cpp
src/gtk/minifram.cpp
src/gtk1/checklst.cpp
src/gtk1/choice.cpp
src/gtk1/clipbrd.cpp
src/gtk1/dialog.cpp
src/gtk1/dnd.cpp
src/gtk1/frame.cpp
src/gtk1/listbox.cpp
src/gtk1/minifram.cpp
src/iodbc/connect.c
src/iodbc/info.c
src/unix/dialup.cpp
src/unix/gsocket.c
utils/wxPython/lib/floatbar.py

index 3a0bc3c7bf0d2f98c35bdf21264701cecba1b728..bda488d282bbe210a89c5f07b2628bcf3458ef69 100644 (file)
@@ -1,5 +1,5 @@
 #
 #
-# This file was automatically generated by tmake at 18:37, 1999/10/22
+# This file was automatically generated by tmake at 13:52, 1999/10/23
 # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
 
 #
 # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
 
 #
@@ -187,6 +187,7 @@ WX_HEADERS = \
                confbase.h \
                config.h \
                control.h \
                confbase.h \
                config.h \
                control.h \
+               ctrlsub.h \
                cursor.h \
                dataobj.h \
                date.h \
                cursor.h \
                dataobj.h \
                date.h \
index 522a7118a6a8c6ef5346adc6d0667ee6f69aada2..aa6741eacd5e74aec37144e1796448a8e155786a 100644 (file)
@@ -444,6 +444,7 @@ combobox.h  W
 confbase.h     W
 config.h       W
 control.h      W
 confbase.h     W
 config.h       W
 control.h      W
+ctrlsub.h      W
 cursor.h       W
 dataobj.h      W
 date.h W       B
 cursor.h       W
 dataobj.h      W
 date.h W       B
index d82d9eba548cbec9399bf2cabf1b3a96d31c4aec..994e93fc20259abc2ec3e44d13f4950ba610c16c 100644 (file)
@@ -17,14 +17,19 @@ Support for GTK 1.0 has been dropped. This version has
 been tested with GTK 1.2.3 and GTK 1.2.6 - it is known
 not work with some other versions.
 
 been tested with GTK 1.2.3 and GTK 1.2.6 - it is known
 not work with some other versions.
 
-wxChoice can now handle only either void client data
-(which it will not delete on destruction) or client
-data of the wxClientData type (which it will delete),
+Rewritten the support for multiple-format Drag'n'Drop and
+clipboard under both GTK and MSW. There are probably some
+problems here and there left.
+
+wxListBox and wxChoice can now handle only either void 
+client data (which it will not delete on destruction) or 
+client data of the wxClientData type (which it will delete),
 instead of both at the same time. The same will happen
 instead of both at the same time. The same will happen
-to wxListBox and wxComboBox some time.
+to wxComboBox some time. Also, wxListBox can now sort its
+items.
 
 Many build fixes for various platforms have been applied,
 
 Many build fixes for various platforms have been applied,
-try again, poor HP-UX and *BSD users, but don't reckon
+try again, poor AIX, HP-UX and *BSD users, but don't reckon
 with immediate success. Actually, when using GNU compilers,
 your chances are quite good.
 
 with immediate success. Actually, when using GNU compilers,
 your chances are quite good.
 
@@ -78,7 +83,15 @@ wxSlider, wxWindow, wxScrollBar now emit the correct events
 for scrolling (like page up, line up etc) instead of just
 "thumb-track" as before.
 
 for scrolling (like page up, line up etc) instead of just
 "thumb-track" as before.
 
-Corrected bug in Reparent() code.
+Corrected Reparent() code.
+
+Corrected key accelerator code for toplevel child windows.
+
+Corrected cursor handling in a number of special cases.
+
+wxGLCanvas now waits until all expose events have been sent
+and then emits its own redraw event. Also removed flicker
+for wxGLCanvas and in some other places.
 
 A handler to read PCX file (in most variants) has been added.
 
 
 A handler to read PCX file (in most variants) has been added.
 
index 10b0107526e0372d481a7e7fe0912856855cdfef..8038c9c0abc6a154539704c6041547f92448808e 100644 (file)
@@ -76,14 +76,10 @@ public:
 
     // implementation from now on
 
 
     // implementation from now on
 
-#if wxUSE_DRAG_AND_DROP
-    void SetDropTarget( wxDropTarget *dropTarget );
-#endif
-
-    void DisableEvents();
-    void EnableEvents();
-    void AppendWithoutSorting( const wxString &item );
-    int GetIndex( GtkWidget *item ) const;
+    void GtkDisableEvents();
+    void GtkEnableEvents();
+    void GtkAddItem( const wxString &item, int pos=-1 );
+    int GtkGetIndex( GtkWidget *item ) const;
     GtkWidget *GetConnectWidget();
     bool IsOwnGtkWindow( GdkWindow *window );
     void ApplyWidgetStyle();
     GtkWidget *GetConnectWidget();
     bool IsOwnGtkWindow( GdkWindow *window );
     void ApplyWidgetStyle();
@@ -94,7 +90,7 @@ public:
 #endif // wxUSE_TOOLTIPS
 
     GtkList   *m_list;
 #endif // wxUSE_TOOLTIPS
 
     GtkList   *m_list;
-    wxList     m_clientData;
+    wxList     m_clientList;
 
 #if wxUSE_CHECKLISTBOX
     bool       m_hasCheckBoxes;
 
 #if wxUSE_CHECKLISTBOX
     bool       m_hasCheckBoxes;
index 10b0107526e0372d481a7e7fe0912856855cdfef..8038c9c0abc6a154539704c6041547f92448808e 100644 (file)
@@ -76,14 +76,10 @@ public:
 
     // implementation from now on
 
 
     // implementation from now on
 
-#if wxUSE_DRAG_AND_DROP
-    void SetDropTarget( wxDropTarget *dropTarget );
-#endif
-
-    void DisableEvents();
-    void EnableEvents();
-    void AppendWithoutSorting( const wxString &item );
-    int GetIndex( GtkWidget *item ) const;
+    void GtkDisableEvents();
+    void GtkEnableEvents();
+    void GtkAddItem( const wxString &item, int pos=-1 );
+    int GtkGetIndex( GtkWidget *item ) const;
     GtkWidget *GetConnectWidget();
     bool IsOwnGtkWindow( GdkWindow *window );
     void ApplyWidgetStyle();
     GtkWidget *GetConnectWidget();
     bool IsOwnGtkWindow( GdkWindow *window );
     void ApplyWidgetStyle();
@@ -94,7 +90,7 @@ public:
 #endif // wxUSE_TOOLTIPS
 
     GtkList   *m_list;
 #endif // wxUSE_TOOLTIPS
 
     GtkList   *m_list;
-    wxList     m_clientData;
+    wxList     m_clientList;
 
 #if wxUSE_CHECKLISTBOX
     bool       m_hasCheckBoxes;
 
 #if wxUSE_CHECKLISTBOX
     bool       m_hasCheckBoxes;
index 2336b8c823bec8a441538b6858e64ebef7bd518b..033f8af167507c0cbddd93e7a16d28c98f337e97 100644 (file)
@@ -557,7 +557,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
   // layout constraints
 
   panel = new wxPanel(m_notebook);
   // layout constraints
 
   panel = new wxPanel(m_notebook);
-  panel->SetAutoLayout( true );
+  panel->SetAutoLayout( TRUE );
 
   wxLayoutConstraints *c;
   c = new wxLayoutConstraints;
 
   wxLayoutConstraints *c;
   c = new wxLayoutConstraints;
@@ -583,7 +583,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
   // sizer
 
   panel = new wxPanel(m_notebook);
   // sizer
 
   panel = new wxPanel(m_notebook);
-  panel->SetAutoLayout( true );
+  panel->SetAutoLayout( TRUE );
 
   wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
 
 
   wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
 
index bac4d8c3e96d4122ac6445967fa4aba2b2153b76..4d26e23e961bc83345ec2b56a547d6b32f2f9114 100644 (file)
@@ -504,7 +504,7 @@ void MyPanel::DoPasteFromClipboard()
     {
         *m_log << "Clipboard supports requested format.\n";
 
     {
         *m_log << "Clipboard supports requested format.\n";
 
-        if (wxTheClipboard->GetData( &data ))
+        if (wxTheClipboard->GetData( data ))
         {
             *m_log << "Successfully retrieved data from the clipboard.\n";
             *m_multitext << data.GetText() << "\n";
         {
             *m_log << "Successfully retrieved data from the clipboard.\n";
             *m_multitext << data.GetText() << "\n";
index ceed318c739e593ca2d91855d1dbe501d9209844..a4ff9ccc50c5389f014917b7ef3e6a4fac7b95ba 100644 (file)
@@ -167,7 +167,7 @@ void yyerror(char *s)
 #ifndef yywrap
 #define yywrap() 1
 #endif
 #ifndef yywrap
 #define yywrap() 1
 #endif
-#else if !defined(__alpha___) && !defined(__alpha) && !defined(__ultrix)
+#elif !defined(__alpha___) && !defined(__alpha) && !defined(__ultrix)
 int yywrap() { return 1; }
 #endif
 #elif defined(__WX_SETUP_H__)
 int yywrap() { return 1; }
 #endif
 #elif defined(__WX_SETUP_H__)
index 54ced0c33b4b20dd1e3adc318d540eb8b7686b58..ea45682d966f2eabe5ce5b08c93b9adf3e9e98f8 100644 (file)
@@ -4,9 +4,14 @@
    Read unzip.h for more info
 */
 
    Read unzip.h for more info
 */
 
+#if 0   
+for what compiler ?
 #if !defined(__VISAGECPP__)
 #   pragma warning(disable:4001)    /* non standard extension used: single line comment */
 #endif
 #if !defined(__VISAGECPP__)
 #   pragma warning(disable:4001)    /* non standard extension used: single line comment */
 #endif
+#endif
+
+
 #include "wx/setup.h"
 
 #if wxUSE_ZLIB && wxUSE_ZIPSTREAM
 #include "wx/setup.h"
 
 #if wxUSE_ZLIB && wxUSE_ZIPSTREAM
index de5d9618595cb22fc6c2b4ab90b0bb3e98b06875..8d1d92f1f33e9614f1a2f42a4236f3a47731075c 100644 (file)
@@ -54,7 +54,7 @@ bool wxCheckListBox::IsChecked( int index ) const
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
-        return (str[1] == wxT('X'));
+        return (str.GetChar(1) == wxT('X'));
     }
 
     wxFAIL_MSG(wxT("wrong checklistbox index"));
     }
 
     wxFAIL_MSG(wxT("wrong checklistbox index"));
@@ -73,7 +73,7 @@ void wxCheckListBox::Check( int index, bool check )
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
-        if (check == (str[1] == wxT('X'))) return;
+        if (check == (str.GetChar(1) == wxT('X'))) return;
 
         if (check)
             str.SetChar( 1, wxT('X') );
 
         if (check)
             str.SetChar( 1, wxT('X') );
index e1868bbd1c1f70d37fccd8ce0d6e1eec0a6067b2..b772e750a81ade70652d3fdf650423f1fc4325e8 100644 (file)
@@ -409,7 +409,7 @@ size_t wxChoice::AppendHelper(GtkWidget *menu, const wxString& item)
 
         // don't call wxChoice::GetCount() from here because it doesn't work
         // if we're called from ctor (and GtkMenuShell is still NULL)
 
         // don't call wxChoice::GetCount() from here because it doesn't work
         // if we're called from ctor (and GtkMenuShell is still NULL)
-        index = m_clientList.GetCount();
+        index = m_clientList.GetCount() - 1;
     }
 
     if (GTK_WIDGET_REALIZED(m_widget))
     }
 
     if (GTK_WIDGET_REALIZED(m_widget))
index 186f15bcf4b0840c3b0b6c23aeccf06924ca9019..1800ae26852148a26ad9e7d8b28b5026a0d2c5bb 100644 (file)
@@ -94,6 +94,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
         clipboard->m_waiting = FALSE;
         return;
     }
         clipboard->m_waiting = FALSE;
         return;
     }
+    
+/*
+    wxDataFormat clip( selection_data->selection );
+    wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
+*/
   
     // the atoms we received, holding a list of targets (= formats) 
     GdkAtom *atoms = (GdkAtom *)selection_data->data;
   
     // the atoms we received, holding a list of targets (= formats) 
     GdkAtom *atoms = (GdkAtom *)selection_data->data;
@@ -101,7 +106,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
     for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
     {
         wxDataFormat format( atoms[i] );
     for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
     {
         wxDataFormat format( atoms[i] );
-      
+       
+/*
+       wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
+*/
+
         if (format == clipboard->m_targetRequested)
         {
             clipboard->m_waiting = FALSE;
         if (format == clipboard->m_targetRequested)
         {
             clipboard->m_waiting = FALSE;
@@ -199,6 +208,8 @@ selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
         /* the clipboard is no longer in our hands. we can the delete clipboard data. */
         if (wxTheClipboard->m_data)
         {
         /* the clipboard is no longer in our hands. we can the delete clipboard data. */
         if (wxTheClipboard->m_data)
         {
+           wxLogDebug( wxT("wxClipboard will get cleared" ) );
+           
             delete wxTheClipboard->m_data;
             wxTheClipboard->m_data = (wxDataObject*) NULL;
         }
             delete wxTheClipboard->m_data;
             wxTheClipboard->m_data = (wxDataObject*) NULL;
         }
@@ -398,32 +409,23 @@ bool wxClipboard::AddData( wxDataObject *data )
   
     m_data = data;
 
   
     m_data = data;
 
-    /* This should happen automatically, but to be on the safe side */
-    m_ownsClipboard = FALSE;
-    m_ownsPrimarySelection = FALSE;
-    
     /* get formats from wxDataObjects */
     wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
     m_data->GetAllFormats( array );
     /* get formats from wxDataObjects */
     wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
     m_data->GetAllFormats( array );
+
+    /* primary selection or clipboard */
+    GdkAtom clipboard = m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
+                                     : g_clipboardAtom;
+
     
     for (size_t i = 0; i < m_data->GetFormatCount(); i++)
     {
     
     for (size_t i = 0; i < m_data->GetFormatCount(); i++)
     {
-        GdkAtom atom = array[i];
-        wxLogDebug( wxT("Clipboard Supported atom %s"), gdk_atom_name( atom ) );
-
-        /* Add handlers if someone requests data. We currently always
-           offer data to the clipboard and the primary selection. Maybe
-           we should make that depend on the usePrimary flag */
-           
-        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), 
-                              GDK_SELECTION_PRIMARY,
-                              atom, 
-                              0 );  /* what is info ? */
-                             
-        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), 
-                              g_clipboardAtom,
-                              atom, 
-                              0 );  /* what is info ? */
+        wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() );
+
+        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
+                                 clipboard,
+                                  array[i], 
+                                  0 );  /* what is info ? */
     }
 
     delete[] array;
     }
 
     delete[] array;
@@ -434,41 +436,26 @@ bool wxClipboard::AddData( wxDataObject *data )
                         (gpointer) NULL );
 
 #if wxUSE_THREADS
                         (gpointer) NULL );
 
 #if wxUSE_THREADS
-        /* disable GUI threads */
-        wxapp_uninstall_thread_wakeup();
+    /* disable GUI threads */
+    wxapp_uninstall_thread_wakeup();
 #endif
     
     /* Tell the world we offer clipboard data */
 #endif
     
     /* Tell the world we offer clipboard data */
-    if (!gtk_selection_owner_set( m_clipboardWidget, 
-                                  g_clipboardAtom,
-                                  GDK_CURRENT_TIME ))
-    {
-#if wxUSE_THREADS
-        /* re-enable GUI threads */
-        wxapp_install_thread_wakeup();
-#endif
-        return FALSE;
-    }
-    m_ownsClipboard = TRUE;
+    bool res = (gtk_selection_owner_set( m_clipboardWidget,
+                                         clipboard,
+                                         GDK_CURRENT_TIME ));
     
     
-    if (!gtk_selection_owner_set( m_clipboardWidget, 
-                                  GDK_SELECTION_PRIMARY,
-                                  GDK_CURRENT_TIME ))
-    {  
-#if wxUSE_THREADS
-        /* re-enable GUI threads */
-        wxapp_install_thread_wakeup();
-#endif
-        return FALSE;
-    }
-    m_ownsPrimarySelection = TRUE;
+    if (m_usePrimary)
+        m_ownsPrimarySelection = res;
+    else
+        m_ownsClipboard = res;
     
 #if wxUSE_THREADS
     /* re-enable GUI threads */
     wxapp_install_thread_wakeup();
 #endif
         
     
 #if wxUSE_THREADS
     /* re-enable GUI threads */
     wxapp_install_thread_wakeup();
 #endif
         
-    return TRUE;
+    return res;
 }
 
 void wxClipboard::Close()
 }
 
 void wxClipboard::Close()
@@ -530,11 +517,36 @@ bool wxClipboard::GetData( wxDataObject& data )
     {
         wxDataFormat format( array[i] );
     
     {
         wxDataFormat format( array[i] );
     
-        wxLogDebug( wxT("wxClipboard::GetData: request format %s"), format.GetId().c_str() );
+        wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() );
     
         /* is data supported by clipboard ? */
     
         /* is data supported by clipboard ? */
-        if (!IsSupported( format ))
-           continue;
+       
+        /* store requested format to be asked for by callbacks */
+        m_targetRequested = format;
+  
+        wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
+    
+        m_formatSupported = FALSE;
+  
+       /* perform query. this will set m_formatSupported to 
+          TRUE if m_targetRequested is supported.
+          also, we have to wait for the "answer" from the 
+          clipboard owner which is an asynchronous process.
+          therefore we set m_waiting = TRUE here and wait
+          until the callback "targets_selection_received" 
+          sets it to FALSE */
+
+        m_waiting = TRUE;
+
+        gtk_selection_convert( m_targetsWidget,
+                           m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
+                                        : g_clipboardAtom, 
+                           g_targetsAtom,
+                           GDK_CURRENT_TIME );
+
+        while (m_waiting) gtk_main_iteration();
+    
+        if (!m_formatSupported) continue;
     
         /* store pointer to data object to be filled up by callbacks */
         m_receivedData = &data;
     
         /* store pointer to data object to be filled up by callbacks */
         m_receivedData = &data;
@@ -576,6 +588,8 @@ bool wxClipboard::GetData( wxDataObject& data )
         return TRUE;
     }
   
         return TRUE;
     }
   
+    wxLogDebug( wxT("wxClipboard::GetData: format not found") );
+    
     /* return failure */
     delete[] array;
     return FALSE;
     /* return failure */
     delete[] array;
     return FALSE;
index 7cf4f752b5802972d2807c6d7b2ed7425bf13cb8..e51c6cb3db7d0c63c23b6fc8cf73f078ae6e49b8 100644 (file)
@@ -463,6 +463,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
         m_height = height;
     }
 
         m_height = height;
     }
 
+/*
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
@@ -472,6 +473,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
     {
        if (height == -1) m_height = 26;
     }
     {
        if (height == -1) m_height = 26;
     }
+*/
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
index 6ab59511ca48ae2371c2452ccb480619f6526115..fbd0ec5b86f7cee4c9b943c7449ef3455c7cc298 100644 (file)
@@ -378,10 +378,10 @@ wxDragResult wxDropTarget::OnData( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
                                    wxDragResult def )
 {
     if (!m_dataObject)
                                    wxDragResult def )
 {
     if (!m_dataObject)
-        return FALSE;
+        return wxDragNone;
 
     if (GetMatchingPair() == (GdkAtom) 0)
 
     if (GetMatchingPair() == (GdkAtom) 0)
-        return FALSE;
+        return wxDragNone;
 
     return GetData() ? def : wxDragNone;
 }
 
     return GetData() ? def : wxDragNone;
 }
@@ -401,8 +401,7 @@ GdkAtom wxDropTarget::GetMatchingPair()
         wxDataFormat format( formatAtom );
 
 #ifdef __WXDEBUG__
         wxDataFormat format( formatAtom );
 
 #ifdef __WXDEBUG__
-        char *name = gdk_atom_name( formatAtom );
-        wxLogDebug("Drop target: drag has format: %s", name ? name : "unnamed");
+        wxLogDebug("Drop target: drag has format: %s", format.GetId().c_str() );
 #endif // Debug
 
         if (m_dataObject->IsSupportedFormat( format ))
 #endif // Debug
 
         if (m_dataObject->IsSupportedFormat( format ))
index ab29ed1cb3a88cd0aea3830e1645897e048ba520..7cbd3ec7d2017da9a94599ea1369acbb8b075457 100644 (file)
@@ -543,6 +543,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
         m_height = height;
     }
 
         m_height = height;
     }
 
+/*
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
@@ -552,6 +553,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
     {
        if (height == -1) m_height = 26;
     }
     {
        if (height == -1) m_height = 26;
     }
+*/
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
@@ -613,6 +615,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
 
 #if wxUSE_TOOLBAR
         /* tool bar */
 
 #if wxUSE_TOOLBAR
         /* tool bar */
+/*
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
@@ -624,6 +627,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
             else
                 (*height) -= wxPLACE_HOLDER;
         }
             else
                 (*height) -= wxPLACE_HOLDER;
         }
+*/
 #endif
 
         /* mini edge */
 #endif
 
         /* mini edge */
@@ -639,6 +643,8 @@ void wxFrame::DoSetClientSize( int width, int height )
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
+    printf( "set size %d %d\n", width, height );
+
         /* menu bar */
         if (m_frameMenuBar)
         {
         /* menu bar */
         if (m_frameMenuBar)
         {
@@ -655,6 +661,7 @@ void wxFrame::DoSetClientSize( int width, int height )
 
 #if wxUSE_TOOLBAR
         /* tool bar */
 
 #if wxUSE_TOOLBAR
         /* tool bar */
+/*
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
@@ -666,6 +673,7 @@ void wxFrame::DoSetClientSize( int width, int height )
             else
                 height += wxPLACE_HOLDER;
         }
             else
                 height += wxPLACE_HOLDER;
         }
+*/
 #endif
 
     DoSetSize( -1, -1, width + m_miniEdge*2, height  + m_miniEdge*2 + m_miniTitle, 0 );
 #endif
 
     DoSetSize( -1, -1, width + m_miniEdge*2, height  + m_miniEdge*2 + m_miniTitle, 0 );
@@ -729,7 +737,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
         }
 
 #if wxUSE_TOOLBAR
         }
 
 #if wxUSE_TOOLBAR
-        if (m_frameToolBar)
+        if ((m_frameToolBar) &&
+           (m_frameToolBar->m_widget->parent == m_mainWidget))
         {
             int xx = m_miniEdge;
             int yy = m_miniEdge + m_miniTitle;
         {
             int xx = m_miniEdge;
             int yy = m_miniEdge + m_miniTitle;
@@ -745,8 +754,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
            if (m_toolBarDetached) hh = wxPLACE_HOLDER;
             m_frameToolBar->m_x = xx;
             m_frameToolBar->m_y = yy;
            if (m_toolBarDetached) hh = wxPLACE_HOLDER;
             m_frameToolBar->m_x = xx;
             m_frameToolBar->m_y = yy;
-            /* m_frameToolBar->m_height = hh;   don't change the toolbar's height */
-            m_frameToolBar->m_width = ww;
+            /* m_frameToolBar->m_height = hh;   don't change the toolbar's reported size
+               m_frameToolBar->m_width = ww; */
             gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
                                   m_frameToolBar->m_widget,
                                   xx, yy, ww, hh );
             gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
                                   m_frameToolBar->m_widget,
                                   xx, yy, ww, hh );
index 82b5bb21c0f4a16fff4acc8b0cc41e5661895680..ae049dada82b7515e71eb127d0c798a9d635275c 100644 (file)
@@ -144,7 +144,7 @@ gtk_listbox_button_press_callback( GtkWidget *widget,
 
     if (!listbox->m_hasVMT) return FALSE;
 
 
     if (!listbox->m_hasVMT) return FALSE;
 
-    int sel = listbox->GetIndex( widget );
+    int sel = listbox->GtkGetIndex( widget );
 
 #if wxUSE_CHECKLISTBOX
     if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
 
 #if wxUSE_CHECKLISTBOX
     if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
@@ -182,7 +182,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis
 
     if (gdk_event->keyval != ' ') return FALSE;
 
 
     if (gdk_event->keyval != ' ') return FALSE;
 
-    int sel = listbox->GetIndex( widget );
+    int sel = listbox->GtkGetIndex( widget );
 
     wxCheckListBox *clb = (wxCheckListBox *)listbox;
 
 
     wxCheckListBox *clb = (wxCheckListBox *)listbox;
 
@@ -322,53 +322,8 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
 
     for (int i = 0; i < n; i++)
     {
 
     for (int i = 0; i < n; i++)
     {
+        // add one by one
         DoAppend(choices[i]);
         DoAppend(choices[i]);
-
-#if 0
-        wxString str(choices[i]);
-
-#if wxUSE_CHECKLISTBOX
-        if (m_hasCheckBoxes)
-        {
-            str.Prepend(CHECKBOX_STRING);
-        }
-#endif // wxUSE_CHECKLISTBOX
-
-        GtkWidget *list_item = gtk_list_item_new_with_label( str.mbc_str() );
-
-        gtk_container_add( GTK_CONTAINER(m_list), list_item );
-
-        gtk_signal_connect( GTK_OBJECT(list_item), "select",
-          GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
-
-        if (style & wxLB_MULTIPLE)
-            gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
-              GTK_SIGNAL_FUNC(gtk_listitem_deselect_callback), (gpointer)this );
-
-        gtk_signal_connect( GTK_OBJECT(list_item),
-                            "button_press_event",
-                            (GtkSignalFunc)gtk_listbox_button_press_callback,
-                            (gpointer) this );
-
-        gtk_signal_connect_after( GTK_OBJECT(list_item),
-                            "button_release_event",
-                            (GtkSignalFunc)gtk_listbox_button_release_callback,
-                            (gpointer) this );
-
-#if wxUSE_CHECKLISTBOX
-        if (m_hasCheckBoxes)
-        {
-            gtk_signal_connect( GTK_OBJECT(list_item),
-                            "key_press_event",
-                            (GtkSignalFunc)gtk_listbox_key_press_callback,
-                            (gpointer)this );
-        }
-#endif // wxUSE_CHECKLISTBOX
-
-        ConnectWidget( list_item );
-
-        gtk_widget_show( list_item );
-#endif // 0
     }
 
     m_parent->DoAddChild( this );
     }
 
     m_parent->DoAddChild( this );
@@ -393,129 +348,73 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
-    // code elsewhere supposes we have as many items in m_clientData as items
+    // VZ: notice that InsertItems knows nothing about sorting, so calling it
+    //     from outside (and not from our own Append) is likely to break
+    //     everything
+
+    // code elsewhere supposes we have as many items in m_clientList as items
     // in the listbox
     // in the listbox
-    wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
+    wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
                   wxT("bug in client data management") );
 
     GList *children = m_list->children;
     int length = g_list_length(children);
                   wxT("bug in client data management") );
 
     GList *children = m_list->children;
     int length = g_list_length(children);
+                 
     wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
 
     wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
 
-    // VZ: it seems that GTK 1.0.6 doesn't has a function to insert an item
-    //     into a listbox at the given position, this is why we first delete
-    //     all items after this position, then append these items and then
-    //     reappend back the old ones.
-
-    // VZ: notice that InsertItems knows nothing about sorting, so calling it
-    //     from outside (and not from our own Append) is likely to break
-    //     everything
-
     size_t nItems = items.GetCount();
 
     size_t nItems = items.GetCount();
 
-    size_t n; // loop var
-
-    // optimise for this trivial case
-    if ( pos == length )
+    if (pos == length)
     {
     {
-        // no need to do anything complicated
-        for ( n = 0; n < nItems; n++ )
+        for ( size_t n = 0; n < nItems; n++ )
         {
         {
-            AppendWithoutSorting(items[n]);
+            GtkAddItem( items[n] );
 
 
-            m_clientData.Append((wxObject *)NULL);
+            m_clientList.Append((wxObject *)NULL);
         }
         }
-
-        wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
-                      wxT("bug in client data management") );
-
-        return;
     }
     }
-
-    // remove the old items
-    wxArrayString deletedLabels;
-#if wxUSE_CHECKLISTBOX
-    wxArrayInt deletedChecks;
-#endif
-
-    GList *child = g_list_nth( children, pos );
-    for ( n = 0; child != NULL; n++, child = child->next )
+    else
     {
     {
-        // save label
-        GtkBin *bin = GTK_BIN( child->data );
-        GtkLabel *label = GTK_LABEL( bin->child );
-
-        wxString str(GET_REAL_LABEL(label->label),*wxConvCurrent);
-        deletedLabels.Add(str);
-
-#if wxUSE_CHECKLISTBOX
-        // save check state
-        if ( m_hasCheckBoxes )
+        wxNode *node = m_clientList.Nth( pos );
+        for ( size_t n = 0; n < nItems; n++ )
         {
         {
-            deletedChecks.Add(((wxCheckListBox *)this)->IsChecked(pos + n));
-        }
-#endif // wxUSE_CHECKLISTBOX
-    }
-
-    size_t nDeletedCount = n;
-
-    gtk_list_clear_items( m_list, pos, length );
-
-    // now append the new items
-    wxNode *node = m_clientData.Item(pos);
-    for ( n = 0; n < nItems; n++ )
-    {
-        AppendWithoutSorting(items[n]);
-
-        // make sure we have the correct number of items in this list
-        m_clientData.Insert(node, (wxObject *)NULL);
-    }
-
-    // and append the old items too
-    pos += nItems;  // now the indices are shifted
-    for ( n = 0; n < nDeletedCount; n++ )
-    {
-        AppendWithoutSorting(deletedLabels[n]);
-
-        // the data is already correct - the indices have been rearranged in
-        // such manner that we now correspond to the same node as before
+            GtkAddItem( items[n], pos+n );
 
 
-#if wxUSE_CHECKLISTBOX
-        if ( m_hasCheckBoxes )
-        {
-            ((wxCheckListBox *)this)->Check(pos + n, (bool)deletedChecks[n]);
+            m_clientList.Insert( node, (wxObject *)NULL );
         }
         }
-#endif // wxUSE_CHECKLISTBOX
     }
 
     }
 
-    wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
-                  wxT("bug in client data management") );
+    wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
+                      wxT("bug in client data management") );
 }
 
 int wxListBox::DoAppend( const wxString& item )
 {
 }
 
 int wxListBox::DoAppend( const wxString& item )
 {
-    int index;
-    if ( m_strings )
+    if (m_strings)
     {
         // need to determine the index
     {
         // need to determine the index
-        index = m_strings->Add(item);
-
-        InsertItems(1, &item, index);
+        int index = m_strings->Add( item );
+       
+       // only if not at the end anyway
+       if (index != GetCount())
+       {
+          GtkAddItem( item, index );
+          
+          wxNode *node = m_clientList.Nth( index );
+           m_clientList.Insert( node, (wxObject *)NULL );
+          
+          return index;
+       }
     }
     }
-    else
-    {
-        // not sorted, just append
-        AppendWithoutSorting(item);
+    
+    GtkAddItem(item);
 
 
-        m_clientData.Append((wxObject *)NULL);
+    m_clientList.Append((wxObject *)NULL);
 
 
-        index = GetCount() - 1;
-    }
-
-    return index;
+    return GetCount() - 1;
 }
 
 }
 
-void wxListBox::AppendWithoutSorting( const wxString &item )
+void wxListBox::GtkAddItem( const wxString &item, int pos )
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
@@ -531,7 +430,13 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
 
     list_item = gtk_list_item_new_with_label( label.mbc_str() );
 
 
     list_item = gtk_list_item_new_with_label( label.mbc_str() );
 
-    gtk_container_add( GTK_CONTAINER(m_list), list_item );
+    GList *gitem_list = g_list_alloc ();
+    gitem_list->data = list_item;
+  
+    if (pos == -1)
+        gtk_list_append_items( GTK_LIST (m_list), gitem_list );
+    else
+        gtk_list_insert_items( GTK_LIST (m_list), gitem_list, pos );
 
     gtk_signal_connect( GTK_OBJECT(list_item), "select",
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
 
     gtk_signal_connect( GTK_OBJECT(list_item), "select",
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
@@ -569,21 +474,15 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
         gtk_widget_realize( list_item );
         gtk_widget_realize( GTK_BIN(list_item)->child );
 
         gtk_widget_realize( list_item );
         gtk_widget_realize( GTK_BIN(list_item)->child );
 
-        //if (m_widgetStyle) ApplyWidgetStyle();
-        if (m_widgetStyle) {
-            // Apply current widget style to the new list_item
+        // Apply current widget style to the new list_item
+        if (m_widgetStyle) 
+       {
             gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
             GtkBin *bin = GTK_BIN( list_item );
             GtkWidget *label = GTK_WIDGET( bin->child );
             gtk_widget_set_style( label, m_widgetStyle );
         }
 
             gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
             GtkBin *bin = GTK_BIN( list_item );
             GtkWidget *label = GTK_WIDGET( bin->child );
             gtk_widget_set_style( label, m_widgetStyle );
         }
 
-#if wxUSE_DRAG_AND_DROP
-    #ifndef NEW_GTK_DND_CODE
-        if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
-    #endif
-#endif
-
 #if wxUSE_TOOLTIPS
         if (m_tooltip) m_tooltip->Apply( this );
 #endif
 #if wxUSE_TOOLTIPS
         if (m_tooltip) m_tooltip->Apply( this );
 #endif
@@ -615,7 +514,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData )
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
 
     node->SetData( (wxObject*) clientData );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
 
     node->SetData( (wxObject*) clientData );
@@ -625,7 +524,7 @@ void* wxListBox::DoGetItemClientData( int n ) const
 {
     wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
 
     return node->Data();
     wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
 
     return node->Data();
@@ -635,7 +534,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData )
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
 
     wxClientData *cd = (wxClientData*) node->Data();
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
 
     wxClientData *cd = (wxClientData*) node->Data();
@@ -648,7 +547,7 @@ wxClientData* wxListBox::DoGetItemClientObject( int n ) const
 {
     wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_MSG( node, (wxClientData *)NULL,
                  wxT("invalid index in wxListBox::DoGetItemClientObject") );
 
     wxCHECK_MSG( node, (wxClientData *)NULL,
                  wxT("invalid index in wxListBox::DoGetItemClientObject") );
 
@@ -666,14 +565,14 @@ void wxListBox::Clear()
         // destroy the data (due to Robert's idea of using wxList<wxObject>
         // and not wxList<wxClientData> we can't just say
         // m_clientList.DeleteContents(TRUE) - this would crash!
         // destroy the data (due to Robert's idea of using wxList<wxObject>
         // and not wxList<wxClientData> we can't just say
         // m_clientList.DeleteContents(TRUE) - this would crash!
-        wxNode *node = m_clientData.First();
+        wxNode *node = m_clientList.First();
         while ( node )
         {
             delete (wxClientData *)node->Data();
             node = node->Next();
         }
     }
         while ( node )
         {
             delete (wxClientData *)node->Data();
             node = node->Next();
         }
     }
-    m_clientData.Clear();
+    m_clientList.Clear();
 
     if ( m_strings )
         m_strings->Clear();
 
     if ( m_strings )
         m_strings->Clear();
@@ -691,7 +590,7 @@ void wxListBox::Delete( int n )
     gtk_list_remove_items( m_list, list );
     g_list_free( list );
 
     gtk_list_remove_items( m_list, list );
     g_list_free( list );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     if ( node )
     {
         if ( m_clientDataItemsType == ClientData_Object )
     if ( node )
     {
         if ( m_clientDataItemsType == ClientData_Object )
@@ -700,7 +599,7 @@ void wxListBox::Delete( int n )
             delete cd;
         }
 
             delete cd;
         }
 
-        m_clientData.DeleteNode( node );
+        m_clientList.DeleteNode( node );
     }
 
     if ( m_strings )
     }
 
     if ( m_strings )
@@ -760,15 +659,8 @@ int wxListBox::GetCount() const
 {
     wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
 
 {
     wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
 
-    GList *child = m_list->children;
-    int count = 0;
-    while (child)
-    {
-        count++;
-        child = child->next;
-    }
-
-    return count;
+    GList *children = m_list->children;
+    return g_list_length(children);
 }
 
 int wxListBox::FindString( const wxString &item ) const
 }
 
 int wxListBox::FindString( const wxString &item ) const
@@ -869,14 +761,14 @@ void wxListBox::SetSelection( int n, bool select )
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
-    DisableEvents();
+    GtkDisableEvents();
 
     if (select)
         gtk_list_select_item( m_list, n );
     else
         gtk_list_unselect_item( m_list, n );
 
 
     if (select)
         gtk_list_select_item( m_list, n );
     else
         gtk_list_unselect_item( m_list, n );
 
-    EnableEvents();
+    GtkEnableEvents();
 }
 
 void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
 }
 
 void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
@@ -888,7 +780,7 @@ void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
 // helpers
 // ----------------------------------------------------------------------------
 
 // helpers
 // ----------------------------------------------------------------------------
 
-int wxListBox::GetIndex( GtkWidget *item ) const
+int wxListBox::GtkGetIndex( GtkWidget *item ) const
 {
     if (item)
     {
 {
     if (item)
     {
@@ -916,40 +808,7 @@ void wxListBox::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
 }
 #endif // wxUSE_TOOLTIPS
 
 }
 #endif // wxUSE_TOOLTIPS
 
-#if wxUSE_DRAG_AND_DROP
-void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
-{
-    wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
-
-#ifndef NEW_GTK_DND_CODE
-    if (m_dropTarget)
-    {
-        GList *child = m_list->children;
-        while (child)
-        {
-            m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
-            child = child->next;
-        }
-    }
-#endif
-
-    wxWindow::SetDropTarget( dropTarget );
-
-#ifndef NEW_GTK_DND_CODE
-    if (m_dropTarget)
-    {
-        GList *child = m_list->children;
-        while (child)
-        {
-            m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
-            child = child->next;
-        }
-    }
-#endif
-}
-#endif
-
-void wxListBox::DisableEvents()
+void wxListBox::GtkDisableEvents()
 {
     GList *child = m_list->children;
     while (child)
 {
     GList *child = m_list->children;
     while (child)
@@ -965,7 +824,7 @@ void wxListBox::DisableEvents()
     }
 }
 
     }
 }
 
-void wxListBox::EnableEvents()
+void wxListBox::GtkEnableEvents()
 {
     GList *child = m_list->children;
     while (child)
 {
     GList *child = m_list->children;
     while (child)
index 9fa95cf91801c92effd3f79ef8f852924cf92a7b..26a08dea2349c388801c9c52fedb969c66ca34ea 100644 (file)
@@ -281,7 +281,6 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
 {
     style = style | wxSIMPLE_BORDER;
     style = style | wxCAPTION;
 {
     style = style | wxSIMPLE_BORDER;
     style = style | wxCAPTION;
-    style = style | wxSYSTEM_MENU;
 
     if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
         m_miniTitle = 13;
 
     if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
         m_miniTitle = 13;
index de5d9618595cb22fc6c2b4ab90b0bb3e98b06875..8d1d92f1f33e9614f1a2f42a4236f3a47731075c 100644 (file)
@@ -54,7 +54,7 @@ bool wxCheckListBox::IsChecked( int index ) const
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
-        return (str[1] == wxT('X'));
+        return (str.GetChar(1) == wxT('X'));
     }
 
     wxFAIL_MSG(wxT("wrong checklistbox index"));
     }
 
     wxFAIL_MSG(wxT("wrong checklistbox index"));
@@ -73,7 +73,7 @@ void wxCheckListBox::Check( int index, bool check )
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
 
         wxString str = wxString(label->label,*wxConvCurrent);
 
-        if (check == (str[1] == wxT('X'))) return;
+        if (check == (str.GetChar(1) == wxT('X'))) return;
 
         if (check)
             str.SetChar( 1, wxT('X') );
 
         if (check)
             str.SetChar( 1, wxT('X') );
index e1868bbd1c1f70d37fccd8ce0d6e1eec0a6067b2..b772e750a81ade70652d3fdf650423f1fc4325e8 100644 (file)
@@ -409,7 +409,7 @@ size_t wxChoice::AppendHelper(GtkWidget *menu, const wxString& item)
 
         // don't call wxChoice::GetCount() from here because it doesn't work
         // if we're called from ctor (and GtkMenuShell is still NULL)
 
         // don't call wxChoice::GetCount() from here because it doesn't work
         // if we're called from ctor (and GtkMenuShell is still NULL)
-        index = m_clientList.GetCount();
+        index = m_clientList.GetCount() - 1;
     }
 
     if (GTK_WIDGET_REALIZED(m_widget))
     }
 
     if (GTK_WIDGET_REALIZED(m_widget))
index 186f15bcf4b0840c3b0b6c23aeccf06924ca9019..1800ae26852148a26ad9e7d8b28b5026a0d2c5bb 100644 (file)
@@ -94,6 +94,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
         clipboard->m_waiting = FALSE;
         return;
     }
         clipboard->m_waiting = FALSE;
         return;
     }
+    
+/*
+    wxDataFormat clip( selection_data->selection );
+    wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
+*/
   
     // the atoms we received, holding a list of targets (= formats) 
     GdkAtom *atoms = (GdkAtom *)selection_data->data;
   
     // the atoms we received, holding a list of targets (= formats) 
     GdkAtom *atoms = (GdkAtom *)selection_data->data;
@@ -101,7 +106,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
     for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
     {
         wxDataFormat format( atoms[i] );
     for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
     {
         wxDataFormat format( atoms[i] );
-      
+       
+/*
+       wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
+*/
+
         if (format == clipboard->m_targetRequested)
         {
             clipboard->m_waiting = FALSE;
         if (format == clipboard->m_targetRequested)
         {
             clipboard->m_waiting = FALSE;
@@ -199,6 +208,8 @@ selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
         /* the clipboard is no longer in our hands. we can the delete clipboard data. */
         if (wxTheClipboard->m_data)
         {
         /* the clipboard is no longer in our hands. we can the delete clipboard data. */
         if (wxTheClipboard->m_data)
         {
+           wxLogDebug( wxT("wxClipboard will get cleared" ) );
+           
             delete wxTheClipboard->m_data;
             wxTheClipboard->m_data = (wxDataObject*) NULL;
         }
             delete wxTheClipboard->m_data;
             wxTheClipboard->m_data = (wxDataObject*) NULL;
         }
@@ -398,32 +409,23 @@ bool wxClipboard::AddData( wxDataObject *data )
   
     m_data = data;
 
   
     m_data = data;
 
-    /* This should happen automatically, but to be on the safe side */
-    m_ownsClipboard = FALSE;
-    m_ownsPrimarySelection = FALSE;
-    
     /* get formats from wxDataObjects */
     wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
     m_data->GetAllFormats( array );
     /* get formats from wxDataObjects */
     wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
     m_data->GetAllFormats( array );
+
+    /* primary selection or clipboard */
+    GdkAtom clipboard = m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
+                                     : g_clipboardAtom;
+
     
     for (size_t i = 0; i < m_data->GetFormatCount(); i++)
     {
     
     for (size_t i = 0; i < m_data->GetFormatCount(); i++)
     {
-        GdkAtom atom = array[i];
-        wxLogDebug( wxT("Clipboard Supported atom %s"), gdk_atom_name( atom ) );
-
-        /* Add handlers if someone requests data. We currently always
-           offer data to the clipboard and the primary selection. Maybe
-           we should make that depend on the usePrimary flag */
-           
-        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), 
-                              GDK_SELECTION_PRIMARY,
-                              atom, 
-                              0 );  /* what is info ? */
-                             
-        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget), 
-                              g_clipboardAtom,
-                              atom, 
-                              0 );  /* what is info ? */
+        wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() );
+
+        gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
+                                 clipboard,
+                                  array[i], 
+                                  0 );  /* what is info ? */
     }
 
     delete[] array;
     }
 
     delete[] array;
@@ -434,41 +436,26 @@ bool wxClipboard::AddData( wxDataObject *data )
                         (gpointer) NULL );
 
 #if wxUSE_THREADS
                         (gpointer) NULL );
 
 #if wxUSE_THREADS
-        /* disable GUI threads */
-        wxapp_uninstall_thread_wakeup();
+    /* disable GUI threads */
+    wxapp_uninstall_thread_wakeup();
 #endif
     
     /* Tell the world we offer clipboard data */
 #endif
     
     /* Tell the world we offer clipboard data */
-    if (!gtk_selection_owner_set( m_clipboardWidget, 
-                                  g_clipboardAtom,
-                                  GDK_CURRENT_TIME ))
-    {
-#if wxUSE_THREADS
-        /* re-enable GUI threads */
-        wxapp_install_thread_wakeup();
-#endif
-        return FALSE;
-    }
-    m_ownsClipboard = TRUE;
+    bool res = (gtk_selection_owner_set( m_clipboardWidget,
+                                         clipboard,
+                                         GDK_CURRENT_TIME ));
     
     
-    if (!gtk_selection_owner_set( m_clipboardWidget, 
-                                  GDK_SELECTION_PRIMARY,
-                                  GDK_CURRENT_TIME ))
-    {  
-#if wxUSE_THREADS
-        /* re-enable GUI threads */
-        wxapp_install_thread_wakeup();
-#endif
-        return FALSE;
-    }
-    m_ownsPrimarySelection = TRUE;
+    if (m_usePrimary)
+        m_ownsPrimarySelection = res;
+    else
+        m_ownsClipboard = res;
     
 #if wxUSE_THREADS
     /* re-enable GUI threads */
     wxapp_install_thread_wakeup();
 #endif
         
     
 #if wxUSE_THREADS
     /* re-enable GUI threads */
     wxapp_install_thread_wakeup();
 #endif
         
-    return TRUE;
+    return res;
 }
 
 void wxClipboard::Close()
 }
 
 void wxClipboard::Close()
@@ -530,11 +517,36 @@ bool wxClipboard::GetData( wxDataObject& data )
     {
         wxDataFormat format( array[i] );
     
     {
         wxDataFormat format( array[i] );
     
-        wxLogDebug( wxT("wxClipboard::GetData: request format %s"), format.GetId().c_str() );
+        wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() );
     
         /* is data supported by clipboard ? */
     
         /* is data supported by clipboard ? */
-        if (!IsSupported( format ))
-           continue;
+       
+        /* store requested format to be asked for by callbacks */
+        m_targetRequested = format;
+  
+        wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
+    
+        m_formatSupported = FALSE;
+  
+       /* perform query. this will set m_formatSupported to 
+          TRUE if m_targetRequested is supported.
+          also, we have to wait for the "answer" from the 
+          clipboard owner which is an asynchronous process.
+          therefore we set m_waiting = TRUE here and wait
+          until the callback "targets_selection_received" 
+          sets it to FALSE */
+
+        m_waiting = TRUE;
+
+        gtk_selection_convert( m_targetsWidget,
+                           m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
+                                        : g_clipboardAtom, 
+                           g_targetsAtom,
+                           GDK_CURRENT_TIME );
+
+        while (m_waiting) gtk_main_iteration();
+    
+        if (!m_formatSupported) continue;
     
         /* store pointer to data object to be filled up by callbacks */
         m_receivedData = &data;
     
         /* store pointer to data object to be filled up by callbacks */
         m_receivedData = &data;
@@ -576,6 +588,8 @@ bool wxClipboard::GetData( wxDataObject& data )
         return TRUE;
     }
   
         return TRUE;
     }
   
+    wxLogDebug( wxT("wxClipboard::GetData: format not found") );
+    
     /* return failure */
     delete[] array;
     return FALSE;
     /* return failure */
     delete[] array;
     return FALSE;
index 7cf4f752b5802972d2807c6d7b2ed7425bf13cb8..e51c6cb3db7d0c63c23b6fc8cf73f078ae6e49b8 100644 (file)
@@ -463,6 +463,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
         m_height = height;
     }
 
         m_height = height;
     }
 
+/*
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
@@ -472,6 +473,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
     {
        if (height == -1) m_height = 26;
     }
     {
        if (height == -1) m_height = 26;
     }
+*/
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
index 6ab59511ca48ae2371c2452ccb480619f6526115..fbd0ec5b86f7cee4c9b943c7449ef3455c7cc298 100644 (file)
@@ -378,10 +378,10 @@ wxDragResult wxDropTarget::OnData( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
                                    wxDragResult def )
 {
     if (!m_dataObject)
                                    wxDragResult def )
 {
     if (!m_dataObject)
-        return FALSE;
+        return wxDragNone;
 
     if (GetMatchingPair() == (GdkAtom) 0)
 
     if (GetMatchingPair() == (GdkAtom) 0)
-        return FALSE;
+        return wxDragNone;
 
     return GetData() ? def : wxDragNone;
 }
 
     return GetData() ? def : wxDragNone;
 }
@@ -401,8 +401,7 @@ GdkAtom wxDropTarget::GetMatchingPair()
         wxDataFormat format( formatAtom );
 
 #ifdef __WXDEBUG__
         wxDataFormat format( formatAtom );
 
 #ifdef __WXDEBUG__
-        char *name = gdk_atom_name( formatAtom );
-        wxLogDebug("Drop target: drag has format: %s", name ? name : "unnamed");
+        wxLogDebug("Drop target: drag has format: %s", format.GetId().c_str() );
 #endif // Debug
 
         if (m_dataObject->IsSupportedFormat( format ))
 #endif // Debug
 
         if (m_dataObject->IsSupportedFormat( format ))
index ab29ed1cb3a88cd0aea3830e1645897e048ba520..7cbd3ec7d2017da9a94599ea1369acbb8b075457 100644 (file)
@@ -543,6 +543,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
         m_height = height;
     }
 
         m_height = height;
     }
 
+/*
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
     if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
     {
         if (width == -1) m_width = 80;
@@ -552,6 +553,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
     {
        if (height == -1) m_height = 26;
     }
     {
        if (height == -1) m_height = 26;
     }
+*/
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
 
     if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
     if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
@@ -613,6 +615,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
 
 #if wxUSE_TOOLBAR
         /* tool bar */
 
 #if wxUSE_TOOLBAR
         /* tool bar */
+/*
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
@@ -624,6 +627,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
             else
                 (*height) -= wxPLACE_HOLDER;
         }
             else
                 (*height) -= wxPLACE_HOLDER;
         }
+*/
 #endif
 
         /* mini edge */
 #endif
 
         /* mini edge */
@@ -639,6 +643,8 @@ void wxFrame::DoSetClientSize( int width, int height )
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
+    printf( "set size %d %d\n", width, height );
+
         /* menu bar */
         if (m_frameMenuBar)
         {
         /* menu bar */
         if (m_frameMenuBar)
         {
@@ -655,6 +661,7 @@ void wxFrame::DoSetClientSize( int width, int height )
 
 #if wxUSE_TOOLBAR
         /* tool bar */
 
 #if wxUSE_TOOLBAR
         /* tool bar */
+/*
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
         if (m_frameToolBar)
         {
             if (!m_toolBarDetached)
@@ -666,6 +673,7 @@ void wxFrame::DoSetClientSize( int width, int height )
             else
                 height += wxPLACE_HOLDER;
         }
             else
                 height += wxPLACE_HOLDER;
         }
+*/
 #endif
 
     DoSetSize( -1, -1, width + m_miniEdge*2, height  + m_miniEdge*2 + m_miniTitle, 0 );
 #endif
 
     DoSetSize( -1, -1, width + m_miniEdge*2, height  + m_miniEdge*2 + m_miniTitle, 0 );
@@ -729,7 +737,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
         }
 
 #if wxUSE_TOOLBAR
         }
 
 #if wxUSE_TOOLBAR
-        if (m_frameToolBar)
+        if ((m_frameToolBar) &&
+           (m_frameToolBar->m_widget->parent == m_mainWidget))
         {
             int xx = m_miniEdge;
             int yy = m_miniEdge + m_miniTitle;
         {
             int xx = m_miniEdge;
             int yy = m_miniEdge + m_miniTitle;
@@ -745,8 +754,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
            if (m_toolBarDetached) hh = wxPLACE_HOLDER;
             m_frameToolBar->m_x = xx;
             m_frameToolBar->m_y = yy;
            if (m_toolBarDetached) hh = wxPLACE_HOLDER;
             m_frameToolBar->m_x = xx;
             m_frameToolBar->m_y = yy;
-            /* m_frameToolBar->m_height = hh;   don't change the toolbar's height */
-            m_frameToolBar->m_width = ww;
+            /* m_frameToolBar->m_height = hh;   don't change the toolbar's reported size
+               m_frameToolBar->m_width = ww; */
             gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
                                   m_frameToolBar->m_widget,
                                   xx, yy, ww, hh );
             gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
                                   m_frameToolBar->m_widget,
                                   xx, yy, ww, hh );
index 82b5bb21c0f4a16fff4acc8b0cc41e5661895680..ae049dada82b7515e71eb127d0c798a9d635275c 100644 (file)
@@ -144,7 +144,7 @@ gtk_listbox_button_press_callback( GtkWidget *widget,
 
     if (!listbox->m_hasVMT) return FALSE;
 
 
     if (!listbox->m_hasVMT) return FALSE;
 
-    int sel = listbox->GetIndex( widget );
+    int sel = listbox->GtkGetIndex( widget );
 
 #if wxUSE_CHECKLISTBOX
     if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
 
 #if wxUSE_CHECKLISTBOX
     if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
@@ -182,7 +182,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis
 
     if (gdk_event->keyval != ' ') return FALSE;
 
 
     if (gdk_event->keyval != ' ') return FALSE;
 
-    int sel = listbox->GetIndex( widget );
+    int sel = listbox->GtkGetIndex( widget );
 
     wxCheckListBox *clb = (wxCheckListBox *)listbox;
 
 
     wxCheckListBox *clb = (wxCheckListBox *)listbox;
 
@@ -322,53 +322,8 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
 
     for (int i = 0; i < n; i++)
     {
 
     for (int i = 0; i < n; i++)
     {
+        // add one by one
         DoAppend(choices[i]);
         DoAppend(choices[i]);
-
-#if 0
-        wxString str(choices[i]);
-
-#if wxUSE_CHECKLISTBOX
-        if (m_hasCheckBoxes)
-        {
-            str.Prepend(CHECKBOX_STRING);
-        }
-#endif // wxUSE_CHECKLISTBOX
-
-        GtkWidget *list_item = gtk_list_item_new_with_label( str.mbc_str() );
-
-        gtk_container_add( GTK_CONTAINER(m_list), list_item );
-
-        gtk_signal_connect( GTK_OBJECT(list_item), "select",
-          GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
-
-        if (style & wxLB_MULTIPLE)
-            gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
-              GTK_SIGNAL_FUNC(gtk_listitem_deselect_callback), (gpointer)this );
-
-        gtk_signal_connect( GTK_OBJECT(list_item),
-                            "button_press_event",
-                            (GtkSignalFunc)gtk_listbox_button_press_callback,
-                            (gpointer) this );
-
-        gtk_signal_connect_after( GTK_OBJECT(list_item),
-                            "button_release_event",
-                            (GtkSignalFunc)gtk_listbox_button_release_callback,
-                            (gpointer) this );
-
-#if wxUSE_CHECKLISTBOX
-        if (m_hasCheckBoxes)
-        {
-            gtk_signal_connect( GTK_OBJECT(list_item),
-                            "key_press_event",
-                            (GtkSignalFunc)gtk_listbox_key_press_callback,
-                            (gpointer)this );
-        }
-#endif // wxUSE_CHECKLISTBOX
-
-        ConnectWidget( list_item );
-
-        gtk_widget_show( list_item );
-#endif // 0
     }
 
     m_parent->DoAddChild( this );
     }
 
     m_parent->DoAddChild( this );
@@ -393,129 +348,73 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
-    // code elsewhere supposes we have as many items in m_clientData as items
+    // VZ: notice that InsertItems knows nothing about sorting, so calling it
+    //     from outside (and not from our own Append) is likely to break
+    //     everything
+
+    // code elsewhere supposes we have as many items in m_clientList as items
     // in the listbox
     // in the listbox
-    wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
+    wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
                   wxT("bug in client data management") );
 
     GList *children = m_list->children;
     int length = g_list_length(children);
                   wxT("bug in client data management") );
 
     GList *children = m_list->children;
     int length = g_list_length(children);
+                 
     wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
 
     wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
 
-    // VZ: it seems that GTK 1.0.6 doesn't has a function to insert an item
-    //     into a listbox at the given position, this is why we first delete
-    //     all items after this position, then append these items and then
-    //     reappend back the old ones.
-
-    // VZ: notice that InsertItems knows nothing about sorting, so calling it
-    //     from outside (and not from our own Append) is likely to break
-    //     everything
-
     size_t nItems = items.GetCount();
 
     size_t nItems = items.GetCount();
 
-    size_t n; // loop var
-
-    // optimise for this trivial case
-    if ( pos == length )
+    if (pos == length)
     {
     {
-        // no need to do anything complicated
-        for ( n = 0; n < nItems; n++ )
+        for ( size_t n = 0; n < nItems; n++ )
         {
         {
-            AppendWithoutSorting(items[n]);
+            GtkAddItem( items[n] );
 
 
-            m_clientData.Append((wxObject *)NULL);
+            m_clientList.Append((wxObject *)NULL);
         }
         }
-
-        wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
-                      wxT("bug in client data management") );
-
-        return;
     }
     }
-
-    // remove the old items
-    wxArrayString deletedLabels;
-#if wxUSE_CHECKLISTBOX
-    wxArrayInt deletedChecks;
-#endif
-
-    GList *child = g_list_nth( children, pos );
-    for ( n = 0; child != NULL; n++, child = child->next )
+    else
     {
     {
-        // save label
-        GtkBin *bin = GTK_BIN( child->data );
-        GtkLabel *label = GTK_LABEL( bin->child );
-
-        wxString str(GET_REAL_LABEL(label->label),*wxConvCurrent);
-        deletedLabels.Add(str);
-
-#if wxUSE_CHECKLISTBOX
-        // save check state
-        if ( m_hasCheckBoxes )
+        wxNode *node = m_clientList.Nth( pos );
+        for ( size_t n = 0; n < nItems; n++ )
         {
         {
-            deletedChecks.Add(((wxCheckListBox *)this)->IsChecked(pos + n));
-        }
-#endif // wxUSE_CHECKLISTBOX
-    }
-
-    size_t nDeletedCount = n;
-
-    gtk_list_clear_items( m_list, pos, length );
-
-    // now append the new items
-    wxNode *node = m_clientData.Item(pos);
-    for ( n = 0; n < nItems; n++ )
-    {
-        AppendWithoutSorting(items[n]);
-
-        // make sure we have the correct number of items in this list
-        m_clientData.Insert(node, (wxObject *)NULL);
-    }
-
-    // and append the old items too
-    pos += nItems;  // now the indices are shifted
-    for ( n = 0; n < nDeletedCount; n++ )
-    {
-        AppendWithoutSorting(deletedLabels[n]);
-
-        // the data is already correct - the indices have been rearranged in
-        // such manner that we now correspond to the same node as before
+            GtkAddItem( items[n], pos+n );
 
 
-#if wxUSE_CHECKLISTBOX
-        if ( m_hasCheckBoxes )
-        {
-            ((wxCheckListBox *)this)->Check(pos + n, (bool)deletedChecks[n]);
+            m_clientList.Insert( node, (wxObject *)NULL );
         }
         }
-#endif // wxUSE_CHECKLISTBOX
     }
 
     }
 
-    wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
-                  wxT("bug in client data management") );
+    wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
+                      wxT("bug in client data management") );
 }
 
 int wxListBox::DoAppend( const wxString& item )
 {
 }
 
 int wxListBox::DoAppend( const wxString& item )
 {
-    int index;
-    if ( m_strings )
+    if (m_strings)
     {
         // need to determine the index
     {
         // need to determine the index
-        index = m_strings->Add(item);
-
-        InsertItems(1, &item, index);
+        int index = m_strings->Add( item );
+       
+       // only if not at the end anyway
+       if (index != GetCount())
+       {
+          GtkAddItem( item, index );
+          
+          wxNode *node = m_clientList.Nth( index );
+           m_clientList.Insert( node, (wxObject *)NULL );
+          
+          return index;
+       }
     }
     }
-    else
-    {
-        // not sorted, just append
-        AppendWithoutSorting(item);
+    
+    GtkAddItem(item);
 
 
-        m_clientData.Append((wxObject *)NULL);
+    m_clientList.Append((wxObject *)NULL);
 
 
-        index = GetCount() - 1;
-    }
-
-    return index;
+    return GetCount() - 1;
 }
 
 }
 
-void wxListBox::AppendWithoutSorting( const wxString &item )
+void wxListBox::GtkAddItem( const wxString &item, int pos )
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
@@ -531,7 +430,13 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
 
     list_item = gtk_list_item_new_with_label( label.mbc_str() );
 
 
     list_item = gtk_list_item_new_with_label( label.mbc_str() );
 
-    gtk_container_add( GTK_CONTAINER(m_list), list_item );
+    GList *gitem_list = g_list_alloc ();
+    gitem_list->data = list_item;
+  
+    if (pos == -1)
+        gtk_list_append_items( GTK_LIST (m_list), gitem_list );
+    else
+        gtk_list_insert_items( GTK_LIST (m_list), gitem_list, pos );
 
     gtk_signal_connect( GTK_OBJECT(list_item), "select",
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
 
     gtk_signal_connect( GTK_OBJECT(list_item), "select",
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
@@ -569,21 +474,15 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
         gtk_widget_realize( list_item );
         gtk_widget_realize( GTK_BIN(list_item)->child );
 
         gtk_widget_realize( list_item );
         gtk_widget_realize( GTK_BIN(list_item)->child );
 
-        //if (m_widgetStyle) ApplyWidgetStyle();
-        if (m_widgetStyle) {
-            // Apply current widget style to the new list_item
+        // Apply current widget style to the new list_item
+        if (m_widgetStyle) 
+       {
             gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
             GtkBin *bin = GTK_BIN( list_item );
             GtkWidget *label = GTK_WIDGET( bin->child );
             gtk_widget_set_style( label, m_widgetStyle );
         }
 
             gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
             GtkBin *bin = GTK_BIN( list_item );
             GtkWidget *label = GTK_WIDGET( bin->child );
             gtk_widget_set_style( label, m_widgetStyle );
         }
 
-#if wxUSE_DRAG_AND_DROP
-    #ifndef NEW_GTK_DND_CODE
-        if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
-    #endif
-#endif
-
 #if wxUSE_TOOLTIPS
         if (m_tooltip) m_tooltip->Apply( this );
 #endif
 #if wxUSE_TOOLTIPS
         if (m_tooltip) m_tooltip->Apply( this );
 #endif
@@ -615,7 +514,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData )
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
 
     node->SetData( (wxObject*) clientData );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
 
     node->SetData( (wxObject*) clientData );
@@ -625,7 +524,7 @@ void* wxListBox::DoGetItemClientData( int n ) const
 {
     wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
 
     return node->Data();
     wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
 
     return node->Data();
@@ -635,7 +534,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData )
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
 
     wxClientData *cd = (wxClientData*) node->Data();
     wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
 
     wxClientData *cd = (wxClientData*) node->Data();
@@ -648,7 +547,7 @@ wxClientData* wxListBox::DoGetItemClientObject( int n ) const
 {
     wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
 
 {
     wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     wxCHECK_MSG( node, (wxClientData *)NULL,
                  wxT("invalid index in wxListBox::DoGetItemClientObject") );
 
     wxCHECK_MSG( node, (wxClientData *)NULL,
                  wxT("invalid index in wxListBox::DoGetItemClientObject") );
 
@@ -666,14 +565,14 @@ void wxListBox::Clear()
         // destroy the data (due to Robert's idea of using wxList<wxObject>
         // and not wxList<wxClientData> we can't just say
         // m_clientList.DeleteContents(TRUE) - this would crash!
         // destroy the data (due to Robert's idea of using wxList<wxObject>
         // and not wxList<wxClientData> we can't just say
         // m_clientList.DeleteContents(TRUE) - this would crash!
-        wxNode *node = m_clientData.First();
+        wxNode *node = m_clientList.First();
         while ( node )
         {
             delete (wxClientData *)node->Data();
             node = node->Next();
         }
     }
         while ( node )
         {
             delete (wxClientData *)node->Data();
             node = node->Next();
         }
     }
-    m_clientData.Clear();
+    m_clientList.Clear();
 
     if ( m_strings )
         m_strings->Clear();
 
     if ( m_strings )
         m_strings->Clear();
@@ -691,7 +590,7 @@ void wxListBox::Delete( int n )
     gtk_list_remove_items( m_list, list );
     g_list_free( list );
 
     gtk_list_remove_items( m_list, list );
     g_list_free( list );
 
-    wxNode *node = m_clientData.Nth( n );
+    wxNode *node = m_clientList.Nth( n );
     if ( node )
     {
         if ( m_clientDataItemsType == ClientData_Object )
     if ( node )
     {
         if ( m_clientDataItemsType == ClientData_Object )
@@ -700,7 +599,7 @@ void wxListBox::Delete( int n )
             delete cd;
         }
 
             delete cd;
         }
 
-        m_clientData.DeleteNode( node );
+        m_clientList.DeleteNode( node );
     }
 
     if ( m_strings )
     }
 
     if ( m_strings )
@@ -760,15 +659,8 @@ int wxListBox::GetCount() const
 {
     wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
 
 {
     wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
 
-    GList *child = m_list->children;
-    int count = 0;
-    while (child)
-    {
-        count++;
-        child = child->next;
-    }
-
-    return count;
+    GList *children = m_list->children;
+    return g_list_length(children);
 }
 
 int wxListBox::FindString( const wxString &item ) const
 }
 
 int wxListBox::FindString( const wxString &item ) const
@@ -869,14 +761,14 @@ void wxListBox::SetSelection( int n, bool select )
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
 {
     wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
 
-    DisableEvents();
+    GtkDisableEvents();
 
     if (select)
         gtk_list_select_item( m_list, n );
     else
         gtk_list_unselect_item( m_list, n );
 
 
     if (select)
         gtk_list_select_item( m_list, n );
     else
         gtk_list_unselect_item( m_list, n );
 
-    EnableEvents();
+    GtkEnableEvents();
 }
 
 void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
 }
 
 void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
@@ -888,7 +780,7 @@ void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
 // helpers
 // ----------------------------------------------------------------------------
 
 // helpers
 // ----------------------------------------------------------------------------
 
-int wxListBox::GetIndex( GtkWidget *item ) const
+int wxListBox::GtkGetIndex( GtkWidget *item ) const
 {
     if (item)
     {
 {
     if (item)
     {
@@ -916,40 +808,7 @@ void wxListBox::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
 }
 #endif // wxUSE_TOOLTIPS
 
 }
 #endif // wxUSE_TOOLTIPS
 
-#if wxUSE_DRAG_AND_DROP
-void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
-{
-    wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
-
-#ifndef NEW_GTK_DND_CODE
-    if (m_dropTarget)
-    {
-        GList *child = m_list->children;
-        while (child)
-        {
-            m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
-            child = child->next;
-        }
-    }
-#endif
-
-    wxWindow::SetDropTarget( dropTarget );
-
-#ifndef NEW_GTK_DND_CODE
-    if (m_dropTarget)
-    {
-        GList *child = m_list->children;
-        while (child)
-        {
-            m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
-            child = child->next;
-        }
-    }
-#endif
-}
-#endif
-
-void wxListBox::DisableEvents()
+void wxListBox::GtkDisableEvents()
 {
     GList *child = m_list->children;
     while (child)
 {
     GList *child = m_list->children;
     while (child)
@@ -965,7 +824,7 @@ void wxListBox::DisableEvents()
     }
 }
 
     }
 }
 
-void wxListBox::EnableEvents()
+void wxListBox::GtkEnableEvents()
 {
     GList *child = m_list->children;
     while (child)
 {
     GList *child = m_list->children;
     while (child)
index 9fa95cf91801c92effd3f79ef8f852924cf92a7b..26a08dea2349c388801c9c52fedb969c66ca34ea 100644 (file)
@@ -281,7 +281,6 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
 {
     style = style | wxSIMPLE_BORDER;
     style = style | wxCAPTION;
 {
     style = style | wxSIMPLE_BORDER;
     style = style | wxCAPTION;
-    style = style | wxSYSTEM_MENU;
 
     if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
         m_miniTitle = 13;
 
     if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
         m_miniTitle = 13;
index b444f77c5e20f3808ec3d230fb4bc952afb780f6..bd803f7c0e12c7363637dabaf70811ddabe2569f 100644 (file)
@@ -849,7 +849,7 @@ SQLDriverConnect (
           break;
         }
 
           break;
         }
 
-       sprintf (cnstr2drv, "DSN=%s;", dsn);
+       sprintf ((char*)cnstr2drv, "DSN=%s;", dsn);
        cbConnStrIn += STRLEN (cnstr2drv);
        STRNCAT (cnstr2drv, szConnStrIn, cbConnStrIn);
        szConnStrIn = cnstr2drv;
        cbConnStrIn += STRLEN (cnstr2drv);
        STRNCAT (cnstr2drv, szConnStrIn, cbConnStrIn);
        szConnStrIn = cnstr2drv;
index 0c8fda5ec3f3e8cccfdd206150e85f70c5dbfbb8..f64c08189893f972f7b9e53ea46afc8c7294e602 100644 (file)
@@ -198,7 +198,7 @@ SQLDataSources (
    *  And find the description that goes with this entry
    */
   _iodbcdm_getkeyvalbydsn (sect[cur_entry], strlen (sect[cur_entry]),
    *  And find the description that goes with this entry
    */
   _iodbcdm_getkeyvalbydsn (sect[cur_entry], strlen (sect[cur_entry]),
-      "Description", szDesc, cbDescMax);
+      "Description", (char*) szDesc, cbDescMax);
 
   /*
    *  Next record
 
   /*
    *  Next record
index d97ea360414bf4002022f300e93453d666b5aca1..6dc56717be94ec644991ce7199546d36fb623c84 100644 (file)
@@ -124,7 +124,7 @@ public:
    // NB: this won't result in DISCONNECTED event being sent
    virtual bool CancelDialing();
 
    // NB: this won't result in DISCONNECTED event being sent
    virtual bool CancelDialing();
 
-   unsigned int GetISPNames(class wxArrayString &) const
+   size_t GetISPNames(class wxArrayString &) const
       { return 0; }
    
    // sometimes the built-in logic for determining the online status may fail,
       { return 0; }
    
    // sometimes the built-in logic for determining the online status may fail,
index 1d0c60ec76bf672fd396bb2e3e8c1f7a7a385380..587395297c9c53a4b55369b52d7d952d86642b7a 100644 (file)
@@ -906,7 +906,7 @@ void _GSocket_Detected_Write(GSocket *socket)
     socket->m_establishing = FALSE;
 
     len = sizeof(error);
     socket->m_establishing = FALSE;
 
     len = sizeof(error);
-    getsockopt(socket->m_fd, SOL_SOCKET, SO_ERROR, &error, &len);
+    getsockopt(socket->m_fd, SOL_SOCKET, SO_ERROR, (void*) &error, &len);
 
     if (error)
     {
 
     if (error)
     {
index ce846b4a2280c2642ae3c0f0e89b48fd0da7f8e6..fefca18e5985fcb7fc4a99fbde025bc71c4dc17a 100644 (file)
@@ -104,9 +104,8 @@ class wxFloatBar(wxToolBar):
             self.floatframe.SetToolBar(self)
             self.oldcolor = self.GetBackgroundColour()
             barsize = self.GetSizeTuple()
             self.floatframe.SetToolBar(self)
             self.oldcolor = self.GetBackgroundColour()
             barsize = self.GetSizeTuple()
-#            self.floatframe.SetSize(wxSize(barsize[0], barsize[1] + self.titleheight))
-#            self.floatframe.SetClientSize(wxSize(barsize[0], barsize[1]))
-            self.floatframe.SetClientSize(wxSize(50,200))
+            self.floatframe.SetSize(wxSize(barsize[0], barsize[1] + self.titleheight))
+            self.floatframe.SetClientSize(wxSize(barsize[0], barsize[1]))
             newpos = self.parentframe.GetPosition()
             newpos.y = newpos.y + self.titleheight
             self.floatframe.SetPosition(newpos)
             newpos = self.parentframe.GetPosition()
             newpos.y = newpos.y + self.titleheight
             self.floatframe.SetPosition(newpos)