Add an option to Image preferences to restrict custom border to fullscreen mode only...
[geeqie.git] / src / fullscreen.c
index 233d384..49f0197 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Geeqie
  * (C) 2004 John Ellis
- * Copyright (C) 2008 The Geeqie Team
+ * Copyright (C) 2008 - 2009 The Geeqie Team
  *
  * Author: John Ellis
  *
 #include "main.h"
 #include "fullscreen.h"
 
-#include "debug.h"
 #include "image.h"
+#include "misc.h"
 #include "ui_fileops.h"
 #include "ui_menu.h"
 #include "ui_misc.h"
-
+#include "window.h"
+#include "image-load.h"
 
 enum {
        FULLSCREEN_CURSOR_HIDDEN = 1 << 0,
@@ -69,25 +70,26 @@ static void clear_mouse_cursor(GtkWidget *widget, gint state)
                }
 }
 
-static gint fullscreen_hide_mouse_cb(gpointer data)
+static gboolean fullscreen_hide_mouse_cb(gpointer data)
 {
        FullScreenData *fs = data;
 
-       if (fs->hide_mouse_id == -1) return FALSE;
+       if (!fs->hide_mouse_id) return FALSE;
 
        fs->cursor_state &= ~FULLSCREEN_CURSOR_NORMAL;
        if (!(fs->cursor_state & FULLSCREEN_CURSOR_BUSY)) clear_mouse_cursor(fs->window, fs->cursor_state);
 
-       fs->hide_mouse_id = -1;
+       g_source_remove(fs->hide_mouse_id);
+       fs->hide_mouse_id = 0;
        return FALSE;
 }
 
 static void fullscreen_hide_mouse_disable(FullScreenData *fs)
 {
-       if (fs->hide_mouse_id != -1)
+       if (fs->hide_mouse_id)
                {
                g_source_remove(fs->hide_mouse_id);
-               fs->hide_mouse_id = -1;
+               fs->hide_mouse_id = 0;
                }
 }
 
@@ -97,7 +99,7 @@ static void fullscreen_hide_mouse_reset(FullScreenData *fs)
        fs->hide_mouse_id = g_timeout_add(FULL_SCREEN_HIDE_MOUSE_DELAY, fullscreen_hide_mouse_cb, fs);
 }
 
-static gint fullscreen_mouse_moved(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
+static gboolean fullscreen_mouse_moved(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
 {
        FullScreenData *fs = data;
 
@@ -113,18 +115,18 @@ static gint fullscreen_mouse_moved(GtkWidget *widget, GdkEventButton *bevent, gp
 
 static void fullscreen_busy_mouse_disable(FullScreenData *fs)
 {
-       if (fs->busy_mouse_id != -1)
+       if (fs->busy_mouse_id)
                {
                g_source_remove(fs->busy_mouse_id);
-               fs->busy_mouse_id = -1;
+               fs->busy_mouse_id = 0;
                }
 }
 
-static void fullscreen_mouse_set_busy(FullScreenData *fs, gint busy)
+static void fullscreen_mouse_set_busy(FullScreenData *fs, gboolean busy)
 {
        fullscreen_busy_mouse_disable(fs);
 
-       if ((fs->cursor_state & FULLSCREEN_CURSOR_BUSY) == (busy)) return;
+       if (!!(fs->cursor_state & FULLSCREEN_CURSOR_BUSY) == (busy)) return;
 
        if (busy)
                {
@@ -142,14 +144,14 @@ static gboolean fullscreen_mouse_set_busy_cb(gpointer data)
 {
        FullScreenData *fs = data;
 
-       fs->busy_mouse_id = -1;
+       fs->busy_mouse_id = 0;
        fullscreen_mouse_set_busy(fs, TRUE);
        return FALSE;
 }
 
 static void fullscreen_mouse_set_busy_idle(FullScreenData *fs)
 {
-       if (fs->busy_mouse_id == -1)
+       if (!fs->busy_mouse_id)
                {
                fs->busy_mouse_id = g_timeout_add(FULL_SCREEN_BUSY_MOUSE_DELAY,
                                                  fullscreen_mouse_set_busy_cb, fs);
@@ -161,13 +163,13 @@ static void fullscreen_image_update_cb(ImageWindow *imd, gpointer data)
        FullScreenData *fs = data;
 
        if (fs->imd->il &&
-           fs->imd->il->pixbuf != image_get_pixbuf(fs->imd))
+           image_loader_get_pixbuf(fs->imd->il) != image_get_pixbuf(fs->imd))
                {
                fullscreen_mouse_set_busy_idle(fs);
                }
 }
 
-static void fullscreen_image_complete_cb(ImageWindow *imd, gint preload, gpointer data)
+static void fullscreen_image_complete_cb(ImageWindow *imd, gboolean preload, gpointer data)
 {
        FullScreenData *fs = data;
 
@@ -179,8 +181,8 @@ static void fullscreen_image_complete_cb(ImageWindow *imd, gint preload, gpointe
 
 static void fullscreen_saver_deactivate(void)
 {
-       static gint checked = FALSE;
-       static gint found = FALSE;
+       static gboolean checked = FALSE;
+       static gboolean found = FALSE;
 
        if (!checked)
                {
@@ -190,7 +192,7 @@ static void fullscreen_saver_deactivate(void)
 
        if (found)
                {
-               system(XSCREENSAVER_COMMAND);
+               runcmd(XSCREENSAVER_COMMAND);
                }
 }
 
@@ -204,7 +206,7 @@ static gboolean fullscreen_saver_block_cb(gpointer data)
        return TRUE;
 }
 
-static gint fullscreen_delete_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
+static gboolean fullscreen_delete_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
 {
        FullScreenData *fs = data;
 
@@ -217,7 +219,7 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
 {
        FullScreenData *fs;
        GdkScreen *screen;
-       gint same;
+       gboolean same;
        gint x, y;
        gint w, h;
        GdkGeometry geometry;
@@ -226,8 +228,6 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
 
        fs = g_new0(FullScreenData, 1);
 
-       fs->hide_mouse_id = -1;
-       fs->busy_mouse_id = -1;
        fs->cursor_state = FULLSCREEN_CURSOR_HIDDEN;
 
        fs->normal_window = window;
@@ -291,13 +291,9 @@ FullScreenData *fullscreen_start(GtkWidget *window, ImageWindow *imd,
 
        gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget);
 
-       if (options->image.use_custom_border_color)
-               {
-               image_background_set_color(fs->imd, &options->image.border_color);
-               }
-
+       image_background_set_color_from_options(fs->imd, TRUE);
        image_set_delay_flip(fs->imd, options->fullscreen.clean_flip);
-       image_auto_refresh(fs->imd, fs->normal_imd->auto_refresh_interval);
+       image_auto_refresh_enable(fs->imd, fs->normal_imd->auto_refresh);
 
        if (options->fullscreen.clean_flip)
                {
@@ -334,7 +330,7 @@ void fullscreen_stop(FullScreenData *fs)
 {
        if (!fs) return;
 
-       g_source_remove(fs->saver_block_id);
+       if (fs->saver_block_id) g_source_remove(fs->saver_block_id);
 
        fullscreen_hide_mouse_disable(fs);
        fullscreen_busy_mouse_disable(fs);
@@ -368,7 +364,7 @@ GList *fullscreen_prefs_list(void)
        display = gdk_display_get_default();
        number = gdk_display_get_n_screens(display);
 
-       for (i = 0; i < number ; i++)
+       for (i = 0; i < number; i++)
                {
                GdkScreen *screen;
                gint monitors;
@@ -466,7 +462,7 @@ ScreenData *fullscreen_prefs_list_find(GList *list, gint screen)
  * same_region: the returned region will overlap the current location of widget.
  */
 void fullscreen_prefs_get_geometry(gint screen, GtkWidget *widget, gint *x, gint *y, gint *width, gint *height,
-                                  GdkScreen **dest_screen, gint *same_region)
+                                  GdkScreen **dest_screen, gboolean *same_region)
 {
        GList *list;
        ScreenData *sd;
@@ -609,7 +605,7 @@ static void fullscreen_prefs_selection_add(GtkListStore *store, const gchar *tex
                                         FS_MENU_COLUMN_VALUE, value, -1);
 }
 
-GtkWidget *fullscreen_prefs_selection_new(const gchar *text, gint *screen_value, gint *above_value)
+GtkWidget *fullscreen_prefs_selection_new(const gchar *text, gint *screen_value, gboolean *above_value)
 {
        GtkWidget *vbox;
        GtkWidget *hbox;
@@ -677,3 +673,4 @@ GtkWidget *fullscreen_prefs_selection_new(const gchar *text, gint *screen_value,
 
        return vbox;
 }
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */