From 6853dd37b7bb7af4df9aa3db8caa2720141fa080 Mon Sep 17 00:00:00 2001 From: webreflection Date: Fri, 4 Oct 2024 11:24:14 +0200 Subject: [PATCH] Re-introduced fullscreen and added decorated for Gtk4 This MR exports two extra symbols to remove decorations (chromeless) and to provide an easy way to make the window full screen. A new `SizeHint.FULLSCREEN` can be used to provide such hint while the `Size` now has a `decorated` value which, if `false`, would remove all decorations around the UI. --- build/libwebview-x64.so | Bin 84648 -> 84664 bytes examples/basic.ts | 8 +++++--- package.json | 2 +- src/ffi.ts | 8 ++++++++ src/webview.ts | 31 ++++++++++++++++++++++++++----- 5 files changed, 40 insertions(+), 9 deletions(-) diff --git a/build/libwebview-x64.so b/build/libwebview-x64.so index ff0d4d2409b765e89dbfa5dbacd0e25f55d091b5..c183b1854d7344bc0cb66b14daa1c23d4b4b5d82 100755 GIT binary patch delta 26634 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 z%0D-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 diff --git a/examples/basic.ts b/examples/basic.ts index 79b2c74..c8256ca 100644 --- a/examples/basic.ts +++ b/examples/basic.ts @@ -1,4 +1,4 @@ -import { Webview } from "../src"; +import { SizeHint, Webview } from "../src"; const html = ` @@ -8,7 +8,9 @@ const html = ` `; -const webview = new Webview(); +const webview = new Webview(false, { hint: SizeHint.FULLSCREEN }); +// webview.decorated = false; +// webview.fullscreen(); webview.title = "Bun App"; webview.setHTML(html); -webview.run(); \ No newline at end of file +webview.run(); diff --git a/package.json b/package.json index 2778762..0d739be 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "webview-bun", + "name": "@webreflection/webview-bun", "description": "Bun bindings for webview, a tiny library for creating web-based desktop GUIs.", "version": "2.3.0", "type": "module", diff --git a/src/ffi.ts b/src/ffi.ts index e8570b3..476d7bf 100644 --- a/src/ffi.ts +++ b/src/ffi.ts @@ -53,6 +53,14 @@ export const lib = dlopen(lib_file.default, { args: [FFIType.ptr], returns: FFIType.ptr }, + webview_set_fullscreen: { + args: [FFIType.ptr], + returns: FFIType.void + }, + webview_set_decorated: { + args: [FFIType.ptr, FFIType.i32], + returns: FFIType.void + }, webview_set_title: { args: [FFIType.ptr, FFIType.ptr], returns: FFIType.void diff --git a/src/webview.ts b/src/webview.ts index 0ff272d..d09a92f 100644 --- a/src/webview.ts +++ b/src/webview.ts @@ -3,6 +3,8 @@ import { encodeCString, instances, lib } from "./ffi"; /** Window size */ export interface Size { + /** The window has chrome around */ + decorated: boolean, /** The width of the window */ width: number, /** The height of the window */ @@ -20,7 +22,9 @@ export const enum SizeHint { /** Width and height are maximum bounds */ MAX, /** Window size can not be changed by a user */ - FIXED + FIXED, + /** Window is fullscreen */ + FULLSCREEN, }; /** An instance of a webview window.*/ @@ -47,6 +51,10 @@ export class Webview { return lib.symbols.webview_get_window(this.#handle); } + set decorated(value:boolean) { + lib.symbols.webview_set_decorated(this.#handle, +value); + } + /** * Sets the native window size * @@ -69,8 +77,12 @@ export class Webview { * ``` */ set size({ width, height, hint }: Size) { - //@ts-ignore - lib.symbols.webview_set_size(this.#handle, width, height, hint); + if (hint === SizeHint.FULLSCREEN) + this.fullscreen(); + else { + //@ts-ignore + lib.symbols.webview_set_size(this.#handle, width, height, hint); + } } /** @@ -136,13 +148,17 @@ export class Webview { constructor(debug?: boolean, size?: Size, window?: Pointer | null); constructor( debugOrHandle: boolean | Pointer = false, - size: Size | undefined = { width: 1024, height: 768, hint: SizeHint.NONE }, + size: Size | undefined = { decorated: true, width: 1024, height: 768, hint: SizeHint.NONE }, window: Pointer | null = null, ) { this.#handle = typeof debugOrHandle === "bigint" || typeof debugOrHandle === "number" ? debugOrHandle : lib.symbols.webview_create(Number(debugOrHandle), window); - if (size !== undefined) this.size = size; + if (size !== undefined) { + this.size = size; + if (size.decorated === false) + this.decorated = false; + } instances.push(this); } @@ -157,6 +173,11 @@ export class Webview { this.#handle = null; } + /** Creates a full screen window */ + fullscreen() { + lib.symbols.webview_set_fullscreen(this.#handle); + } + /** * Navigates webview to the given URL. URL may be a data URI, i.e. * `"data:text/html,..."`. It is often ok not to url-encodeCString it