From cea41bcb9be36fdfe9d273133996e1622586f27b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 18 Mar 2013 19:49:48 +0000 Subject: Addition of visible parameter and other minor fixes from FalkTX. --- pugl/pugl.h | 8 +++++--- pugl/pugl_internal.h | 4 ++++ pugl/pugl_osx.m | 25 ++++++++++++------------- pugl/pugl_win.cpp | 16 ++++++++++------ pugl/pugl_x11.c | 7 +++++-- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/pugl/pugl.h b/pugl/pugl.h index 9be936b..7f68351 100644 --- a/pugl/pugl.h +++ b/pugl/pugl.h @@ -124,7 +124,7 @@ typedef enum { PUGL_KEY_SHIFT, PUGL_KEY_CTRL, PUGL_KEY_ALT, - PUGL_KEY_SUPER, + PUGL_KEY_SUPER } PuglKey; /** @@ -134,7 +134,7 @@ typedef enum { PUGL_MOD_SHIFT = 1, /**< Shift key */ PUGL_MOD_CTRL = 1 << 1, /**< Control key */ PUGL_MOD_ALT = 1 << 2, /**< Alt/Option key */ - PUGL_MOD_SUPER = 1 << 3, /**< Mod4/Command/Windows key */ + PUGL_MOD_SUPER = 1 << 3 /**< Mod4/Command/Windows key */ } PuglMod; /** @@ -219,13 +219,15 @@ typedef void (*PuglSpecialFunc)(PuglView* view, bool press, PuglKey key); @param width Window width in pixels. @param height Window height in pixels. @param resizable Whether window should be user resizable. + @param visible Whether window should be initially visible. */ PUGL_API PuglView* puglCreate(PuglNativeWindow parent, const char* title, int width, int height, - bool resizable); + bool resizable, + bool visible); /** Set the handle to be passed to all callbacks. diff --git a/pugl/pugl_internal.h b/pugl/pugl_internal.h index 37db9e5..8cdada8 100644 --- a/pugl/pugl_internal.h +++ b/pugl/pugl_internal.h @@ -82,6 +82,10 @@ puglDefaultReshape(PuglView* view, int width, int height) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + return; + + // unused + (void)view; } void diff --git a/pugl/pugl_osx.m b/pugl/pugl_osx.m index 5621edc..a9bbd24 100644 --- a/pugl/pugl_osx.m +++ b/pugl/pugl_osx.m @@ -36,8 +36,6 @@ defer:(BOOL)flag; - (void) setPuglview:(PuglView*)view; - (BOOL) windowShouldClose:(id)sender; -- (void) becomeKeyWindow:(id)sender; -- (BOOL) canBecomeKeyWindow:(id)sender; @end @implementation PuglWindow @@ -74,6 +72,14 @@ @end +void +puglDisplay(PuglView* view) +{ + if (view->displayFunc) { + view->displayFunc(view); + } +} + @interface PuglOpenGLView : NSOpenGLView { int colorBits; @@ -169,9 +175,9 @@ } static unsigned -getModifiers(PuglView* view, NSevent* ev) +getModifiers(PuglView* view, NSEvent* ev) { - const unsigned modifierFlags = [ev modifierFlags] + const unsigned modifierFlags = [ev modifierFlags]; view->event_timestamp_ms = fmod([ev timestamp] * 1000.0, UINT32_MAX); @@ -320,7 +326,8 @@ puglCreate(PuglNativeWindow parent, const char* title, int width, int height, - bool resizable) + bool resizable, + bool visible) { PuglView* view = (PuglView*)calloc(1, sizeof(PuglView)); PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals)); @@ -369,14 +376,6 @@ puglDestroy(PuglView* view) free(view); } -void -puglDisplay(PuglView* view) -{ - if (view->displayFunc) { - view->displayFunc(view); - } -} - PuglStatus puglProcessEvents(PuglView* view) { diff --git a/pugl/pugl_win.cpp b/pugl/pugl_win.cpp index ff32cf2..780752b 100644 --- a/pugl/pugl_win.cpp +++ b/pugl/pugl_win.cpp @@ -54,7 +54,8 @@ puglCreate(PuglNativeWindow parent, const char* title, int width, int height, - bool resizable) + bool resizable, + bool visible) { PuglView* view = (PuglView*)calloc(1, sizeof(PuglView)); PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals)); @@ -84,15 +85,19 @@ puglCreate(PuglNativeWindow parent, impl->wc.lpszClassName = classNameBuf; RegisterClass(&impl->wc); + int winFlags = WS_POPUPWINDOW | WS_CAPTION; + if (resizable) { + winFlags |= WS_SIZEBOX; + } + // Adjust the overall window size to accomodate our requested client size RECT wr = { 0, 0, width, height }; - AdjustWindowRectEx( - &wr, WS_SIZEBOX | WS_POPUPWINDOW | WS_CAPTION, FALSE, WS_EX_TOPMOST); + AdjustWindowRectEx(&wr, winFlags, FALSE, WS_EX_TOPMOST); impl->hwnd = CreateWindowEx( WS_EX_TOPMOST, classNameBuf, title, - WS_VISIBLE | (parent ? WS_CHILD : (WS_SIZEBOX | WS_POPUPWINDOW | WS_CAPTION)), + (addToDesktop ? WS_VISIBLE : 0) | (parent ? WS_CHILD : winFlags), 0, 0, wr.right-wr.left, wr.bottom-wr.top, (HWND)parent, NULL, NULL, NULL); @@ -236,7 +241,6 @@ setModifiers(PuglView* view) static LRESULT handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam) { - MSG msg; PAINTSTRUCT ps; PuglKey key; @@ -297,7 +301,7 @@ handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam) break; } // else nobreak case WM_KEYUP: - if (key = keySymToSpecial(wParam)) { + if ((key = keySymToSpecial(wParam))) { if (view->specialFunc) { view->specialFunc(view, message == WM_KEYDOWN, key); } diff --git a/pugl/pugl_x11.c b/pugl/pugl_x11.c index fd61632..d9fccf2 100644 --- a/pugl/pugl_x11.c +++ b/pugl/pugl_x11.c @@ -70,7 +70,8 @@ puglCreate(PuglNativeWindow parent, const char* title, int width, int height, - bool resizable) + bool resizable, + bool visible) { PuglView* view = (PuglView*)calloc(1, sizeof(PuglView)); PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals)); @@ -142,7 +143,9 @@ puglCreate(PuglNativeWindow parent, XSetWMProtocols(impl->display, impl->win, &wmDelete, 1); } - XMapRaised(impl->display, impl->win); + if (visible) { + XMapRaised(impl->display, impl->win); + } if (glXIsDirect(impl->display, impl->ctx)) { printf("DRI enabled\n"); -- cgit v1.2.3