Browse Source

Fix Mac standalone window focus

pull/302/head
Luciano Iam 4 years ago
parent
commit
adaa1916d6
5 changed files with 51 additions and 0 deletions
  1. +8
    -0
      cmake/DPF-plugin.cmake
  2. +4
    -0
      dgl/Makefile
  3. +6
    -0
      dgl/src/ApplicationPrivateData.cpp
  4. +4
    -0
      dgl/src/ApplicationPrivateData.hpp
  5. +29
    -0
      dgl/src/ApplicationPrivateData_macOS.mm

+ 8
- 0
cmake/DPF-plugin.cmake View File

@@ -347,6 +347,10 @@ function(dpf__add_dgl_cairo)
"${DPF_ROOT_DIR}/dgl/src/Window.cpp"
"${DPF_ROOT_DIR}/dgl/src/WindowPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/Cairo.cpp")
if(APPLE)
target_sources(dgl-cairo STATIC
"${DPF_ROOT_DIR}/dgl/src/ApplicationPrivateData_macOS.mm")
endif()
if(NOT APPLE)
target_sources(dgl-cairo PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp")
@@ -409,6 +413,10 @@ function(dpf__add_dgl_opengl)
"${DPF_ROOT_DIR}/dgl/src/WindowPrivateData.cpp"
"${DPF_ROOT_DIR}/dgl/src/OpenGL.cpp"
"${DPF_ROOT_DIR}/dgl/src/NanoVG.cpp")
if(APPLE)
target_sources(dgl-opengl STATIC
"${DPF_ROOT_DIR}/dgl/src/ApplicationPrivateData_macOS.mm")
endif()
if(NOT APPLE)
target_sources(dgl-opengl PRIVATE
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp")


+ 4
- 0
dgl/Makefile View File

@@ -41,6 +41,10 @@ OBJS_common = \
../build/dgl/Window.cpp.o \
../build/dgl/WindowPrivateData.cpp.o

ifeq ($(MACOS),true)
OBJS_common += ../build/dgl/ApplicationPrivateData_macOS.mm.o
endif

# ---------------------------------------------------------------------------------------------------------------------

OBJS_cairo = $(OBJS_common) \


+ 6
- 0
dgl/src/ApplicationPrivateData.cpp View File

@@ -64,6 +64,12 @@ Application::PrivateData::PrivateData(const bool standalone)
#ifdef HAVE_X11
sofdFileDialogSetup(world);
#endif

#ifdef DISTRHO_OS_MAC
if (standalone) {
macActivateApp();
}
#endif
}

Application::PrivateData::~PrivateData()


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

@@ -34,6 +34,10 @@ typedef struct PuglWorldImpl PuglWorld;

START_NAMESPACE_DGL

#ifdef DISTRHO_OS_MAC
void macActivateApp();
#endif

class Window;

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


+ 29
- 0
dgl/src/ApplicationPrivateData_macOS.mm View File

@@ -0,0 +1,29 @@
/*
* DISTRHO Plugin Framework (DPF)
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose with
* or without fee is hereby granted, provided that the above copyright notice and this
* permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
* TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#import <AppKit/AppKit.h>

#include "ApplicationPrivateData.hpp"

START_NAMESPACE_DGL

void macActivateApp()
{
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
[NSApp activateIgnoringOtherApps:YES]; // focus window
}

END_NAMESPACE_DGL

Loading…
Cancel
Save