Solved a bug in generic wxTreeCtrl whereby CalculatePositions was not completing
due to a missing '!', so scrollbars were not set properly. Tidied up wxMotif scrollbar setting. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -6,6 +6,7 @@ config.guess
|
||||
config.sub
|
||||
wx-config.in
|
||||
mkinstalldirs
|
||||
wxinstall
|
||||
|
||||
src/makeenvs/*.env
|
||||
|
||||
|
@@ -89,3 +89,4 @@ More recently:
|
||||
- Fixed a bug in wxStaticBox.
|
||||
- Controls sample runs, though wxRadioBox doesn't appear and
|
||||
the notebook flickers for a while.
|
||||
- Cured wxTreeCtrl bug: now works pretty well!
|
@@ -779,6 +779,7 @@ void wxTreeCtrl::Expand(const wxTreeItemId& itemId)
|
||||
}
|
||||
|
||||
item->Expand();
|
||||
CalculatePositions();
|
||||
|
||||
RefreshSubtree(item);
|
||||
|
||||
@@ -1381,7 +1382,9 @@ void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item,
|
||||
item->SetY( y-m_lineHeight/3-2 );
|
||||
item->SetHeight( m_lineHeight );
|
||||
|
||||
if ( item->IsExpanded() )
|
||||
// if ( item->IsExpanded() )
|
||||
// return;
|
||||
if ( !item->IsExpanded() ) // Surely this is correct? JACS
|
||||
return;
|
||||
|
||||
wxArrayTreeItems& children = item->GetChildren();
|
||||
|
@@ -370,6 +370,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
|
||||
xmScrolledWindowWidgetClass, m_borderWidget ? (Widget) m_borderWidget : parentWidget,
|
||||
XmNspacing, 0,
|
||||
XmNscrollingPolicy, XmAPPLICATION_DEFINED,
|
||||
// XmNscrollBarDisplayPolicy, XmAS_NEEDED,
|
||||
NULL);
|
||||
|
||||
XtTranslations ptr;
|
||||
@@ -1174,6 +1175,9 @@ void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
|
||||
if (thumbVisible == 0)
|
||||
thumbVisible = 1;
|
||||
|
||||
if (thumbVisible > range)
|
||||
thumbVisible = range;
|
||||
|
||||
XtVaSetValues(scrollBar,
|
||||
XmNvalue, pos,
|
||||
XmNminimum, 0,
|
||||
@@ -1185,6 +1189,66 @@ void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
|
||||
m_scrollPosX = pos;
|
||||
else
|
||||
m_scrollPosY = pos;
|
||||
|
||||
// See notes below. If the scrollbars didn't leave a ghost presence,
|
||||
// this would be OK.
|
||||
#if 0
|
||||
if (range == thumbVisible)
|
||||
{
|
||||
XtUnmanageChild(scrollBar);
|
||||
if (orient == wxHORIZONTAL)
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNhorizontalScrollBar, (Widget) 0,
|
||||
NULL);
|
||||
else
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNverticalScrollBar, (Widget) 0,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
XtManageChild(scrollBar);
|
||||
if (orient == wxHORIZONTAL)
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNhorizontalScrollBar, (Widget) m_hScrollBar,
|
||||
NULL);
|
||||
else
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNverticalScrollBar, (Widget) m_vScrollBar,
|
||||
NULL);
|
||||
}
|
||||
#else
|
||||
// Either both scrollbars are on, or they are off,
|
||||
// otherwise you get a gap where one scrollbar
|
||||
// isn't shown. TODO: try to eliminate this problem.
|
||||
if ((GetScrollThumb(wxHORIZONTAL) >= GetScrollRange(wxHORIZONTAL)) &&
|
||||
(GetScrollThumb(wxVERTICAL) >= GetScrollRange(wxVERTICAL)))
|
||||
{
|
||||
if (m_hScrollBar)
|
||||
XtUnmanageChild((Widget) m_hScrollBar);
|
||||
if (m_vScrollBar)
|
||||
XtUnmanageChild((Widget) m_vScrollBar);
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNhorizontalScrollBar, (Widget) 0,
|
||||
XmNverticalScrollBar, (Widget) 0,
|
||||
NULL);
|
||||
// XmScrolledWindowSetAreas((Widget) m_scrolledWindow,
|
||||
// (Widget) 0, (Widget) 0, (Widget) m_drawingArea);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_hScrollBar)
|
||||
XtManageChild((Widget) m_hScrollBar);
|
||||
if (m_vScrollBar)
|
||||
XtManageChild((Widget) m_vScrollBar);
|
||||
XtVaSetValues((Widget) m_scrolledWindow,
|
||||
XmNhorizontalScrollBar, (Widget) m_hScrollBar,
|
||||
XmNverticalScrollBar, (Widget) m_vScrollBar,
|
||||
NULL);
|
||||
// XmScrolledWindowSetAreas((Widget) m_scrolledWindow,
|
||||
// (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Does a physical scroll
|
||||
|
Reference in New Issue
Block a user