From 8ea2b93a28fb8d8eabd99fd849b4c5a3f7e164e8 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 28 Jan 2012 17:18:15 +0100 Subject: [PATCH] core: add signal "window_switch" --- ChangeLog | 2 +- doc/en/weechat_plugin_api.en.txt | 3 +++ doc/fr/weechat_plugin_api.fr.txt | 3 +++ doc/it/weechat_plugin_api.it.txt | 4 ++++ src/gui/curses/gui-curses-window.c | 3 +++ src/gui/gtk/gui-gtk-window.c | 5 +++++ src/gui/gui-window.c | 10 +++++++++- 7 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 73042ac3c..5bf2245b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,7 +16,7 @@ Version 0.3.7 (under dev!) * core: save current mouse state in option weechat.look.mouse (set option when mouse state is changed with command /mouse) * core: add type "hashtable" for hdata -* core: add signal "buffer_line_added" +* core: add signals "buffer_line_added" and "window_switch" * core: add default keys "meta2-1;5D" and "meta2-1;5C" (ctrl+left/right) for gnome-terminal * core: add option "hooks" for command /debug diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt index 77e24c607..3bc5f0aaf 100644 --- a/doc/en/weechat_plugin_api.en.txt +++ b/doc/en/weechat_plugin_api.en.txt @@ -7471,6 +7471,9 @@ Arguments: | weechat | window_scrolled | pointer: window | scroll in window +| weechat | window_switch | pointer: window | + switching window + | weechat | window_unzooming | pointer: current window | unzooming window diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt index 0e953ab9f..f5367706b 100644 --- a/doc/fr/weechat_plugin_api.fr.txt +++ b/doc/fr/weechat_plugin_api.fr.txt @@ -7581,6 +7581,9 @@ Paramètres : | weechat | window_scrolled | pointeur : fenêtre | défilement dans la fenêtre +| weechat | window_switch | pointeur : fenêtre | + basculement vers une autre fenêtre + | weechat | window_unzooming | pointeur : fenêtre courante | fin du zoom en cours sur la fenêtre diff --git a/doc/it/weechat_plugin_api.it.txt b/doc/it/weechat_plugin_api.it.txt index 2c2c51689..886951d8a 100644 --- a/doc/it/weechat_plugin_api.it.txt +++ b/doc/it/weechat_plugin_api.it.txt @@ -7516,6 +7516,10 @@ Argomenti: | weechat | window_scrolled | puntatore: finestra | scroll nella finestra +// TRANSLATION MISSING +| weechat | window_switch | pointer: window | + switching window + | weechat | window_unzooming | puntatore: finestra corrente | minimizzazione della finestra diff --git a/src/gui/curses/gui-curses-window.c b/src/gui/curses/gui-curses-window.c index 60dea1bda..b708dc4dd 100644 --- a/src/gui/curses/gui-curses-window.c +++ b/src/gui/curses/gui-curses-window.c @@ -1178,6 +1178,9 @@ gui_window_switch (struct t_gui_window *window) old_window->refresh_needed = 1; gui_input_move_to_buffer (old_window->buffer, window->buffer); + + hook_signal_send ("window_switch", + WEECHAT_HOOK_SIGNAL_POINTER, gui_current_window); } /* diff --git a/src/gui/gtk/gui-gtk-window.c b/src/gui/gtk/gui-gtk-window.c index 933982d5b..48eaa7695 100644 --- a/src/gui/gtk/gui-gtk-window.c +++ b/src/gui/gtk/gui-gtk-window.c @@ -30,7 +30,9 @@ #include "../../core/weechat.h" #include "../../core/wee-config.h" +#include "../../core/wee-hook.h" #include "../../core/wee-log.h" +#include "../../plugins/plugin.h" #include "../gui-window.h" #include "../gui-bar.h" #include "../gui-buffer.h" @@ -185,6 +187,9 @@ gui_window_switch (struct t_gui_window *window) gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); + + hook_signal_send ("window_switch", + WEECHAT_HOOK_SIGNAL_POINTER, window); } /* diff --git a/src/gui/gui-window.c b/src/gui/gui-window.c index d7bfdd0dc..921d4708e 100644 --- a/src/gui/gui-window.c +++ b/src/gui/gui-window.c @@ -889,9 +889,11 @@ gui_window_coords_alloc (struct t_gui_window *window) void gui_window_free (struct t_gui_window *window) { - struct t_gui_window *ptr_win; + struct t_gui_window *ptr_win, *old_current_window; int i; + old_current_window = gui_current_window; + hook_signal_send ("window_closing", WEECHAT_HOOK_SIGNAL_POINTER, window); if (window->buffer) @@ -946,6 +948,12 @@ gui_window_free (struct t_gui_window *window) hook_signal_send ("window_closed", WEECHAT_HOOK_SIGNAL_POINTER, window); free (window); + + if (gui_current_window != old_current_window) + { + hook_signal_send ("window_switch", + WEECHAT_HOOK_SIGNAL_POINTER, gui_current_window); + } } /*