diff --git a/panda/src/gui/guiLabel.cxx b/panda/src/gui/guiLabel.cxx index 75c3e5a420..a974e7de15 100644 --- a/panda/src/gui/guiLabel.cxx +++ b/panda/src/gui/guiLabel.cxx @@ -158,14 +158,22 @@ void GuiLabel::get_extents(float& l, float& r, float& b, float& t) { case SIMPLE_TEXT: { TextNode* n = DCAST(TextNode, _geom); - LVector3f ul = n->get_upper_left_3d() - LPoint3f::origin(); - LVector3f lr = n->get_lower_right_3d() - LPoint3f::origin(); - LVector3f up = LVector3f::up(); - LVector3f right = LVector3f::right(); - l = ul.dot(right); - r = lr.dot(right); - b = lr.dot(up); - t = ul.dot(up); + if (n->has_card()) { + LVecBase4f v = n->get_card_transformed(); + l = v[0]; + r = v[1]; + b = v[2]; + t = v[3]; + } else { + LVector3f ul = n->get_upper_left_3d() - LPoint3f::origin(); + LVector3f lr = n->get_lower_right_3d() - LPoint3f::origin(); + LVector3f up = LVector3f::up(); + LVector3f right = LVector3f::right(); + l = ul.dot(right); + r = lr.dot(right); + b = lr.dot(up); + t = ul.dot(up); + } } break; case SIMPLE_TEXTURE: diff --git a/panda/src/testbed/gui_demo.cxx b/panda/src/testbed/gui_demo.cxx index 0d5069eb43..0058855413 100644 --- a/panda/src/testbed/gui_demo.cxx +++ b/panda/src/testbed/gui_demo.cxx @@ -256,10 +256,14 @@ static void setup_gui(void) { GuiButton* b5 = new GuiButton("fox", b5l1, b5l2, b5l3, b5l3, b5l1); b5->set_scale(0.1); f1->add_item(b5); - f1->pack_item(b2, GuiFrame::UNDER, b1); - f1->pack_item(b3, GuiFrame::UNDER, b2); - f1->pack_item(b4, GuiFrame::UNDER, b3); - f1->pack_item(b5, GuiFrame::UNDER, b4); + f1->pack_item(b2, GuiFrame::UNDER, b1, 0.05); + f1->pack_item(b2, GuiFrame::ALIGN_LEFT, b1); + f1->pack_item(b3, GuiFrame::UNDER, b2, 0.05); + f1->pack_item(b3, GuiFrame::ALIGN_LEFT, b2); + f1->pack_item(b4, GuiFrame::UNDER, b3, 0.05); + f1->pack_item(b4, GuiFrame::ALIGN_LEFT, b3); + f1->pack_item(b5, GuiFrame::UNDER, b4, 0.05); + f1->pack_item(b5, GuiFrame::ALIGN_LEFT, b4); float w, w1, w2; w1 = b1l1->get_width(); w2 = b2l1->get_width(); @@ -285,6 +289,7 @@ static void setup_gui(void) { b5l1->set_width(w); b5l2->set_width(w); b5l3->set_width(w); + f1->recompute(); f1->manage(mgr, event_handler); }