Browse Source

Cleanup, cut outer bounds of widgets

gh-pages
falkTX 11 years ago
parent
commit
0432f4de23
1 changed files with 13 additions and 13 deletions
  1. +13
    -13
      dgl/src/Window.cpp

+ 13
- 13
dgl/src/Window.cpp View File

@@ -562,6 +562,8 @@ struct Window::PrivateData {
{ {
fSelf->onDisplayBefore(); fSelf->onDisplayBefore();


bool needsDisableScissor = false;

FOR_EACH_WIDGET(it) FOR_EACH_WIDGET(it)
{ {
Widget* const widget(*it); Widget* const widget(*it);
@@ -575,32 +577,30 @@ struct Window::PrivateData {
{ {
// full viewport size // full viewport size
glViewport(0, 0, fView->width, fView->height); glViewport(0, 0, fView->width, fView->height);

// display widget
widget->onDisplay();
} }
else if (! widget->fNeedsScaling) else if (! widget->fNeedsScaling)
{ {
// only set viewport pos // only set viewport pos
glViewport(widget->getAbsoluteX(), /*fView->height - widget->getHeight()*/ - widget->getAbsoluteY(), fView->width, fView->height); glViewport(widget->getAbsoluteX(), /*fView->height - widget->getHeight()*/ - widget->getAbsoluteY(), fView->width, fView->height);


// display widget
widget->onDisplay();
// then cut the outer bounds
glScissor(widget->getAbsoluteX(), fView->height - widget->getHeight() - widget->getAbsoluteY(), widget->getWidth(), widget->getHeight());
glEnable(GL_SCISSOR_TEST);
needsDisableScissor = true;
} }
else else
{ {
// limit viewport to widget bounds // limit viewport to widget bounds
glViewport(widget->getAbsoluteX(), fView->height - widget->getHeight() - widget->getAbsoluteY(), widget->getWidth(), widget->getHeight()); glViewport(widget->getAbsoluteX(), fView->height - widget->getHeight() - widget->getAbsoluteY(), widget->getWidth(), widget->getHeight());
}


// scale contents to match viewport size
glPushMatrix();
glScalef(float(fView->width)/float(widget->getWidth()), float(fView->height)/float(widget->getHeight()), 1.0f);

// display widget
widget->onDisplay();
// display widget
widget->onDisplay();


// done
glPopMatrix();
if (needsDisableScissor)
{
glDisable(GL_SCISSOR_TEST);
needsDisableScissor = false;
} }
} }
} }


Loading…
Cancel
Save