fixed radiobox layouting: asks GTK for best size, does not compute it from string&font anymore (fixes GNU Step theme problem)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2000-02-15 22:07:58 +00:00
parent 418d9d6275
commit 165b6ee097
2 changed files with 36 additions and 22 deletions

View File

@@ -265,13 +265,17 @@ wxSize wxRadioBox::LayoutItems()
for (int i1 = 0; i1< num_of_rows; i1++) for (int i1 = 0; i1< num_of_rows; i1++)
{ {
GtkWidget *button = GTK_WIDGET( node->Data() ); GtkWidget *button = GTK_WIDGET( node->Data() );
GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child );
GdkFont *font = m_widget->style->font; GtkRequisition req;
int len = 22+gdk_string_measure( font, label->label ); req.width = 2;
if (len > max_len) max_len = len; req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
(button, &req );
if (req.width > max_len) max_len = req.width;
gtk_pizza_move( GTK_PIZZA(m_parent->m_wxwindow), button, m_x+x, m_y+y ); gtk_pizza_move( GTK_PIZZA(m_parent->m_wxwindow), button, m_x+x, m_y+y );
y += 22; y += req.height;
node = node->Next(); node = node->Next();
if (!node) break; if (!node) break;
@@ -296,7 +300,7 @@ wxSize wxRadioBox::LayoutItems()
} }
res.x = x+4; res.x = x+4;
res.y += 9; res.y += 4;
} }
else else
{ {
@@ -305,12 +309,15 @@ wxSize wxRadioBox::LayoutItems()
wxNode *node = m_boxes.First(); wxNode *node = m_boxes.First();
while (node) while (node)
{ {
GtkButton *button = GTK_BUTTON( node->Data() ); GtkWidget *button = GTK_WIDGET( node->Data() );
GtkLabel *label = GTK_LABEL( button->child );
GdkFont *font = m_widget->style->font; GtkRequisition req;
int len = 22+gdk_string_measure( font, label->label ); req.width = 2;
if (len > max) max = len; req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
(button, &req );
if (req.width > max) max = req.width;
node = node->Next(); node = node->Next();
} }

View File

@@ -265,13 +265,17 @@ wxSize wxRadioBox::LayoutItems()
for (int i1 = 0; i1< num_of_rows; i1++) for (int i1 = 0; i1< num_of_rows; i1++)
{ {
GtkWidget *button = GTK_WIDGET( node->Data() ); GtkWidget *button = GTK_WIDGET( node->Data() );
GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child );
GdkFont *font = m_widget->style->font; GtkRequisition req;
int len = 22+gdk_string_measure( font, label->label ); req.width = 2;
if (len > max_len) max_len = len; req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
(button, &req );
if (req.width > max_len) max_len = req.width;
gtk_pizza_move( GTK_PIZZA(m_parent->m_wxwindow), button, m_x+x, m_y+y ); gtk_pizza_move( GTK_PIZZA(m_parent->m_wxwindow), button, m_x+x, m_y+y );
y += 22; y += req.height;
node = node->Next(); node = node->Next();
if (!node) break; if (!node) break;
@@ -296,7 +300,7 @@ wxSize wxRadioBox::LayoutItems()
} }
res.x = x+4; res.x = x+4;
res.y += 9; res.y += 4;
} }
else else
{ {
@@ -305,12 +309,15 @@ wxSize wxRadioBox::LayoutItems()
wxNode *node = m_boxes.First(); wxNode *node = m_boxes.First();
while (node) while (node)
{ {
GtkButton *button = GTK_BUTTON( node->Data() ); GtkWidget *button = GTK_WIDGET( node->Data() );
GtkLabel *label = GTK_LABEL( button->child );
GdkFont *font = m_widget->style->font; GtkRequisition req;
int len = 22+gdk_string_measure( font, label->label ); req.width = 2;
if (len > max) max = len; req.height = 2;
(* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
(button, &req );
if (req.width > max) max = req.width;
node = node->Next(); node = node->Next();
} }