]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/gizmos/dynamicsash.cpp
Committing in .
[wxWidgets.git] / contrib / src / gizmos / dynamicsash.cpp
index 19b26de35a96e8898a071f23b224a35725726e70..6e80bbacb4c77d68b478a20f08ba8bfe29a61dc5 100644 (file)
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#ifdef __GNUG__
+    #pragma implementation "splittree.h"
+#endif
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWindows headers)
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif
+
 #include "wx/gizmos/dynamicsash.h"
 
 #include "wx/gizmos/dynamicsash.h"
 
+
+const wxChar* wxDynamicSashWindowNameStr = wxT("dynamicSashWindow");
+
+
 /*
     wxDynamicSashWindow works by internally storing a tree of Implementation
     objects (wxDynamicSsahWindowImpl) and Leaf objects
 /*
     wxDynamicSashWindow works by internally storing a tree of Implementation
     objects (wxDynamicSsahWindowImpl) and Leaf objects
@@ -331,7 +352,8 @@ void wxDynamicSashWindowImpl::DrawSash(int x, int y) const {
     dc.SetBrush(brush);
     dc.SetLogicalFunction(wxXOR);
 
     dc.SetBrush(brush);
     dc.SetLogicalFunction(wxXOR);
 
-    if (m_dragging == DSR_CORNER) {
+    if ((m_dragging == DSR_CORNER) &&
+        (m_window->GetWindowStyle() & wxDS_DRAG_CORNER) != 0) {
         int cx = 0;
         int cy = 0;
 
         int cx = 0;
         int cy = 0;
 
@@ -533,7 +555,6 @@ void wxDynamicSashWindowImpl::Unify(int panel) {
 }
 
 void wxDynamicSashWindowImpl::Split(int px, int py) {
 }
 
 void wxDynamicSashWindowImpl::Split(int px, int py) {
-    m_window->Hide();
 
     m_add_child_target = NULL;
 
 
     m_add_child_target = NULL;
 
@@ -580,10 +601,9 @@ void wxDynamicSashWindowImpl::Split(int px, int py) {
     m_leaf = NULL;
 
     m_container->Layout();
     m_leaf = NULL;
 
     m_container->Layout();
-
-    m_window->Show();
 }
 
 }
 
+
 /*  This code is called when you finish resizing a view by dragging the
     corner tab, but I think this implementation is lousy and will surprise
     the user more often than it will do what they are trying to do.  What
 /*  This code is called when you finish resizing a view by dragging the
     corner tab, but I think this implementation is lousy and will surprise
     the user more often than it will do what they are trying to do.  What
@@ -775,7 +795,8 @@ void wxDynamicSashWindowImpl::OnPress(wxMouseEvent &event) {
 }
 
 void wxDynamicSashWindowImpl::OnRelease(wxMouseEvent &event) {
 }
 
 void wxDynamicSashWindowImpl::OnRelease(wxMouseEvent &event) {
-    if (m_dragging == DSR_CORNER) {
+    if ((m_dragging == DSR_CORNER) &&
+        (m_window->GetWindowStyle() & wxDS_DRAG_CORNER) != 0) {
         DrawSash(m_drag_x, m_drag_y);
         m_container->ReleaseMouse();
 
         DrawSash(m_drag_x, m_drag_y);
         m_container->ReleaseMouse();
 
@@ -877,7 +898,7 @@ bool wxDynamicSashWindowLeaf::Create() {
     m_viewport->SetEventHandler(this);
     Connect(-1, wxEVT_DYNAMIC_SASH_REPARENT, (wxObjectEventFunction)&wxDynamicSashWindowLeaf::OnReparent);
 
     m_viewport->SetEventHandler(this);
     Connect(-1, wxEVT_DYNAMIC_SASH_REPARENT, (wxObjectEventFunction)&wxDynamicSashWindowLeaf::OnReparent);
 
-    if (m_impl->m_window->GetWindowStyle() & wxMANAGE_SCROLLBARS) {
+    if (m_impl->m_window->GetWindowStyle() & wxDS_MANAGE_SCROLLBARS) {
         m_hscroll->SetEventHandler(this);
         m_vscroll->SetEventHandler(this);
 
         m_hscroll->SetEventHandler(this);
         m_vscroll->SetEventHandler(this);
 
@@ -974,7 +995,7 @@ DynamicSashRegion wxDynamicSashWindowLeaf::GetRegion(int x, int y) {
 
 void wxDynamicSashWindowLeaf::ResizeChild(wxSize size) {
     if (m_child) {
 
 void wxDynamicSashWindowLeaf::ResizeChild(wxSize size) {
     if (m_child) {
-        if (m_impl->m_window->GetWindowStyle() & wxMANAGE_SCROLLBARS) {
+        if (m_impl->m_window->GetWindowStyle() & wxDS_MANAGE_SCROLLBARS) {
             m_child->SetSize(size);
             wxSize best_size = m_child->GetBestSize();
             if (best_size.GetWidth() < size.GetWidth()) {
             m_child->SetSize(size);
             wxSize best_size = m_child->GetBestSize();
             if (best_size.GetWidth() < size.GetWidth()) {
@@ -1041,8 +1062,8 @@ void wxDynamicSashWindowLeaf::OnPaint(wxPaintEvent &event) {
     dc.SetBackground(wxBrush(m_impl->m_container->GetBackgroundColour(), wxSOLID));
     dc.Clear();
 
     dc.SetBackground(wxBrush(m_impl->m_container->GetBackgroundColour(), wxSOLID));
     dc.Clear();
 
-    wxPen highlight(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNHIGHLIGHT), 1, wxSOLID);
-    wxPen shadow(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNSHADOW), 1, wxSOLID);
+    wxPen highlight(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNHIGHLIGHT), 1, wxSOLID);
+    wxPen shadow(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW), 1, wxSOLID);
     wxPen black(*wxBLACK, 1, wxSOLID);
 
     wxSize size = m_impl->m_container->GetSize();
     wxPen black(*wxBLACK, 1, wxSOLID);
 
     wxSize size = m_impl->m_container->GetSize();
@@ -1085,7 +1106,6 @@ void wxDynamicSashWindowLeaf::OnPaint(wxPaintEvent &event) {
     dc.DrawLine(9, h - sh - 3, 9, h - 4);
     dc.DrawLine(9, h - 4, 3, h - 4);
 
     dc.DrawLine(9, h - sh - 3, 9, h - 4);
     dc.DrawLine(9, h - 4, 3, h - 4);
 
-
     int cy = (h - sh + h - 6) / 2 + 1;
     int cx = (w - sw + w - 6) / 2 + 1;
     int sy = cy;
     int cy = (h - sh + h - 6) / 2 + 1;
     int cx = (w - sw + w - 6) / 2 + 1;
     int sy = cy;
@@ -1138,7 +1158,8 @@ void wxDynamicSashWindowLeaf::OnMouseMove(wxMouseEvent &event) {
         cursor = wxCursor(wxCURSOR_SIZENS);
     } else if (region == DSR_VERTICAL_TAB) {
         cursor = wxCursor(wxCURSOR_SIZEWE);
         cursor = wxCursor(wxCURSOR_SIZENS);
     } else if (region == DSR_VERTICAL_TAB) {
         cursor = wxCursor(wxCURSOR_SIZEWE);
-    } else if (region == DSR_CORNER) {
+    } else if ((region == DSR_CORNER) &&
+               (m_impl->m_window->GetWindowStyle() & wxDS_DRAG_CORNER) != 0) {
         cursor = wxCursor(wxCURSOR_SIZENWSE);
     } else if (region == DSR_LEFT_EDGE || region == DSR_TOP_EDGE
                 || region == DSR_RIGHT_EDGE || region == DSR_BOTTOM_EDGE) {
         cursor = wxCursor(wxCURSOR_SIZENWSE);
     } else if (region == DSR_LEFT_EDGE || region == DSR_TOP_EDGE
                 || region == DSR_RIGHT_EDGE || region == DSR_BOTTOM_EDGE) {
@@ -1163,6 +1184,9 @@ void wxDynamicSashWindowLeaf::OnLeave(wxMouseEvent &event) {
 void wxDynamicSashWindowLeaf::OnPress(wxMouseEvent &event) {
     DynamicSashRegion region = GetRegion(event.m_x, event.m_y);
 
 void wxDynamicSashWindowLeaf::OnPress(wxMouseEvent &event) {
     DynamicSashRegion region = GetRegion(event.m_x, event.m_y);
 
+    if ((region == DSR_CORNER) && (m_impl->m_window->GetWindowStyle() & wxDS_DRAG_CORNER) == 0)
+        return;
+
     if (region == DSR_HORIZONTAL_TAB || region == DSR_VERTICAL_TAB || region == DSR_CORNER) {
         m_impl->m_dragging = region;
         m_impl->m_drag_x = event.m_x;
     if (region == DSR_HORIZONTAL_TAB || region == DSR_VERTICAL_TAB || region == DSR_CORNER) {
         m_impl->m_dragging = region;
         m_impl->m_drag_x = event.m_x;