#ifdef HAVE_CONFIG_H #include #endif #include "eom-fullscreen-plugin.h" #include #include #include #include #define WINDOW_DATA_KEY "EomFullscreenWindowData" EOM_PLUGIN_REGISTER_TYPE (EomFullscreenPlugin, eom_fullscreen_plugin) typedef struct { gulong signal_id; } WindowData; static gboolean on_button_press (GtkWidget *button, GdkEventButton *event, EomWindow *window) { if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { EomWindowMode mode = eom_window_get_mode (window); if (mode == EOM_WINDOW_MODE_SLIDESHOW || mode == EOM_WINDOW_MODE_FULLSCREEN) { eom_window_set_mode (window, EOM_WINDOW_MODE_NORMAL); } else if (mode == EOM_WINDOW_MODE_NORMAL) { eom_window_set_mode (window, EOM_WINDOW_MODE_FULLSCREEN); } return TRUE; } return FALSE; } static void free_window_data (WindowData *data) { g_return_if_fail (data != NULL); eom_debug (DEBUG_PLUGINS); g_free (data); } static void eom_fullscreen_plugin_init (EomFullscreenPlugin *plugin) { eom_debug_message (DEBUG_PLUGINS, "EomFullscreenPlugin initializing"); } static void eom_fullscreen_plugin_finalize (GObject *object) { eom_debug_message (DEBUG_PLUGINS, "EomFullscreenPlugin finalizing"); G_OBJECT_CLASS (eom_fullscreen_plugin_parent_class)->finalize (object); } static void impl_activate (EomPlugin *plugin, EomWindow *window) { GtkWidget *view = eom_window_get_view (window); WindowData *data; eom_debug (DEBUG_PLUGINS); data = g_new (WindowData, 1); data->signal_id = g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (on_button_press), window); g_object_set_data_full (G_OBJECT(window), WINDOW_DATA_KEY, data, (GDestroyNotify) free_window_data); } static void impl_deactivate (EomPlugin *plugin, EomWindow *window) { GtkWidget *view = eom_window_get_view (window); WindowData *data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY); g_signal_handler_disconnect (view, data->signal_id); g_object_set_data (G_OBJECT (window), WINDOW_DATA_KEY, NULL); } static void impl_update_ui (EomPlugin *plugin, EomWindow *window) { /* Nothing */ } static void eom_fullscreen_plugin_class_init (EomFullscreenPluginClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); EomPluginClass *plugin_class = EOM_PLUGIN_CLASS (klass); object_class->finalize = eom_fullscreen_plugin_finalize; plugin_class->activate = impl_activate; plugin_class->deactivate = impl_deactivate; plugin_class->update_ui = impl_update_ui; }