Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions PowerEditor/src/MISC/sha2/sha-256.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#pragma once

#include <stddef.h>
#include <stdint.h>

void calc_sha_256(uint8_t hash[32], const void *input, size_t len);
90 changes: 70 additions & 20 deletions macos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -387,21 +387,23 @@ add_executable(PaperWasp
"${CMAKE_CURRENT_SOURCE_DIR}/platform/toolbar.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/print_support.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/hash_tools.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/macro_manager.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/plugin_manager.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/nppm_handler.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/compare_plus_visibility.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/plugin_invariants.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/macro_manager.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/plugin_manager.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/plugin_docking.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/nppm_handler.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/compare_plus_visibility.mm"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/plugin_invariants.mm"
)
target_include_directories(PaperWasp PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/platform"
"${SHIM_INCLUDE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/shim/src"
"${SCINTILLA_INCLUDE_DIR}"
"${LEXILLA_INCLUDE_DIR}"
"${UCHARDET_DIR}"
"${NPP_SRC_DIR}/MISC/PluginsManager"
)
"${UCHARDET_DIR}"
"${NPP_SRC_DIR}/MISC/PluginsManager"
"${NPP_SRC_DIR}/WinControls/DockingWnd"
)
target_link_libraries(PaperWasp
win32shim
scintilla_bridge
Expand Down Expand Up @@ -526,18 +528,62 @@ target_link_libraries(ComparePlus PRIVATE
"-framework Foundation"
)

add_custom_target(install_compare_plus
add_custom_target(install_compare_plus
DEPENDS ComparePlus
COMMAND ${CMAKE_COMMAND} -E make_directory
"$ENV{HOME}/Library/Application Support/PaperWasp/plugins/ComparePlus"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:ComparePlus>"
"$ENV{HOME}/Library/Application Support/PaperWasp/plugins/ComparePlus/ComparePlus.dylib"
COMMENT "Installing ComparePlus plugin to ~/Library/Application Support/PaperWasp/plugins/"
)

# ============================================================
# Packaging: App bundle, code signing, and DMG
)

# ============================================================
# Plugin: MarkdownViewerPlusPlus (macOS native port)
# ============================================================
set(MARKDOWN_VIEWER_PLUS_PLUS_DIR "${NPP_ROOT}/plugins/markdownViewerPlusPlus")

add_library(MarkdownViewerPlusPlus MODULE
"${MARKDOWN_VIEWER_PLUS_PLUS_DIR}/src/macOS/MarkdownViewerPlusPlus.mm"
)
target_include_directories(MarkdownViewerPlusPlus PRIVATE
"${SHIM_INCLUDE_DIR}"
"${NPP_SRC_DIR}/MISC/PluginsManager"
"${NPP_SRC_DIR}/WinControls/DockingWnd"
"${SCINTILLA_INCLUDE_DIR}"
)
target_compile_definitions(MarkdownViewerPlusPlus PRIVATE
UNICODE
_UNICODE
)
set_target_properties(MarkdownViewerPlusPlus PROPERTIES
PREFIX ""
SUFFIX ".dylib"
OUTPUT_NAME "MarkdownViewerPlusPlus"
)
target_compile_options(MarkdownViewerPlusPlus PRIVATE
-fobjc-arc
-Wno-deprecated-declarations
)
target_link_options(MarkdownViewerPlusPlus PRIVATE -undefined dynamic_lookup)
target_link_libraries(MarkdownViewerPlusPlus PRIVATE
"-framework AppKit"
"-framework Foundation"
"-framework WebKit"
)

add_custom_target(install_markdown_viewer_plus_plus
DEPENDS MarkdownViewerPlusPlus
COMMAND ${CMAKE_COMMAND} -E make_directory
"$ENV{HOME}/Library/Application Support/PaperWasp/plugins/MarkdownViewerPlusPlus"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:MarkdownViewerPlusPlus>"
"$ENV{HOME}/Library/Application Support/PaperWasp/plugins/MarkdownViewerPlusPlus/MarkdownViewerPlusPlus.dylib"
COMMENT "Installing MarkdownViewerPlusPlus plugin to ~/Library/Application Support/PaperWasp/plugins/"
)

# ============================================================
# Packaging: App bundle, code signing, and DMG
# ============================================================
set(NPP_MACOS_DIST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dist")
set(NPP_MACOS_APP_BUNDLE "${NPP_MACOS_DIST_DIR}/${PAPERWASP_APP_NAME}.app")
Expand All @@ -557,18 +603,22 @@ configure_file(

set(NPP_MACOS_APP_PLUGINS "${NPP_MACOS_APP_CONTENTS}/PlugIns")

add_custom_target(PaperWasp_package
DEPENDS PaperWasp ComparePlus
add_custom_target(PaperWasp_package
DEPENDS PaperWasp ComparePlus MarkdownViewerPlusPlus
COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_APP_BUNDLE}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_MACOS}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_RESOURCES}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_PLUGINS}/ComparePlus"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_RESOURCES}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_PLUGINS}/ComparePlus"
COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_PLUGINS}/MarkdownViewerPlusPlus"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:PaperWasp>"
"${NPP_MACOS_APP_MACOS}/${PAPERWASP_APP_NAME}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:ComparePlus>"
"${NPP_MACOS_APP_PLUGINS}/ComparePlus/ComparePlus.dylib"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:ComparePlus>"
"${NPP_MACOS_APP_PLUGINS}/ComparePlus/ComparePlus.dylib"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<TARGET_FILE:MarkdownViewerPlusPlus>"
"${NPP_MACOS_APP_PLUGINS}/MarkdownViewerPlusPlus/MarkdownViewerPlusPlus.dylib"
COMMAND ditto --norsrc
"${NPP_ROOT}/logo.png"
"${NPP_MACOS_APP_MACOS}/logo.png"
Expand Down
21 changes: 21 additions & 0 deletions macos/platform/nppm_handler.mm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "string_utils.h"
#include "compare_plus_visibility.h"
#include "appearance.h"
#include "plugin_docking.h"
#include "Notepad_plus_msgs.h"
#include "Scintilla.h"

Expand Down Expand Up @@ -234,6 +235,26 @@ LRESULT handleNppmMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
return TRUE;
}

case NPPM_DMMSHOW:
return showPluginDockingDialog(reinterpret_cast<HWND>(lParam)) ? TRUE : FALSE;

case NPPM_DMMHIDE:
return hidePluginDockingDialog(reinterpret_cast<HWND>(lParam)) ? TRUE : FALSE;

case NPPM_DMMUPDATEDISPINFO:
return updatePluginDockingDialog(reinterpret_cast<HWND>(lParam)) ? TRUE : FALSE;

case NPPM_DMMREGASDCKDLG:
return registerPluginDockingDialog(reinterpret_cast<const void*>(lParam)) ? TRUE : FALSE;

case NPPM_DMMVIEWOTHERTAB:
return showPluginDockingDialogByName(reinterpret_cast<const wchar_t*>(lParam)) ? TRUE : FALSE;

case NPPM_DMMGETPLUGINHWNDBYNAME:
return reinterpret_cast<LRESULT>(
findPluginDockingDialog(reinterpret_cast<const wchar_t*>(wParam),
reinterpret_cast<const wchar_t*>(lParam)));

case NPPM_GETEDITORDEFAULTBACKGROUNDCOLOR:
// Returned as 0x00BBGGRR (Win32 COLORREF). Must match the
// background Scintilla paints for style 32 in
Expand Down
23 changes: 20 additions & 3 deletions macos/platform/panel_layout.mm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "file_switcher_panel.h"
#include "function_list_panel.h"
#include "npp_constants.h"
#include "plugin_docking.h"
#include "scintilla_bridge.h"
#include "windows.h"
#include "split_view.h"
Expand Down Expand Up @@ -190,7 +191,8 @@ void relayoutPanels()
// -- Calculate zone widths ------------------------------------------------

bool leftZoneVisible = ctx().fileBrowserEnabled || ctx().fileSwitcherEnabled;
bool rightZoneVisible = ctx().functionListEnabled || ctx().clipboardHistoryEnabled;
bool pluginDockingVisible = isPluginDockingVisible();
bool rightZoneVisible = ctx().functionListEnabled || ctx().clipboardHistoryEnabled || pluginDockingVisible;

CGFloat leftWidth = leftZoneVisible ? static_cast<CGFloat>(ctx().leftPanelWidth) : 0.0;
CGFloat mapWidth = ctx().documentMapEnabled ? static_cast<CGFloat>(ctx().documentMapWidth) : 0.0;
Expand Down Expand Up @@ -358,8 +360,11 @@ void relayoutPanels()

NSView* flContainer = (__bridge NSView*)functionListContainerView();
NSView* chContainer = (__bridge NSView*)clipboardHistoryContainerView();
bool hasBoth = (flContainer != nil) && (chContainer != nil) &&
ctx().functionListEnabled && ctx().clipboardHistoryEnabled;
NSView* pluginContainer = (__bridge NSView*)pluginDockingContainerView();
bool showFunctionList = (flContainer != nil) && ctx().functionListEnabled && !pluginDockingVisible;
bool showClipboardHistory = (chContainer != nil) && ctx().clipboardHistoryEnabled && !pluginDockingVisible;
bool showPluginDocking = (pluginContainer != nil) && pluginDockingVisible;
bool hasBoth = showFunctionList && showClipboardHistory;

if (hasBoth)
{
Expand Down Expand Up @@ -406,14 +411,26 @@ void relayoutPanels()
if (sRightHorizontalDivider)
sRightHorizontalDivider.hidden = YES;
}

if (showPluginDocking)
{
pluginContainer.frame = NSMakeRect(curX, zoneY, rightWidth, zoneH);
pluginContainer.hidden = NO;
if (flContainer) flContainer.hidden = YES;
if (chContainer) chContainer.hidden = YES;
if (sRightHorizontalDivider) sRightHorizontalDivider.hidden = YES;
layoutPluginDockingViews();
}
}
else
{
// Hide right-zone elements
NSView* flContainer = (__bridge NSView*)functionListContainerView();
NSView* chContainer = (__bridge NSView*)clipboardHistoryContainerView();
NSView* pluginContainer = (__bridge NSView*)pluginDockingContainerView();
if (flContainer) flContainer.hidden = !ctx().functionListEnabled;
if (chContainer) chContainer.hidden = !ctx().clipboardHistoryEnabled;
if (pluginContainer) pluginContainer.hidden = YES;
if (sRightVerticalDivider) sRightVerticalDivider.hidden = YES;
if (sRightHorizontalDivider) sRightHorizontalDivider.hidden = YES;
}
Expand Down
14 changes: 14 additions & 0 deletions macos/platform/plugin_docking.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

#include "windows.h"

bool registerPluginDockingDialog(const void* dockingData);
bool showPluginDockingDialog(HWND hwnd);
bool hidePluginDockingDialog(HWND hwnd);
bool updatePluginDockingDialog(HWND hwnd);
bool showPluginDockingDialogByName(const wchar_t* name);
HWND findPluginDockingDialog(const wchar_t* windowName, const wchar_t* moduleName);

bool isPluginDockingVisible();
void* pluginDockingContainerView();
void layoutPluginDockingViews();
Loading
Loading