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
26 changes: 14 additions & 12 deletions jsaddle-terminal/jsaddle-terminal.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,27 @@ flag demo

library
hs-source-dirs: src
exposed-modules: Language.Javascript.JSaddle.Terminal
Language.Javascript.JSaddle.Terminal.Protocol
exposed-modules: Language.Javascript.JSaddle.Terminal.Protocol
Language.Javascript.JSaddle.Terminal.Bootstrap
build-depends: base >=4.16 && <5
, aeson
, base64-bytestring
, bytestring
, jsaddle >=0.9.4 && <0.10
, jsaddle-warp >=0.9.4 && <0.10
, stm
, text
, unix
, warp
, websockets
ghc-options: -Wall
default-language: Haskell2010
-- Raw-mode stdin/termios: POSIX only.
if os(windows)
buildable: False
-- The tunnel runner needs raw-mode stdin/termios: POSIX only. The framing
-- (Protocol) and iframe JS (Bootstrap) are pure and build everywhere, so
-- IDE-side consumers (leksah) can link this library on Windows too —
-- without the runner's warp-fallback deps (jsaddle-warp caps aeson).
if !os(windows)
exposed-modules: Language.Javascript.JSaddle.Terminal
build-depends: aeson
, jsaddle-warp >=0.9.4 && <0.10
, stm
, text
, unix
, warp
, websockets

executable jsaddle-terminal-demo
main-is: Main.hs
Expand Down
7 changes: 7 additions & 0 deletions jsaddle-webview2/cbits/WebView2Shim.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,13 @@ static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)

/* ------------------------------------------- API called from Haskell */

/* The Win32 HWND of the window hosting the WebView2, so the embedding
application can do native window integration (menu bar, dialogs). */
void *wv2GetHwnd(JSaddleWV2 *app)
{
return (void *)app->hwnd;
}

void wv2SetHandlers(JSaddleWV2 *app, HsStablePtr start, HsStablePtr result, HsStablePtr sync)
{
app->startHandler = start;
Expand Down
10 changes: 10 additions & 0 deletions jsaddle-webview2/src/Language/Javascript/JSaddle/WebView2.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ module Language.Javascript.JSaddle.WebView2
, run'
, WebView2Config(..)
, WebView2(..)
, webView2Hwnd
) where

import Control.Monad (unless)
Expand All @@ -31,13 +32,22 @@ import Data.Text.Encoding (encodeUtf8)

import Foreign.C.String (CString)
import Foreign.C.Types (CInt(..))
import Foreign.Ptr (Ptr)
import Foreign.StablePtr (StablePtr, newStablePtr)

import Language.Javascript.JSaddle (JSM)
import Language.Javascript.JSaddle.WebView2.Internal
(jsaddleMain, jsaddleMainHTML, jsaddleMainURL, WebView2(..))
import System.Environment (getProgName)

foreign import ccall wv2GetHwnd :: WebView2 -> IO (Ptr ())

-- | The Win32 @HWND@ of the window hosting the WebView2, for native window
-- integration (menu bar, dialogs) by the embedding application. Only
-- meaningful once the 'run'' callback has been entered.
webView2Hwnd :: WebView2 -> IO (Ptr ())
webView2Hwnd = wv2GetHwnd

foreign import ccall runJsaddleWebView2
:: StablePtr (WebView2 -> IO ())
-> CString -- ^ window title (utf8)
Expand Down
Loading