corrections to size calculations for state images (see #9591)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -853,33 +853,27 @@ wxGenericTreeItem::DoCalculateSize(wxGenericTreeCtrl* control,
|
|||||||
|
|
||||||
int text_h = m_heightText + 2;
|
int text_h = m_heightText + 2;
|
||||||
|
|
||||||
int image_h = 0;
|
int image_h = 0, image_w = 0;
|
||||||
int image_w = 0;
|
|
||||||
int image = GetCurrentImage();
|
int image = GetCurrentImage();
|
||||||
if ( image != NO_IMAGE )
|
if ( image != NO_IMAGE && control->m_imageListNormal )
|
||||||
{
|
{
|
||||||
if ( control->m_imageListNormal )
|
control->m_imageListNormal->GetSize(image, image_w, image_h);
|
||||||
{
|
image_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
control->m_imageListNormal->GetSize( image, image_w, image_h );
|
|
||||||
image_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int state_h = 0, state_w = 0;
|
int state_h = 0, state_w = 0;
|
||||||
int state = GetState();
|
int state = GetState();
|
||||||
if ( state != wxTREE_ITEMSTATE_NONE )
|
if ( state != wxTREE_ITEMSTATE_NONE && control->m_imageListState )
|
||||||
{
|
{
|
||||||
if ( control->m_imageListState )
|
control->m_imageListState->GetSize(state, state_w, state_h);
|
||||||
{
|
if ( image_w != 0 )
|
||||||
control->m_imageListState->GetSize( state, state_w, state_h );
|
state_w += MARGIN_BETWEEN_STATE_AND_IMAGE;
|
||||||
if ( image != NO_IMAGE )
|
else
|
||||||
state_w += MARGIN_BETWEEN_STATE_AND_IMAGE;
|
state_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
else
|
|
||||||
state_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_height = (image_h > text_h) ? image_h : text_h;
|
int img_h = wxMax(state_h, image_h);
|
||||||
|
m_height = wxMax(img_h, text_h);
|
||||||
|
|
||||||
if (m_height < 30)
|
if (m_height < 30)
|
||||||
m_height += 2; // at least 2 pixels
|
m_height += 2; // at least 2 pixels
|
||||||
@@ -2474,7 +2468,7 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
|||||||
{
|
{
|
||||||
if ( m_imageListNormal )
|
if ( m_imageListNormal )
|
||||||
{
|
{
|
||||||
m_imageListNormal->GetSize( image, image_w, image_h );
|
m_imageListNormal->GetSize(image, image_w, image_h);
|
||||||
image_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
image_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2489,8 +2483,8 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
|||||||
{
|
{
|
||||||
if ( m_imageListState )
|
if ( m_imageListState )
|
||||||
{
|
{
|
||||||
m_imageListState->GetSize( state, state_w, state_h );
|
m_imageListState->GetSize(state, state_w, state_h);
|
||||||
if ( image != NO_IMAGE )
|
if ( image_w != 0 )
|
||||||
state_w += MARGIN_BETWEEN_STATE_AND_IMAGE;
|
state_w += MARGIN_BETWEEN_STATE_AND_IMAGE;
|
||||||
else
|
else
|
||||||
state_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
state_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
@@ -2587,8 +2581,10 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
|||||||
// except for custom item backgrounds, works for both kinds of theme.
|
// except for custom item backgrounds, works for both kinds of theme.
|
||||||
else if (drawItemBackground)
|
else if (drawItemBackground)
|
||||||
{
|
{
|
||||||
wxRect rect( item->GetX()-2, item->GetY()+offset,
|
wxRect rect( item->GetX() + state_w + image_w - 2,
|
||||||
item->GetWidth()+2, total_h-offset );
|
item->GetY() + offset,
|
||||||
|
item->GetWidth() - state_w - image_w + 2,
|
||||||
|
total_h - offset );
|
||||||
if ( hasBgColour )
|
if ( hasBgColour )
|
||||||
{
|
{
|
||||||
dc.DrawRectangle( rect );
|
dc.DrawRectangle( rect );
|
||||||
@@ -3336,15 +3332,28 @@ bool wxGenericTreeCtrl::GetBoundingRect(const wxTreeItemId& item,
|
|||||||
|
|
||||||
if ( textOnly )
|
if ( textOnly )
|
||||||
{
|
{
|
||||||
rect.x = i->GetX();
|
int image_h = 0, image_w = 0;
|
||||||
rect.width = i->GetWidth();
|
int image = ((wxGenericTreeItem*) item.m_pItem)->GetCurrentImage();
|
||||||
|
if ( image != NO_IMAGE && m_imageListNormal )
|
||||||
if ( m_imageListNormal )
|
|
||||||
{
|
{
|
||||||
int image_w, image_h;
|
m_imageListNormal->GetSize( image, image_w, image_h );
|
||||||
m_imageListNormal->GetSize( 0, image_w, image_h );
|
image_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
rect.width += image_w + MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int state_h = 0, state_w = 0;
|
||||||
|
int state = ((wxGenericTreeItem*) item.m_pItem)->GetState();
|
||||||
|
if ( state != wxTREE_ITEMSTATE_NONE && m_imageListState )
|
||||||
|
{
|
||||||
|
m_imageListState->GetSize( state, state_w, state_h );
|
||||||
|
if ( image_w != 0 )
|
||||||
|
state_w += MARGIN_BETWEEN_STATE_AND_IMAGE;
|
||||||
|
else
|
||||||
|
state_w += MARGIN_BETWEEN_IMAGE_AND_TEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
rect.x = i->GetX() + state_w + image_w;
|
||||||
|
rect.width = i->GetWidth() - state_w - image_w;
|
||||||
|
|
||||||
}
|
}
|
||||||
else // the entire line
|
else // the entire line
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user