generic controls use wxINVERT for rubberbands etc
  wxXOR maps to GdkXOR etc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2561 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
 
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
 
+    void CopyObject(wxObject& object_dest) const;
 public:
     int               m_commandInt;    // Additional information
     long              m_extraLong;     
 public:
     int               m_commandInt;    // Additional information
     long              m_extraLong;     
 
+void wxScrollWinEvent::CopyObject(wxObject& obj_d) const
+{
+    wxScrollWinEvent *obj = (wxScrollWinEvent*)&obj_d; 
+
+    wxEvent::CopyObject(obj_d);
+
+    obj->m_extraLong    = m_extraLong;
+    obj->m_commandInt   = m_commandInt;
+}
+
 
     m_owner->ClientToScreen( &x2, &y2 );
 
     wxScreenDC dc;
     m_owner->ClientToScreen( &x2, &y2 );
 
     wxScreenDC dc;
-    dc.SetLogicalFunction( wxXOR );
+    dc.SetLogicalFunction( wxINVERT );
     dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) );
     dc.SetBrush( *wxTRANSPARENT_BRUSH );
 
     dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) );
     dc.SetBrush( *wxTRANSPARENT_BRUSH );
 
 
 
     wxPen sashTrackerPen(*wxBLACK, 2, wxSOLID);
 
 
     wxPen sashTrackerPen(*wxBLACK, 2, wxSOLID);
 
-    screenDC.SetLogicalFunction(wxXOR);
+    screenDC.SetLogicalFunction(wxINVERT);
     screenDC.SetPen(sashTrackerPen);
     screenDC.SetBrush(*wxTRANSPARENT_BRUSH);
 
     screenDC.SetPen(sashTrackerPen);
     screenDC.SetBrush(*wxTRANSPARENT_BRUSH);
 
 
     ClientToScreen(&x1, &y1);
     ClientToScreen(&x2, &y2);
 
     ClientToScreen(&x1, &y1);
     ClientToScreen(&x2, &y2);
 
-    screenDC.SetLogicalFunction(wxXOR);
+    screenDC.SetLogicalFunction(wxINVERT);
     screenDC.SetPen(*m_sashTrackerPen);
     screenDC.SetBrush(*wxTRANSPARENT_BRUSH);
 
     screenDC.SetPen(*m_sashTrackerPen);
     screenDC.SetBrush(*wxTRANSPARENT_BRUSH);
 
                m_windowTwo->Layout();
         }
     }
                m_windowTwo->Layout();
         }
     }
+#ifdef __WXGTK__
+    Refresh();
+#else
     wxClientDC dc(this);
     DrawBorders(dc);
     DrawSash(dc);
     wxClientDC dc(this);
     DrawBorders(dc);
     DrawSash(dc);
 }
 
 // Set pane for unsplit window
 }
 
 // Set pane for unsplit window
 
     GdkFunction mode = GDK_COPY;
     switch (function)
     {
     GdkFunction mode = GDK_COPY;
     switch (function)
     {
-        case wxXOR:          mode = GDK_INVERT; break;
-        case wxINVERT:       mode = GDK_XOR; break;
+        case wxXOR:          mode = GDK_XOR;           break;
+        case wxINVERT:       mode = GDK_INVERT;        break;
 #if (GDK_MINOR_VERSION > 0)
 #if (GDK_MINOR_VERSION > 0)
-        case wxOR_REVERSE:   mode = GDK_OR_REVERSE; break;
-        case wxAND_REVERSE:  mode = GDK_AND_REVERSE; break;
-        case wxCLEAR:        mode = GDK_CLEAR; break;
-        case wxSET:          mode = GDK_SET; break;
-        case wxOR_INVERT:    mode = GDK_OR_INVERT; break;
-        case wxAND:          mode = GDK_AND; break;
-        case wxOR:           mode = GDK_OR; break;
-        case wxEQUIV:        mode = GDK_EQUIV; break;
-        case wxNAND:         mode = GDK_NAND; break;
-        case wxAND_INVERT:   mode = GDK_AND_INVERT; break;
+        case wxOR_REVERSE:   mode = GDK_OR_REVERSE;    break;
+        case wxAND_REVERSE:  mode = GDK_AND_REVERSE;   break;
+        case wxCLEAR:        mode = GDK_CLEAR;         break;
+        case wxSET:          mode = GDK_SET;           break;
+        case wxOR_INVERT:    mode = GDK_OR_INVERT;     break;
+        case wxAND:          mode = GDK_AND;           break;
+        case wxOR:           mode = GDK_OR;            break;
+        case wxEQUIV:        mode = GDK_EQUIV;         break;
+        case wxNAND:         mode = GDK_NAND;          break;
+        case wxAND_INVERT:   mode = GDK_AND_INVERT;    break;
 /*   ?   wxSRC_INVERT   GDK_AND_REVERSE, GDK_OR_REVERSE, GDK_OR_INVERT */
 #endif
         default:       break;
 /*   ?   wxSRC_INVERT   GDK_AND_REVERSE, GDK_OR_REVERSE, GDK_OR_INVERT */
 #endif
         default:       break;
 
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
-
     if (!win->m_hasVMT) return;
 
     if (!win->m_hasVMT) return;
 
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
+
     win->SetModified();
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
     win->SetModified();
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
+    if (!win->m_hasVMT) return;
+    
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
 
     win->CalculateScrollbar();
 
     win->CalculateScrollbar();
-    
-    if (!win->m_hasVMT) return;
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
             m_vScrollbarVisible = FALSE;
         }
     }
             m_vScrollbarVisible = FALSE;
         }
     }
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
             m_vScrollbarVisible = TRUE;
         }
     }
             m_vScrollbarVisible = TRUE;
         }
     }
 
         win->SetForegroundColour( win->GetForegroundColour() );
 
     win->SetCursor( win->GetCursor() );
         win->SetForegroundColour( win->GetForegroundColour() );
 
     win->SetCursor( win->GetCursor() );
+    
+    wxWindowCreateEvent event( win );
+    event.SetEventObject( win );
+    win->GetEventHandler()->ProcessEvent( event );
 
     GdkFunction mode = GDK_COPY;
     switch (function)
     {
     GdkFunction mode = GDK_COPY;
     switch (function)
     {
-        case wxXOR:          mode = GDK_INVERT; break;
-        case wxINVERT:       mode = GDK_XOR; break;
+        case wxXOR:          mode = GDK_XOR;           break;
+        case wxINVERT:       mode = GDK_INVERT;        break;
 #if (GDK_MINOR_VERSION > 0)
 #if (GDK_MINOR_VERSION > 0)
-        case wxOR_REVERSE:   mode = GDK_OR_REVERSE; break;
-        case wxAND_REVERSE:  mode = GDK_AND_REVERSE; break;
-        case wxCLEAR:        mode = GDK_CLEAR; break;
-        case wxSET:          mode = GDK_SET; break;
-        case wxOR_INVERT:    mode = GDK_OR_INVERT; break;
-        case wxAND:          mode = GDK_AND; break;
-        case wxOR:           mode = GDK_OR; break;
-        case wxEQUIV:        mode = GDK_EQUIV; break;
-        case wxNAND:         mode = GDK_NAND; break;
-        case wxAND_INVERT:   mode = GDK_AND_INVERT; break;
+        case wxOR_REVERSE:   mode = GDK_OR_REVERSE;    break;
+        case wxAND_REVERSE:  mode = GDK_AND_REVERSE;   break;
+        case wxCLEAR:        mode = GDK_CLEAR;         break;
+        case wxSET:          mode = GDK_SET;           break;
+        case wxOR_INVERT:    mode = GDK_OR_INVERT;     break;
+        case wxAND:          mode = GDK_AND;           break;
+        case wxOR:           mode = GDK_OR;            break;
+        case wxEQUIV:        mode = GDK_EQUIV;         break;
+        case wxNAND:         mode = GDK_NAND;          break;
+        case wxAND_INVERT:   mode = GDK_AND_INVERT;    break;
 /*   ?   wxSRC_INVERT   GDK_AND_REVERSE, GDK_OR_REVERSE, GDK_OR_INVERT */
 #endif
         default:       break;
 /*   ?   wxSRC_INVERT   GDK_AND_REVERSE, GDK_OR_REVERSE, GDK_OR_INVERT */
 #endif
         default:       break;
 
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
-
     if (!win->m_hasVMT) return;
 
     if (!win->m_hasVMT) return;
 
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
+
     win->SetModified();
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
     win->SetModified();
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
+    if (!win->m_hasVMT) return;
+    
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
 
     win->CalculateScrollbar();
 
     win->CalculateScrollbar();
-    
-    if (!win->m_hasVMT) return;
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
             m_vScrollbarVisible = FALSE;
         }
     }
             m_vScrollbarVisible = FALSE;
         }
     }
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
             m_vScrollbarVisible = TRUE;
         }
     }
             m_vScrollbarVisible = TRUE;
         }
     }
 
         win->SetForegroundColour( win->GetForegroundColour() );
 
     win->SetCursor( win->GetCursor() );
         win->SetForegroundColour( win->GetForegroundColour() );
 
     win->SetCursor( win->GetCursor() );
+    
+    wxWindowCreateEvent event( win );
+    event.SetEventObject( win );
+    win->GetEventHandler()->ProcessEvent( event );