commit 0469b08e20707e608ba3f4e74d5ead7a173a7983
parent 7ad38d442c13249819b69c9facb37b161d9719a7
Author: falkTX <falktx@gmail.com>
Date: Tue, 13 May 2014 17:43:31 +0100
pugl related changes
Diffstat:
3 files changed, 32 insertions(+), 48 deletions(-)
diff --git a/dgl/src/Window.cpp b/dgl/src/Window.cpp
@@ -15,13 +15,12 @@
*/
// we need this for now
-#define XKEYFOCUSGRAB 1
+#define PUGL_GRAB_FOCUS 1
#include "AppPrivateData.hpp"
#include "../Widget.hpp"
#include "../Window.hpp"
-#include <cassert>
#include <cstdio>
#include <list>
@@ -30,12 +29,9 @@
#if defined(DISTRHO_OS_WINDOWS)
# include "pugl/pugl_win.cpp"
#elif defined(DISTRHO_OS_MAC)
-# include "pugl/pugl_osx_extended.h"
extern "C" {
-struct PuglViewImpl {
- int width;
- int height;
-};}
+# include "pugl/pugl_osx.m"
+}
#elif defined(DISTRHO_OS_LINUX)
# include <sys/types.h>
# include <unistd.h>
@@ -69,12 +65,11 @@ Window* dgl_lastUiParent = nullptr;
// -----------------------------------------------------------------------
// Window Private
-struct Window::PrivateData
-{
+struct Window::PrivateData {
PrivateData(App& app, Window* const self)
: fApp(app),
fSelf(self),
- fView(puglCreate(0, "Window", 100, 100, true, false)),
+ fView(puglInit(nullptr, nullptr)),
fFirstInit(true),
fVisible(false),
fResizable(true),
@@ -97,7 +92,7 @@ struct Window::PrivateData
PrivateData(App& app, Window* const self, Window& parent)
: fApp(app),
fSelf(self),
- fView(puglCreate(0, "Window", 100, 100, true, false)),
+ fView(puglInit(nullptr, nullptr)),
fFirstInit(true),
fVisible(false),
fResizable(true),
@@ -127,7 +122,7 @@ struct Window::PrivateData
PrivateData(App& app, Window* const self, const intptr_t parentId)
: fApp(app),
fSelf(self),
- fView(puglCreate(parentId, "Window", 100, 100, (parentId == 0), (parentId != 0))),
+ fView(puglInit(nullptr, nullptr)),
fFirstInit(true),
fVisible(parentId != 0),
fResizable(parentId == 0),
@@ -143,9 +138,13 @@ struct Window::PrivateData
_dummy('\0')
#endif
{
- if (parentId != 0) {
+ if (parentId != 0)
+ {
DBG("Creating embedded window..."); DBGF;
- } else {
+ puglInitWindowParent(fView, parentId);
+ }
+ else
+ {
DBG("Creating window without parent..."); DBGF;
}
@@ -154,6 +153,7 @@ struct Window::PrivateData
if (parentId != 0)
{
DBG("NOTE: Embed window is always visible and non-resizable\n");
+ puglShowWindow(fView);
fApp.pData->oneShown();
fFirstInit = false;
}
@@ -170,6 +170,8 @@ struct Window::PrivateData
dgl_lastUiParent = fSelf;
+ puglInitResizable(fView, fResizable);
+
puglSetHandle(fView, this);
puglSetDisplayFunc(fView, onDisplayCallback);
puglSetKeyboardFunc(fView, onKeyboardCallback);
@@ -180,15 +182,17 @@ struct Window::PrivateData
puglSetReshapeFunc(fView, onReshapeCallback);
puglSetCloseFunc(fView, onCloseCallback);
+ puglCreateWindow(fView, nullptr);
+
#if defined(DISTRHO_OS_WINDOWS)
PuglInternals* impl = fView->impl;
hwnd = impl->hwnd;
- assert(hwnd != 0);
+ DISTRHO_SAFE_ASSERT(hwnd != 0);
#elif defined(DISTRHO_OS_LINUX)
PuglInternals* impl = fView->impl;
xDisplay = impl->display;
xWindow = impl->win;
- assert(xWindow != 0);
+ DISTRHO_SAFE_ASSERT(xWindow != 0);
if (! fUsingEmbed)
{
@@ -530,13 +534,7 @@ struct Window::PrivateData
void exec_init()
{
DBG("Window modal loop starting..."); DBGF;
- assert(fModal.parent != nullptr);
-
- if (fModal.parent == nullptr)
- {
- DBG("Failed, there's no modal parent!\n");
- return setVisible(true);
- }
+ DISTRHO_SAFE_ASSERT_RETURN(fModal.parent != nullptr, setVisible(true));
fModal.enabled = true;
fModal.parent->fModal.childFocus = this;
@@ -731,8 +729,8 @@ struct Window::PrivateData
~Modal()
{
- assert(! enabled);
- assert(childFocus == nullptr);
+ DISTRHO_SAFE_ASSERT(! enabled);
+ DISTRHO_SAFE_ASSERT(childFocus == nullptr);
}
} fModal;
diff --git a/dgl/src/pugl/pugl_internal.h b/dgl/src/pugl/pugl_internal.h
@@ -42,9 +42,6 @@
typedef struct PuglInternalsImpl PuglInternals;
struct PuglViewImpl {
- int width;
- int height;
-
PuglHandle handle;
PuglCloseFunc closeFunc;
PuglDisplayFunc displayFunc;
@@ -59,6 +56,8 @@ struct PuglViewImpl {
PuglNativeWindow parent;
+ int width;
+ int height;
int mods;
bool mouse_in_view;
bool ignoreKeyRepeat;
@@ -89,6 +88,9 @@ puglInit(int* pargc, char** argv)
view->height = 480;
return view;
+
+ // unused
+ (void)pargc; (void)argv;
}
void
@@ -107,7 +109,7 @@ puglInitWindowParent(PuglView* view, PuglNativeWindow parent)
void
puglInitResizable(PuglView* view, bool resizable)
{
- view->resizable = true;
+ view->resizable = resizable;
}
void
diff --git a/dgl/src/pugl/pugl_win.cpp b/dgl/src/pugl/pugl_win.cpp
@@ -37,7 +37,7 @@
# define WHEEL_DELTA 120
#endif
-const int LOCAL_CLOSE_MSG = WM_USER + 50;
+#define PUGL_LOCAL_CLOSE_MSG (WM_USER + 50)
HINSTANCE hInstance = NULL;
@@ -61,22 +61,6 @@ DllMain(HINSTANCE hInst, DWORD, LPVOID)
} // extern "C"
PuglView*
-puglInit()
-{
- PuglView* view = (PuglView*)calloc(1, sizeof(PuglView));
- PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals));
- if (!view || !impl) {
- return NULL;
- }
-
- view->impl = impl;
- view->width = 640;
- view->height = 480;
-
- return view;
-}
-
-PuglView*
puglCreateInternals(PuglNativeWindow parent,
const char* title,
int width,
@@ -343,7 +327,7 @@ handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam)
}
break;
case WM_QUIT:
- case LOCAL_CLOSE_MSG:
+ case PUGL_LOCAL_CLOSE_MSG:
if (view->closeFunc) {
view->closeFunc(view);
}
@@ -386,7 +370,7 @@ wndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
PostMessage(hwnd, WM_SHOWWINDOW, TRUE, 0);
return 0;
case WM_CLOSE:
- PostMessage(hwnd, LOCAL_CLOSE_MSG, wParam, lParam);
+ PostMessage(hwnd, PUGL_LOCAL_CLOSE_MSG, wParam, lParam);
return 0;
case WM_DESTROY:
return 0;