[gthumb/ext: 15/18] do not hide the controls when the mouse is over the mediabar
- From: Paolo Bacchilega <paobac src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gthumb/ext: 15/18] do not hide the controls when the mouse is over the mediabar
- Date: Fri, 6 Nov 2009 00:16:52 +0000 (UTC)
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]