Browse Source

Simplify Window class

gh-pages
falkTX 11 years ago
parent
commit
ec5d3989d5
1 changed files with 57 additions and 116 deletions
  1. +57
    -116
      dgl/src/Window.cpp

+ 57
- 116
dgl/src/Window.cpp View File

@@ -277,6 +277,49 @@ struct Window::PrivateData {


// ------------------------------------------------------------------- // -------------------------------------------------------------------


void exec_init()
{
DBG("Window modal loop starting..."); DBGF;
DISTRHO_SAFE_ASSERT_RETURN(fModal.parent != nullptr, setVisible(true));

fModal.enabled = true;
fModal.parent->fModal.childFocus = this;

#ifdef DISTRHO_OS_WINDOWS
// Center this window
PuglInternals* const parentImpl = fModal.parent->fView->impl;

RECT curRect;
RECT parentRect;
GetWindowRect(hwnd, &curRect);
GetWindowRect(parentImpl->hwnd, &parentRect);

int x = parentRect.left+(parentRect.right-curRect.right)/2;
int y = parentRect.top +(parentRect.bottom-curRect.bottom)/2;

SetWindowPos(hwnd, 0, x, y, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
UpdateWindow(hwnd);
#endif

fModal.parent->setVisible(true);
setVisible(true);

DBG("Ok\n");
}

void exec_fini()
{
DBG("Window modal loop stopping..."); DBGF;
fModal.enabled = false;

if (fModal.parent != nullptr)
fModal.parent->fModal.childFocus = nullptr;

DBG("Ok\n");
}

// -------------------------------------------------------------------

void focus() void focus()
{ {
DBG("Window focus\n"); DBG("Window focus\n");
@@ -295,19 +338,8 @@ struct Window::PrivateData {
#endif #endif
} }


void repaint() noexcept
{
//DBG("Window repaint\n");
puglPostRedisplay(fView);
}

// ------------------------------------------------------------------- // -------------------------------------------------------------------


bool isVisible() const noexcept
{
return fVisible;
}

void setVisible(const bool yesNo) void setVisible(const bool yesNo)
{ {
if (fVisible == yesNo) if (fVisible == yesNo)
@@ -363,11 +395,6 @@ struct Window::PrivateData {


// ------------------------------------------------------------------- // -------------------------------------------------------------------


bool isResizable() const noexcept
{
return fResizable;
}

void setResizable(const bool yesNo) void setResizable(const bool yesNo)
{ {
if (fResizable == yesNo) if (fResizable == yesNo)
@@ -390,21 +417,6 @@ struct Window::PrivateData {


// ------------------------------------------------------------------- // -------------------------------------------------------------------


int getWidth() const noexcept
{
return fView->width;
}

int getHeight() const noexcept
{
return fView->height;
}

Size<int> getSize() const noexcept
{
return Size<int>(fView->width, fView->height);
}

void setSize(uint width, uint height, const bool forced = false) void setSize(uint width, uint height, const bool forced = false)
{ {
if (width == 0 || height == 0) if (width == 0 || height == 0)
@@ -473,7 +485,7 @@ struct Window::PrivateData {
XFlush(xDisplay); XFlush(xDisplay);
#endif #endif


repaint();
puglPostRedisplay(fView);
} }


// ------------------------------------------------------------------- // -------------------------------------------------------------------
@@ -509,28 +521,6 @@ struct Window::PrivateData {


// ------------------------------------------------------------------- // -------------------------------------------------------------------


App& getApp() const noexcept
{
return fApp;
}

int getModifiers() const noexcept
{
return puglGetModifiers(fView);
}

uint getEventTimestamp() const noexcept
{
return puglGetEventTimestamp(fView);
}

intptr_t getWindowId() const noexcept
{
return puglGetNativeWindow(fView);
}

// -------------------------------------------------------------------

void addWidget(Widget* const widget) void addWidget(Widget* const widget)
{ {
fWidgets.push_back(widget); fWidgets.push_back(widget);
@@ -583,49 +573,6 @@ struct Window::PrivateData {


// ------------------------------------------------------------------- // -------------------------------------------------------------------


void exec_init()
{
DBG("Window modal loop starting..."); DBGF;
DISTRHO_SAFE_ASSERT_RETURN(fModal.parent != nullptr, setVisible(true));

fModal.enabled = true;
fModal.parent->fModal.childFocus = this;

#ifdef DISTRHO_OS_WINDOWS
// Center this window
PuglInternals* const parentImpl = fModal.parent->fView->impl;

RECT curRect;
RECT parentRect;
GetWindowRect(hwnd, &curRect);
GetWindowRect(parentImpl->hwnd, &parentRect);

int x = parentRect.left+(parentRect.right-curRect.right)/2;
int y = parentRect.top +(parentRect.bottom-curRect.bottom)/2;

SetWindowPos(hwnd, 0, x, y, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
UpdateWindow(hwnd);
#endif

fModal.parent->setVisible(true);
setVisible(true);

DBG("Ok\n");
}

void exec_fini()
{
DBG("Window modal loop stopping..."); DBGF;
fModal.enabled = false;

if (fModal.parent != nullptr)
fModal.parent->fModal.childFocus = nullptr;

DBG("Ok\n");
}

// -------------------------------------------------------------------

void onDisplay() void onDisplay()
{ {
//DBG("PUGL: onDisplay\n"); //DBG("PUGL: onDisplay\n");
@@ -850,19 +797,13 @@ struct Window::PrivateData {
// Window // Window


Window::Window(App& app) Window::Window(App& app)
: pData(new PrivateData(app, this))
{
}
: pData(new PrivateData(app, this)) {}


Window::Window(App& app, Window& parent) Window::Window(App& app, Window& parent)
: pData(new PrivateData(app, this, parent))
{
}
: pData(new PrivateData(app, this, parent)) {}


Window::Window(App& app, intptr_t parentId) Window::Window(App& app, intptr_t parentId)
: pData(new PrivateData(app, this, parentId))
{
}
: pData(new PrivateData(app, this, parentId)) {}


Window::~Window() Window::~Window()
{ {
@@ -896,12 +837,12 @@ void Window::focus()


void Window::repaint() noexcept void Window::repaint() noexcept
{ {
pData->repaint();
puglPostRedisplay(pData->fView);
} }


bool Window::isVisible() const noexcept bool Window::isVisible() const noexcept
{ {
return pData->isVisible();
return pData->fVisible;
} }


void Window::setVisible(bool yesNo) void Window::setVisible(bool yesNo)
@@ -911,7 +852,7 @@ void Window::setVisible(bool yesNo)


bool Window::isResizable() const noexcept bool Window::isResizable() const noexcept
{ {
return pData->isResizable();
return pData->fResizable;
} }


void Window::setResizable(bool yesNo) void Window::setResizable(bool yesNo)
@@ -921,17 +862,17 @@ void Window::setResizable(bool yesNo)


int Window::getWidth() const noexcept int Window::getWidth() const noexcept
{ {
return pData->getWidth();
return pData->fView->width;
} }


int Window::getHeight() const noexcept int Window::getHeight() const noexcept
{ {
return pData->getHeight();
return pData->fView->height;
} }


Size<int> Window::getSize() const noexcept Size<int> Window::getSize() const noexcept
{ {
return pData->getSize();
return Size<int>(pData->fView->width, pData->fView->height);
} }


void Window::setSize(uint width, uint height) void Window::setSize(uint width, uint height)
@@ -951,22 +892,22 @@ void Window::setTransientWinId(intptr_t winId)


App& Window::getApp() const noexcept App& Window::getApp() const noexcept
{ {
return pData->getApp();
return pData->fApp;
} }


int Window::getModifiers() const noexcept int Window::getModifiers() const noexcept
{ {
return pData->getModifiers();
return puglGetModifiers(pData->fView);
} }


uint Window::getEventTimestamp() const noexcept uint Window::getEventTimestamp() const noexcept
{ {
return pData->getEventTimestamp();
return puglGetEventTimestamp(pData->fView);
} }


intptr_t Window::getWindowId() const noexcept intptr_t Window::getWindowId() const noexcept
{ {
return pData->getWindowId();
return puglGetNativeWindow(pData->fView);
} }


void Window::_addWidget(Widget* const widget) void Window::_addWidget(Widget* const widget)


Loading…
Cancel
Save