|
| 1 | +// Copyright 2020-2023 Tauri Programme within The Commons Conservancy |
| 2 | +// SPDX-License-Identifier: Apache-2.0 |
| 3 | +// SPDX-License-Identifier: MIT |
| 4 | + |
| 5 | +use tao::{ |
| 6 | + event::{Event, WindowEvent}, |
| 7 | + event_loop::{ControlFlow, EventLoop}, |
| 8 | + window::WindowBuilder, |
| 9 | +}; |
| 10 | +use wry::{ |
| 11 | + Rect, WebViewBuilder, |
| 12 | + dpi::{LogicalPosition, LogicalSize}, |
| 13 | +}; |
| 14 | + |
| 15 | +fn main() -> wry::Result<()> { |
| 16 | + let event_loop = EventLoop::new(); |
| 17 | + let window = WindowBuilder::new().build(&event_loop).unwrap(); |
| 18 | + |
| 19 | + // |
| 20 | + // Set the window size |
| 21 | + // |
| 22 | + window.set_inner_size(LogicalSize::new(800, 800)); |
| 23 | + |
| 24 | + let builder = WebViewBuilder::new().with_url("http://tauri.app").with_drag_drop_handler(|e| { |
| 25 | + match e { |
| 26 | + wry::DragDropEvent::Enter { paths, position } => { |
| 27 | + println!("DragEnter: {position:?} {paths:?} ") |
| 28 | + }, |
| 29 | + wry::DragDropEvent::Over { position } => println!("DragOver: {position:?} "), |
| 30 | + wry::DragDropEvent::Drop { paths, position } => { |
| 31 | + println!("DragDrop: {position:?} {paths:?} ") |
| 32 | + }, |
| 33 | + wry::DragDropEvent::Leave => println!("DragLeave"), |
| 34 | + _ => {}, |
| 35 | + } |
| 36 | + |
| 37 | + true |
| 38 | + }); |
| 39 | + |
| 40 | + #[cfg(any( |
| 41 | + target_os = "windows", |
| 42 | + target_os = "macos", |
| 43 | + target_os = "ios", |
| 44 | + target_os = "android" |
| 45 | + ))] |
| 46 | + let _webview = builder.build(&window)?; |
| 47 | + #[cfg(not(any( |
| 48 | + target_os = "windows", |
| 49 | + target_os = "macos", |
| 50 | + target_os = "ios", |
| 51 | + target_os = "android" |
| 52 | + )))] |
| 53 | + let _webview = { |
| 54 | + use tao::platform::unix::WindowExtUnix; |
| 55 | + use wry::WebViewBuilderExtUnix; |
| 56 | + let vbox = window.default_vbox().unwrap(); |
| 57 | + builder.build_gtk(vbox)? |
| 58 | + }; |
| 59 | + |
| 60 | + event_loop.run(move |event, _, control_flow| { |
| 61 | + *control_flow = ControlFlow::Wait; |
| 62 | + |
| 63 | + if let Event::WindowEvent { event: WindowEvent::CloseRequested, .. } = event { |
| 64 | + *control_flow = ControlFlow::Exit; |
| 65 | + } |
| 66 | + }); |
| 67 | +} |
0 commit comments