- if (GetWindowStyle() & wxSP_NOSASH)
- return;
-
- int w, h;
- GetClientSize(&w, &h);
-
- if ( GetWindowStyleFlag() & wxSP_3DSASH )
- {
- if ( m_splitMode == wxSPLIT_VERTICAL )
- {
- dc.SetPen(*m_facePen);
-
- if (HasFlag( wxSP_SASH_AQUA ))
- dc.SetBrush(*wxWHITE_BRUSH);
- else
- dc.SetBrush(*m_faceBrush);
- dc.DrawRectangle(m_sashPosition + 2, 0 , m_sashSize - 4, h );
-
- dc.SetBrush(*wxTRANSPARENT_BRUSH);
-
- dc.SetPen(*m_lightShadowPen);
- int xShadow = m_borderSize ? m_borderSize - 1 : 0 ;
- dc.DrawLine(m_sashPosition, xShadow , m_sashPosition, h-m_borderSize);
-
- dc.SetPen(*m_hilightPen);
- dc.DrawLine(m_sashPosition+1, m_borderSize - 2, m_sashPosition+1, h - m_borderSize+2);
-
- if (!HasFlag( wxSP_SASH_AQUA ))
- dc.SetPen(*m_mediumShadowPen);
-
- int yMedium = m_borderSize ? h-m_borderSize+1 : h ;
- dc.DrawLine(m_sashPosition+m_sashSize-2, xShadow, m_sashPosition+m_sashSize-2, yMedium);
-
- if (HasFlag( wxSP_SASH_AQUA ))
- dc.SetPen(*m_lightShadowPen);
- else
- dc.SetPen(*m_darkShadowPen);
- dc.DrawLine(m_sashPosition+m_sashSize-1, m_borderSize, m_sashPosition+m_sashSize-1, h-m_borderSize );
-
- // Draw the top and bottom edges of the sash, if requested
- if (GetWindowStyle() & wxSP_FULLSASH)
- {
- // Top
- dc.SetPen(*m_hilightPen);
- dc.DrawLine(m_sashPosition+1, m_borderSize, m_sashPosition+m_sashSize-1, m_borderSize);
-
- // Bottom
- dc.SetPen(*m_darkShadowPen);
- dc.DrawLine(m_sashPosition+1, h-m_borderSize-1, m_sashPosition+m_sashSize-1, h-m_borderSize-1);
- }
- }
- else
- {
- dc.SetPen(*m_facePen);
- if (HasFlag( wxSP_SASH_AQUA ))
- dc.SetBrush(*wxWHITE_BRUSH);
- else
- dc.SetBrush(*m_faceBrush);
- dc.DrawRectangle( m_borderSize-2, m_sashPosition + 2, w-m_borderSize+2, m_sashSize - 4);
-
- dc.SetBrush(*wxTRANSPARENT_BRUSH);
-
- dc.SetPen(*m_lightShadowPen);
- dc.DrawLine(m_borderSize-1, m_sashPosition, w-m_borderSize, m_sashPosition);
-
- dc.SetPen(*m_hilightPen);
- dc.DrawLine(m_borderSize-2, m_sashPosition+1, w-m_borderSize+1, m_sashPosition+1);
-
- if (!HasFlag( wxSP_SASH_AQUA ))
- dc.SetPen(*m_mediumShadowPen);
- dc.DrawLine(m_borderSize-1, m_sashPosition+m_sashSize-2, w-m_borderSize+1, m_sashPosition+m_sashSize-2);
-
- if (HasFlag( wxSP_SASH_AQUA ))
- dc.SetPen(*m_lightShadowPen);
- else
- dc.SetPen(*m_darkShadowPen);
- dc.DrawLine(m_borderSize, m_sashPosition+m_sashSize-1, w-m_borderSize, m_sashPosition+m_sashSize-1);
-
- // Draw the left and right edges of the sash, if requested
- if (GetWindowStyle() & wxSP_FULLSASH)
- {
- // Left
- dc.SetPen(*m_hilightPen);
- dc.DrawLine(m_borderSize, m_sashPosition, m_borderSize, m_sashPosition+m_sashSize);
-
- // Right
- dc.SetPen(*m_darkShadowPen);
- dc.DrawLine(w-m_borderSize-1, m_sashPosition+1, w-m_borderSize-1, m_sashPosition+m_sashSize-1);
- }
- }
- }
- else
- {
- if ( m_splitMode == wxSPLIT_VERTICAL )
- {
- dc.SetPen(*wxBLACK_PEN);
- dc.SetBrush(*wxBLACK_BRUSH);
- int h1 = h-1;
- int y1 = 0;
- if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
- h1 += 1; // Not sure why this is necessary...
- if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
- {
- y1 = 2; h1 -= 3;
- }
- dc.DrawRectangle(m_sashPosition, y1, m_sashSize, h1);
- }
- else
- {
- dc.SetPen(*wxBLACK_PEN);
- dc.SetBrush(*wxBLACK_BRUSH);
- int w1 = w-1;
- int x1 = 0;
- if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER && (GetWindowStyleFlag() & wxSP_3DBORDER) != wxSP_3DBORDER )
- w1 ++;
- if ( (GetWindowStyleFlag() & wxSP_3DBORDER) == wxSP_3DBORDER)
- {
- x1 = 2; w1 -= 3;
- }
- dc.DrawRectangle(x1, m_sashPosition, w1, m_sashSize);
- }