In the current contrib/fl implementation, all control bars
in the frame layout either float or they don't. I added
code to allow the bar floating to be determined on a bar-
by-bar basis. That is, this patch enables some control
bars to float while keeping others locked.
Kevin Yochum
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18127
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
bool mHasLeftHandle;
bool mHasRightHandle;
+ // determines if this bar can float. The layout's setting as priority. For
+ // example, if the layout's mFloatingOn is false, this setting is irrelevant
+ // since nothing will float at all. If the layout's floating is on, use this
+ // setting to prevent specific bars from floating. In other words, all bars
+ // float by default and floating can be turned off on individual bars.
+ bool mFloatingOn; // default: ON (which is also the layout's mFloatingOn default setting)
+
cbDimInfo mDimInfo; // preferred sizes for each, control bar state
int mState; // (see definition of controlbar states)
void wxFrameLayout::SetBarState( cbBarInfo* pBar, int newState, bool updateNow )
{
- if ( newState == wxCBAR_FLOATING && !mFloatingOn )
+ if ( newState == wxCBAR_FLOATING && !(mFloatingOn && pBar->mFloatingOn))
return;
void wxFrameLayout::RepositionFloatedBar( cbBarInfo* pBar )
{
- if ( !mFloatingOn ) return;
+ if ( !(mFloatingOn && pBar->mFloatingOn)) return;
wxNode* pNode = mFloatedFrames.First();
}
else
{
- if ( !mFloatingOn ) return;
+ if ( !(mFloatingOn && pBar->mFloatingOn) )
+ return;
// float it
cbBarInfo::cbBarInfo(void)
: mpRow( NULL ),
-
mpNext( NULL ),
- mpPrev( NULL )
+ mpPrev( NULL ),
+ mFloatingOn( TRUE )
{}
cbBarInfo::~cbBarInfo()