1
0

window_event.rs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. use dioxus::prelude::*;
  2. fn main() {
  3. dioxus::desktop::launch_cfg(app, |cfg| {
  4. cfg.with_window(|w| w.with_title("BorderLess Demo").with_decorations(false))
  5. });
  6. }
  7. fn app(cx: Scope) -> Element {
  8. let window = dioxus::desktop::use_window(&cx);
  9. // if you want to make window fullscreen, you need close the resizable.
  10. // window.set_fullscreen(true);
  11. // window.set_resizable(false);
  12. let fullscreen = use_state(&cx, || false);
  13. let always_on_top = use_state(&cx, || false);
  14. let decorations = use_state(&cx, || false);
  15. cx.render(rsx!(
  16. link { href:"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css", rel:"stylesheet" }
  17. header {
  18. class: "text-gray-400 bg-gray-900 body-font",
  19. onmousedown: move |_| window.drag(),
  20. div {
  21. class: "container mx-auto flex flex-wrap p-5 flex-col md:flex-row items-center",
  22. a { class: "flex title-font font-medium items-center text-white mb-4 md:mb-0",
  23. span { class: "ml-3 text-xl", "Dioxus"}
  24. }
  25. nav { class: "md:ml-auto flex flex-wrap items-center text-base justify-center" }
  26. button {
  27. class: "inline-flex items-center bg-gray-800 border-0 py-1 px-3 focus:outline-none hover:bg-gray-700 rounded text-base mt-4 md:mt-0",
  28. onmousedown: |evt| evt.cancel_bubble(),
  29. onclick: move |_| window.set_minimized(true),
  30. "Minimize"
  31. }
  32. button {
  33. class: "inline-flex items-center bg-gray-800 border-0 py-1 px-3 focus:outline-none hover:bg-gray-700 rounded text-base mt-4 md:mt-0",
  34. onmousedown: |evt| evt.cancel_bubble(),
  35. onclick: move |_| {
  36. window.set_fullscreen(!**fullscreen);
  37. window.set_resizable(**fullscreen);
  38. fullscreen.modify(|f| !*f);
  39. },
  40. "Fullscreen"
  41. }
  42. button {
  43. class: "inline-flex items-center bg-gray-800 border-0 py-1 px-3 focus:outline-none hover:bg-gray-700 rounded text-base mt-4 md:mt-0",
  44. onmousedown: |evt| evt.cancel_bubble(),
  45. onclick: move |_| window.close(),
  46. "Close"
  47. }
  48. }
  49. }
  50. br {}
  51. div {
  52. class: "container mx-auto",
  53. div {
  54. class: "grid grid-cols-5",
  55. div {
  56. button {
  57. class: "inline-flex items-center text-white bg-green-500 border-0 py-1 px-3 hover:bg-green-700 rounded",
  58. onmousedown: |evt| evt.cancel_bubble(),
  59. onclick: move |_| {
  60. window.set_always_on_top(!always_on_top);
  61. always_on_top.set(!always_on_top);
  62. },
  63. "Always On Top"
  64. }
  65. }
  66. div {
  67. button {
  68. class: "inline-flex items-center text-white bg-blue-500 border-0 py-1 px-3 hover:bg-green-700 rounded",
  69. onmousedown: |evt| evt.cancel_bubble(),
  70. onclick: move |_| {
  71. window.set_decorations(!decorations);
  72. decorations.set(!decorations);
  73. },
  74. "Set Decorations"
  75. }
  76. }
  77. div {
  78. button {
  79. class: "inline-flex items-center text-white bg-blue-500 border-0 py-1 px-3 hover:bg-green-700 rounded",
  80. onmousedown: |evt| evt.cancel_bubble(),
  81. onclick: move |_| {
  82. window.set_title("Dioxus Application");
  83. },
  84. "Change Title"
  85. }
  86. }
  87. }
  88. }
  89. ))
  90. }