[gthumb/ext: 15/18] do not hide the controls when the mouse is over the mediabar



commit c8914a4e646a981c6a6ac889b087cc884616fc5f
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Thu Nov 5 11:57:34 2009 +0100

    do not hide the controls when the mouse is over the mediabar

 extensions/gstreamer/data/ui/mediabar.ui     |    1 -
 extensions/gstreamer/gth-media-viewer-page.c |    2 +
 gthumb/gth-browser.c                         |   47 +++++++++++++++++++++----
 gthumb/gth-browser.h                         |    3 ++
 4 files changed, 44 insertions(+), 9 deletions(-)
---
diff --git a/extensions/gstreamer/data/ui/mediabar.ui b/extensions/gstreamer/data/ui/mediabar.ui
index 6834a1d..7e5c5c4 100644
--- a/extensions/gstreamer/data/ui/mediabar.ui
+++ b/extensions/gstreamer/data/ui/mediabar.ui
@@ -4,7 +4,6 @@
   <!-- interface-naming-policy project-wide -->
   <object class="GtkVBox" id="mediabar">
     <property name="visible">True</property>
-    <property name="border_width">5</property>
     <property name="orientation">vertical</property>
     <child>
       <object class="GtkHBox" id="hbox2">
diff --git a/extensions/gstreamer/gth-media-viewer-page.c b/extensions/gstreamer/gth-media-viewer-page.c
index 0b85f68..84a6d74 100644
--- a/extensions/gstreamer/gth-media-viewer-page.c
+++ b/extensions/gstreamer/gth-media-viewer-page.c
@@ -789,6 +789,8 @@ gth_media_viewer_page_real_fullscreen (GthViewerPage *base,
 	gtk_widget_realize (self->priv->mediabar);
 	gtk_window_set_gravity (GTK_WINDOW (self->priv->fullscreen_toolbar), GDK_GRAVITY_SOUTH_EAST);
 	gtk_window_move (GTK_WINDOW (self->priv->fullscreen_toolbar), 0, gdk_screen_get_height (screen) - self->priv->mediabar->allocation.height);
+
+	gth_browser_register_fullscreen_control (self->priv->browser, self->priv->fullscreen_toolbar);
 }
 
 
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index f189916..e1765ee 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -149,6 +149,7 @@ struct _GthBrowserPrivateData {
 
 	gboolean           fullscreen;
 	GtkWidget         *fullscreen_toolbar;
+	GList             *fullscreen_controls;
 	guint              hide_mouse_timeout;
 	guint              motion_signal;
 	gdouble            last_mouse_x;
@@ -4660,6 +4661,14 @@ gth_browser_get_image_preloader (GthBrowser *browser)
 }
 
 
+void
+gth_browser_register_fullscreen_control (GthBrowser *browser,
+					 GtkWidget  *widget)
+{
+	browser->priv->fullscreen_controls = g_list_prepend (browser->priv->fullscreen_controls, widget);
+}
+
+
 static void
 _gth_browser_create_fullscreen_toolbar (GthBrowser *browser)
 {
@@ -4676,6 +4685,8 @@ _gth_browser_create_fullscreen_toolbar (GthBrowser *browser)
 	gtk_container_set_border_width (GTK_CONTAINER (browser->priv->fullscreen_toolbar), 0);
 
 	gtk_container_add (GTK_CONTAINER (browser->priv->fullscreen_toolbar), gtk_ui_manager_get_widget (browser->priv->ui, "/Fullscreen_ToolBar"));
+
+	gth_browser_register_fullscreen_control (browser, browser->priv->fullscreen_toolbar);
 }
 
 
@@ -4683,15 +4694,23 @@ static gboolean
 hide_mouse_pointer_cb (gpointer data)
 {
 	GthBrowser *browser = data;
-	int         x, y, w, h, px, py;
+	int         px, py;
+	GList      *scan;
 
-	gdk_window_get_pointer (browser->priv->fullscreen_toolbar->window, &px, &py, 0);
-	gdk_window_get_geometry (browser->priv->fullscreen_toolbar->window, &x, &y, &w, &h, NULL);
+	gdk_window_get_pointer (GTK_WIDGET (browser)->window, &px, &py, 0);
+	for (scan = browser->priv->fullscreen_controls; scan; scan = scan->next) {
+		GtkWidget *widget = scan->data;
+		int        x, y, w, h;
 
-	if ((px >= x) && (px <= x + w) && (py >= y) && (py <= y + h))
-		return FALSE;
+		gdk_window_get_geometry (widget->window, &x, &y, &w, &h, NULL);
+
+		if ((px >= x) && (px <= x + w) && (py >= y) && (py <= y + h))
+			return FALSE;
+	}
+
+	for (scan = browser->priv->fullscreen_controls; scan; scan = scan->next)
+		gtk_widget_hide ((GtkWidget *) scan->data);
 
-	gtk_widget_hide (browser->priv->fullscreen_toolbar);
 	if (browser->priv->viewer_page != NULL)
 		gth_viewer_page_show_pointer (GTH_VIEWER_PAGE (browser->priv->viewer_page), FALSE);
 
@@ -4713,12 +4732,19 @@ fullscreen_motion_notify_event_cb (GtkWidget      *widget,
 	if (browser->priv->last_mouse_y == 0.0)
 		browser->priv->last_mouse_y = event->y;
 
-	if ((abs (browser->priv->last_mouse_x - event->x) > MOTION_THRESHOLD) || (abs (browser->priv->last_mouse_y - event->y) > MOTION_THRESHOLD))
+	if ((abs (browser->priv->last_mouse_x - event->x) > MOTION_THRESHOLD)
+	    || (abs (browser->priv->last_mouse_y - event->y) > MOTION_THRESHOLD))
+	{
 		if (! GTK_WIDGET_VISIBLE (browser->priv->fullscreen_toolbar)) {
-			gtk_widget_show (browser->priv->fullscreen_toolbar);
+			GList *scan;
+
+			for (scan = browser->priv->fullscreen_controls; scan; scan = scan->next)
+				gtk_widget_show ((GtkWidget *) scan->data);
+
 			if (browser->priv->viewer_page != NULL)
 				gth_viewer_page_show_pointer (GTH_VIEWER_PAGE (browser->priv->viewer_page), TRUE);
 		}
+	}
 
 	if (browser->priv->hide_mouse_timeout != 0)
 		g_source_remove (browser->priv->hide_mouse_timeout);
@@ -4747,6 +4773,8 @@ gth_browser_fullscreen (GthBrowser *browser)
 		gth_browser_show_first_image (browser, FALSE, FALSE);
 
 	_gth_browser_create_fullscreen_toolbar (browser);
+	g_list_free (browser->priv->fullscreen_controls);
+	browser->priv->fullscreen_controls = g_list_append (NULL, browser->priv->fullscreen_toolbar);
 
 	gth_browser_show_viewer_properties (browser, FALSE);
 	gth_window_set_current_page (GTH_WINDOW (browser), GTH_BROWSER_PAGE_VIEWER);
@@ -4786,6 +4814,9 @@ gth_browser_unfullscreen (GthBrowser *browser)
 		gth_viewer_page_fullscreen (browser->priv->viewer_page, FALSE);
 		gth_viewer_page_show_pointer (browser->priv->viewer_page, TRUE);
 	}
+	g_list_free (browser->priv->fullscreen_controls);
+	browser->priv->fullscreen_controls = NULL;
+
 	gth_browser_update_sensitivity (browser);
 }
 
diff --git a/gthumb/gth-browser.h b/gthumb/gth-browser.h
index 7b089e8..c8795e7 100644
--- a/gthumb/gth-browser.h
+++ b/gthumb/gth-browser.h
@@ -165,6 +165,9 @@ void             gth_browser_enable_thumbnails      (GthBrowser       *browser,
 void             gth_browser_show_filterbar         (GthBrowser       *browser,
 						     gboolean          show);
 gpointer         gth_browser_get_image_preloader    (GthBrowser       *browser);
+void             gth_browser_register_fullscreen_control
+						    (GthBrowser       *browser,
+					             GtkWidget        *widget);
 void             gth_browser_fullscreen             (GthBrowser       *browser);
 void             gth_browser_unfullscreen           (GthBrowser       *browser);
 void             gth_browser_file_menu_popup        (GthBrowser       *browser,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]