Browse Source

Fix isStandalone for external window; More macOS tests

pull/316/head
falkTX 3 years ago
parent
commit
0c33dcc8d4
3 changed files with 22 additions and 8 deletions
  1. +1
    -0
      distrho/src/DistrhoUI.cpp
  2. +0
    -1
      distrho/src/DistrhoUIPrivateData.hpp
  3. +21
    -7
      examples/EmbedExternalUI/EmbedExternalExampleUI.cpp

+ 1
- 0
distrho/src/DistrhoUI.cpp View File

@@ -52,6 +52,7 @@ UI::PrivateData::createNextWindow(UI* const ui, const uint width, const uint hei
ewData.height = height;
ewData.scaleFactor = pData->scaleFactor;
ewData.title = DISTRHO_PLUGIN_NAME;
ewData.isStandalone = DISTRHO_UI_IS_STANDALONE;
return ewData;
#else
pData->window = new PluginWindow(ui, pData->app, pData->winId, width, height, pData->scaleFactor);


+ 0
- 1
distrho/src/DistrhoUIPrivateData.hpp View File

@@ -130,7 +130,6 @@ public:
: ui(uiPtr)
{
app.ui = ui;
ui->pData.isStandalone = DISTRHO_UI_IS_STANDALONE;
}

// fetch cached data


+ 21
- 7
examples/EmbedExternalUI/EmbedExternalExampleUI.cpp View File

@@ -43,9 +43,10 @@
@implementation NSExternalWindow {
@public
bool closed;
bool standalone;
}
- (BOOL)canBecomeKeyWindow { return YES; }
- (BOOL)canBecomeMainWindow { return NO; }
- (BOOL)canBecomeMainWindow { return standalone ? YES : NO; }
- (BOOL)windowShouldClose:(id)_ { closed = true; return YES; }
@end
#endif
@@ -78,17 +79,19 @@ public:
#endif
fValue(0.0f)
{
const bool standalone = isStandalone();
d_stdout("isStandalone %d", (int)standalone);

#if defined(DISTRHO_OS_MAC)
if (isStandalone())
NSAutoreleasePool* const pool = [[NSAutoreleasePool alloc]init];
[NSApplication sharedApplication];

if (standalone)
{
[[NSApplication sharedApplication]new];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
[NSApp activateIgnoringOtherApps:YES];
}

NSAutoreleasePool* const pool = [[NSAutoreleasePool alloc] init];
[NSApplication sharedApplication];

fView = [NSView new];
DISTRHO_SAFE_ASSERT_RETURN(fView != nullptr,);

@@ -118,6 +121,7 @@ public:
DISTRHO_SAFE_ASSERT_RETURN(fWindow != nullptr,);

fWindow->closed = false; // is this needed?
fWindow->standalone = standalone;
[fWindow setIsVisible:NO];

if (NSString* const nsTitle = [[NSString alloc]
@@ -129,7 +133,6 @@ public:
[fWindow setContentView:fView];
[fWindow setContentSize:NSMakeSize(getWidth(), getHeight())];
[fWindow makeFirstResponder:fView];
[fWindow makeKeyAndOrderFront:fWindow];
}

[pool release];
@@ -234,6 +237,8 @@ protected:
#if defined(DISTRHO_OS_MAC)
DISTRHO_SAFE_ASSERT_RETURN(fWindow != nil,);
[fWindow orderFrontRegardless];
[fWindow makeKeyWindow];
[fWindow makeFirstResponder:fView];
#elif defined(DISTRHO_OS_WINDOWS)
#else
DISTRHO_SAFE_ASSERT_RETURN(fWindow != 0,);
@@ -291,9 +296,18 @@ protected:
#if defined(DISTRHO_OS_MAC)
DISTRHO_SAFE_ASSERT_RETURN(fView != nullptr,);
if (fWindow != nil)
{
[fWindow setIsVisible:(visible ? YES : NO)];

if (isStandalone())
[fWindow makeMainWindow];

[fWindow makeKeyAndOrderFront:fWindow];
}
else
{
[fView setHidden:(visible ? NO : YES)];
}
#elif defined(DISTRHO_OS_WINDOWS)
#else
DISTRHO_SAFE_ASSERT_RETURN(fWindow != 0,);


Loading…
Cancel
Save