Browse Source

Ignore TopLevelWidget events when invisible

Signed-off-by: falkTX <falktx@falktx.com>
pull/272/head
falkTX 4 years ago
parent
commit
5a6335c21d
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
4 changed files with 34 additions and 8 deletions
  1. +3
    -0
      dgl/src/Cairo.cpp
  2. +3
    -0
      dgl/src/OpenGL.cpp
  3. +24
    -0
      dgl/src/TopLevelWidgetPrivateData.cpp
  4. +4
    -8
      dgl/src/Vulkan.cpp

+ 3
- 0
dgl/src/Cairo.cpp View File

@@ -757,6 +757,9 @@ void SubWidget::PrivateData::display(const uint width, const uint height, const

void TopLevelWidget::PrivateData::display()
{
if (! selfw->pData->visible)
return;

const Size<uint> size(window.getSize());
const uint width = size.getWidth();
const uint height = size.getHeight();


+ 3
- 0
dgl/src/OpenGL.cpp View File

@@ -611,6 +611,9 @@ void SubWidget::PrivateData::display(const uint width, const uint height, const

void TopLevelWidget::PrivateData::display()
{
if (! selfw->pData->visible)
return;

const Size<uint> size(window.getSize());
const uint width = size.getWidth();
const uint height = size.getHeight();


+ 24
- 0
dgl/src/TopLevelWidgetPrivateData.cpp View File

@@ -39,6 +39,10 @@ TopLevelWidget::PrivateData::~PrivateData()

bool TopLevelWidget::PrivateData::keyboardEvent(const KeyboardEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

// give top-level widget chance to catch this event first
if (self->onKeyboard(ev))
return true;
@@ -49,6 +53,10 @@ bool TopLevelWidget::PrivateData::keyboardEvent(const KeyboardEvent& ev)

bool TopLevelWidget::PrivateData::specialEvent(const SpecialEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

// give top-level widget chance to catch this event first
if (self->onSpecial(ev))
return true;
@@ -59,6 +67,10 @@ bool TopLevelWidget::PrivateData::specialEvent(const SpecialEvent& ev)

bool TopLevelWidget::PrivateData::characterInputEvent(const CharacterInputEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

// give top-level widget chance to catch this event first
if (self->onCharacterInput(ev))
return true;
@@ -69,6 +81,10 @@ bool TopLevelWidget::PrivateData::characterInputEvent(const CharacterInputEvent&

bool TopLevelWidget::PrivateData::mouseEvent(const MouseEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

MouseEvent rev = ev;

if (window.pData->autoScaling)
@@ -89,6 +105,10 @@ bool TopLevelWidget::PrivateData::mouseEvent(const MouseEvent& ev)

bool TopLevelWidget::PrivateData::motionEvent(const MotionEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

MotionEvent rev = ev;

if (window.pData->autoScaling)
@@ -109,6 +129,10 @@ bool TopLevelWidget::PrivateData::motionEvent(const MotionEvent& ev)

bool TopLevelWidget::PrivateData::scrollEvent(const ScrollEvent& ev)
{
// ignore event if we are not visible
if (! selfw->pData->visible)
return false;

ScrollEvent rev = ev;

if (window.pData->autoScaling)


+ 4
- 8
dgl/src/Vulkan.cpp View File

@@ -211,20 +211,16 @@ void SubWidget::PrivateData::display(const uint width, const uint height, const

void TopLevelWidget::PrivateData::display()
{
if (! selfw->pData->visible)
return;

const Size<uint> size(window.getSize());
const uint width = size.getWidth();
const uint height = size.getHeight();

const double autoScaleFactor = window.pData->autoScaleFactor;

// FIXME anything needed here?
#if 0
// full viewport size
if (window.pData->autoScaling)
glViewport(0, -(height * autoScaleFactor - height), width * autoScaleFactor, height * autoScaleFactor);
else
glViewport(0, 0, width, height);
#endif
// TODO

// main widget drawing
self->onDisplay();


Loading…
Cancel
Save