@@ -611,18 +611,66 @@ pub trait Manager<R: Runtime>: sealed::ManagerBase<R> {
611611 }
612612
613613 /// Emits a event to all windows.
614+ ///
615+ /// Only the webviews receives this event.
616+ /// To trigger Rust listeners, use [`Self::trigger_global`], [`Window::trigger`] or [`Window::emit_and_trigger`].
617+ ///
618+ /// # Examples
619+ /// ```
620+ /// use tauri::Manager;
621+ ///
622+ /// #[tauri::command]
623+ /// fn synchronize(app: tauri::AppHandle) {
624+ /// // emits the synchronized event to all windows
625+ /// app.emit_all("synchronized", ());
626+ /// }
627+ /// ```
614628 fn emit_all < S : Serialize + Clone > ( & self , event : & str , payload : S ) -> Result < ( ) > {
615629 self . manager ( ) . emit_filter ( event, None , payload, |_| true )
616630 }
617631
618- /// Emits an event to a window with the specified label.
632+ /// Emits an event to the window with the specified label.
633+ ///
634+ /// # Examples
635+ /// ```
636+ /// use tauri::Manager;
637+ ///
638+ /// #[tauri::command]
639+ /// fn download(app: tauri::AppHandle) {
640+ /// for i in 1..100 {
641+ /// std::thread::sleep(std::time::Duration::from_millis(150));
642+ /// // emit a download progress event to the updater window
643+ /// app.emit_to("updater", "download-progress", i);
644+ /// }
645+ /// }
646+ /// ```
619647 fn emit_to < S : Serialize + Clone > ( & self , label : & str , event : & str , payload : S ) -> Result < ( ) > {
620648 self
621649 . manager ( )
622650 . emit_filter ( event, None , payload, |w| label == w. label ( ) )
623651 }
624652
625- /// Listen to a global event.
653+ /// Listen to a event triggered on any window ([`Window::trigger`] or [`Window::emit_and_trigger`]) or with [`Self::trigger_global`].
654+ ///
655+ /// # Examples
656+ /// ```
657+ /// use tauri::Manager;
658+ ///
659+ /// #[tauri::command]
660+ /// fn synchronize(window: tauri::Window) {
661+ /// // emits the synchronized event to all windows
662+ /// window.emit_and_trigger("synchronized", ());
663+ /// }
664+ ///
665+ /// tauri::Builder::default()
666+ /// .setup(|app| {
667+ /// app.listen_global("synchronized", |event| {
668+ /// println!("app is in sync");
669+ /// });
670+ /// Ok(())
671+ /// })
672+ /// .invoke_handler(tauri::generate_handler![synchronize]);
673+ /// ```
626674 fn listen_global < F > ( & self , event : impl Into < String > , handler : F ) -> EventHandler
627675 where
628676 F : Fn ( Event ) + Send + ' static ,
@@ -631,19 +679,63 @@ pub trait Manager<R: Runtime>: sealed::ManagerBase<R> {
631679 }
632680
633681 /// Listen to a global event only once.
682+ ///
683+ /// See [`Self::listen_global`] for more information.
634684 fn once_global < F > ( & self , event : impl Into < String > , handler : F ) -> EventHandler
635685 where
636686 F : FnOnce ( Event ) + Send + ' static ,
637687 {
638688 self . manager ( ) . once ( event. into ( ) , None , handler)
639689 }
640690
641- /// Trigger a global event.
691+ /// Trigger a global event to Rust listeners.
692+ /// To send the events to the webview, see [`Self::emit_all`] and [`Self::emit_to`].
693+ /// To trigger listeners registed on an specific window, see [`Window::trigger`].
694+ /// To trigger all listeners, see [`Window::emit_and_trigger`].
695+ ///
696+ /// A global event does not have a source or target window attached.
697+ ///
698+ /// # Examples
699+ /// ```
700+ /// use tauri::Manager;
701+ ///
702+ /// #[tauri::command]
703+ /// fn download(app: tauri::AppHandle) {
704+ /// for i in 1..100 {
705+ /// std::thread::sleep(std::time::Duration::from_millis(150));
706+ /// // emit a download progress event to all listeners registed in Rust
707+ /// app.trigger_global("download-progress", Some(i.to_string()));
708+ /// }
709+ /// }
710+ /// ```
642711 fn trigger_global ( & self , event : & str , data : Option < String > ) {
643712 self . manager ( ) . trigger ( event, None , data)
644713 }
645714
646715 /// Remove an event listener.
716+ ///
717+ /// # Examples
718+ /// ```
719+ /// use tauri::Manager;
720+ ///
721+ /// tauri::Builder::default()
722+ /// .setup(|app| {
723+ /// let handle = app.handle();
724+ /// let handler = app.listen_global("ready", move |event| {
725+ /// println!("app is ready");
726+ ///
727+ /// // we no longer need to listen to the event
728+ /// // we also could have used `app.once_global` instead
729+ /// handle.unlisten(event.id());
730+ /// });
731+ ///
732+ /// // stop listening to the event when you do not need it anymore
733+ /// app.unlisten(handler);
734+ ///
735+ ///
736+ /// Ok(())
737+ /// });
738+ /// ```
647739 fn unlisten ( & self , handler_id : EventHandler ) {
648740 self . manager ( ) . unlisten ( handler_id)
649741 }
0 commit comments