Browse Source

Give context back to transient parent window

Signed-off-by: falkTX <falktx@falktx.com>
pull/297/head
falkTX 4 years ago
parent
commit
1a2dafdfc9
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
4 changed files with 27 additions and 3 deletions
  1. +11
    -2
      dgl/src/WindowPrivateData.cpp
  2. +3
    -0
      dgl/src/WindowPrivateData.hpp
  3. +9
    -1
      dgl/src/pugl.cpp
  4. +4
    -0
      dgl/src/pugl.hpp

+ 11
- 2
dgl/src/WindowPrivateData.cpp View File

@@ -79,6 +79,7 @@ Window::PrivateData::PrivateData(Application& a, Window* const s)
appData(a.pData),
self(s),
view(puglNewView(appData->world)),
transientParentView(nullptr),
topLevelWidgets(),
isClosed(true),
isVisible(false),
@@ -102,6 +103,7 @@ Window::PrivateData::PrivateData(Application& a, Window* const s, PrivateData* c
appData(a.pData),
self(s),
view(puglNewView(appData->world)),
transientParentView(ppData->view),
topLevelWidgets(),
isClosed(true),
isVisible(false),
@@ -117,9 +119,10 @@ Window::PrivateData::PrivateData(Application& a, Window* const s, PrivateData* c
#endif
modal(ppData)
{
initPre(DEFAULT_WIDTH, DEFAULT_HEIGHT, false);
puglBackendLeave(transientParentView);
puglSetTransientFor(view, puglGetNativeWindow(transientParentView));

puglSetTransientFor(view, puglGetNativeWindow(ppData->view));
initPre(DEFAULT_WIDTH, DEFAULT_HEIGHT, false);
}

Window::PrivateData::PrivateData(Application& a, Window* const s,
@@ -129,6 +132,7 @@ Window::PrivateData::PrivateData(Application& a, Window* const s,
appData(a.pData),
self(s),
view(puglNewView(appData->world)),
transientParentView(nullptr),
topLevelWidgets(),
isClosed(parentWindowHandle == 0),
isVisible(parentWindowHandle != 0),
@@ -158,6 +162,7 @@ Window::PrivateData::PrivateData(Application& a, Window* const s,
appData(a.pData),
self(s),
view(puglNewView(appData->world)),
transientParentView(nullptr),
topLevelWidgets(),
isClosed(parentWindowHandle == 0),
isVisible(parentWindowHandle != 0),
@@ -242,6 +247,10 @@ void Window::PrivateData::initPost()
appData->oneWindowShown();
puglShow(view);
}

// give context back to transient parent window
if (transientParentView != nullptr)
puglBackendEnter(transientParentView);
}

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


+ 3
- 0
dgl/src/WindowPrivateData.hpp View File

@@ -44,6 +44,9 @@ struct Window::PrivateData : IdleCallback {
/** Pugl view instance. */
PuglView* const view;

/** Pugl view instance of the transient parent window. */
PuglView* const transientParentView;

/** Reserved space for graphics context. */
mutable uint8_t graphicsContext[sizeof(void*)];



+ 9
- 1
dgl/src/pugl.cpp View File

@@ -177,10 +177,18 @@ void puglClearMinSize(PuglView* const view)
view->minHeight = 0;
}

// --------------------------------------------------------------------------------------------------------------------
// missing in pugl, directly returns transient parent

PuglNativeView puglGetTransientParent(const PuglView* const view)
{
return view->transientParent;
}

// --------------------------------------------------------------------------------------------------------------------
// missing in pugl, directly returns title char* pointer

const char* puglGetWindowTitle(const PuglView* view)
const char* puglGetWindowTitle(const PuglView* const view)
{
return view->title;
}


+ 4
- 0
dgl/src/pugl.hpp View File

@@ -54,6 +54,10 @@ puglBackendLeave(PuglView* view);
PUGL_API void
puglClearMinSize(PuglView* view);

// missing in pugl, directly returns transient parent
PUGL_API PuglNativeView
puglGetTransientParent(const PuglView* view);

// missing in pugl, directly returns title char* pointer
PUGL_API const char*
puglGetWindowTitle(const PuglView* view);


Loading…
Cancel
Save