[gthumb] do not hide the viewer controls when the pointer is over one of them
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] do not hide the viewer controls when the pointer is over one of them
- Date: Sat, 9 Nov 2013 20:12:33 +0000 (UTC)
commit cb1c5f96fac5b103f31ea216a8e4d42e347f96cd
Author: Paolo Bacchilega <paobac src gnome org>
Date: Thu Nov 7 16:00:45 2013 +0100
do not hide the viewer controls when the pointer is over one of them
extensions/gstreamer_tools/gth-media-viewer-page.c | 11 +--
gthumb/gth-browser.c | 86 +++++++++----------
gthumb/gth-browser.h | 4 +-
3 files changed, 47 insertions(+), 54 deletions(-)
---
diff --git a/extensions/gstreamer_tools/gth-media-viewer-page.c
b/extensions/gstreamer_tools/gth-media-viewer-page.c
index 1e11125..9b404e9 100644
--- a/extensions/gstreamer_tools/gth-media-viewer-page.c
+++ b/extensions/gstreamer_tools/gth-media-viewer-page.c
@@ -785,6 +785,7 @@ gth_media_viewer_page_real_activate (GthViewerPage *base,
gth_browser_set_viewer_widget (browser, self->priv->area_box);
gtk_widget_realize (self->priv->area);
+ gth_browser_register_viewer_control (self->priv->browser, self->priv->mediabar);
gth_viewer_page_focus (GTH_VIEWER_PAGE (self));
}
@@ -811,6 +812,8 @@ gth_media_viewer_page_real_deactivate (GthViewerPage *base)
self = (GthMediaViewerPage*) base;
+ gth_browser_unregister_viewer_control (self->priv->browser, self->priv->mediabar);
+
if (self->priv->builder != NULL) {
g_object_unref (self->priv->builder);
self->priv->builder = NULL;
@@ -1081,7 +1084,6 @@ gth_media_viewer_page_real_hide (GthViewerPage *base)
self = (GthMediaViewerPage*) base;
self->priv->visible = FALSE;
-
if ((self->priv->playbin != NULL) && self->priv->playing)
gst_element_set_state (self->priv->playbin, GST_STATE_PAUSED);
}
@@ -1166,12 +1168,7 @@ static void
gth_media_viewer_page_real_fullscreen (GthViewerPage *base,
gboolean active)
{
- GthMediaViewerPage *self = (GthMediaViewerPage*) base;
-
- if (active)
- gth_browser_register_fullscreen_control (self->priv->browser, self->priv->mediabar);
- else
- gth_browser_unregister_fullscreen_control (self->priv->browser, self->priv->mediabar);
+ /* void */
}
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index b8a758e..e1c1441 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -187,8 +187,8 @@ struct _GthBrowserPrivate {
gboolean fullscreen;
gboolean was_fullscreen;
- GtkWidget *fullscreen_headerbar;
- GList *fullscreen_controls;
+ GtkWidget *fullscreen_toolbar;
+ GList *viewer_controls;
gboolean pointer_visible;
guint hide_mouse_timeout;
guint motion_signal;
@@ -2168,7 +2168,7 @@ _gth_browser_update_header_section_visibility (GthBrowser *browser,
GtkWidget *header_section;
header_section = browser->priv->header_sections[section];
- gtk_widget_set_visible (header_section, visible /* && (_gtk_container_get_n_children (GTK_CONTAINER
(header_section)) > 0) FIXME */);
+ gtk_widget_set_visible (header_section, visible);
}
@@ -2183,37 +2183,33 @@ hide_mouse_pointer_cb (gpointer data)
{
HideMouseData *hmdata = data;
GthBrowser *browser = hmdata->browser;
- int px, py;
- GdkScreen *screen;
- int n_monitor;
- GdkRectangle work_area;
GList *scan;
- gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (browser)),
- hmdata->device,
- &px,
- &py,
- 0);
+ /* do not hide the pointer if it's over a viewer control */
- screen = gtk_widget_get_screen (GTK_WIDGET (browser));
- n_monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET (browser)));
- gdk_screen_get_monitor_geometry (screen, n_monitor, &work_area);
-
- px += work_area.x;
- py += work_area.y;
-
- for (scan = browser->priv->fullscreen_controls; scan; scan = scan->next) {
+ for (scan = browser->priv->viewer_controls; scan; scan = scan->next) {
GtkWidget *widget = scan->data;
- int x, y, w, h;
-
- gdk_window_get_geometry (gtk_widget_get_window (widget), &x, &y, &w, &h);
-
- if ((px >= x) && (px <= x + w) && (py >= y) && (py <= y + h))
+ GdkWindow *widget_win;
+ int px, py, w, h;
+
+ if (! gtk_widget_get_visible (widget) || ! gtk_widget_get_realized (widget))
+ continue;
+
+ widget_win = gtk_widget_get_window (widget);
+ gdk_window_get_device_position (widget_win,
+ hmdata->device,
+ &px,
+ &py,
+ 0);
+ w = gdk_window_get_width (widget_win);
+ h = gdk_window_get_height (widget_win);
+
+ if ((px >= 0) && (px <= w) && (py >= 0) && (py <= h))
return FALSE;
}
browser->priv->pointer_visible = FALSE;
- gtk_widget_hide (browser->priv->fullscreen_headerbar);
+ gtk_widget_hide (browser->priv->fullscreen_toolbar);
if (browser->priv->viewer_page != NULL)
_gth_browser_show_pointer_on_viewer (browser, FALSE);
@@ -2242,7 +2238,7 @@ viewer_motion_notify_event_cb (GtkWidget *widget,
if (! browser->priv->pointer_visible) {
browser->priv->pointer_visible = TRUE;
if (browser->priv->fullscreen)
- gtk_widget_show (browser->priv->fullscreen_headerbar);
+ gtk_widget_show (browser->priv->fullscreen_toolbar);
if (browser->priv->viewer_page != NULL)
_gth_browser_show_pointer_on_viewer (browser, TRUE);
}
@@ -3884,7 +3880,7 @@ gth_browser_init (GthBrowser *browser)
browser->priv->recalc_location_free_space = TRUE;
browser->priv->fullscreen = FALSE;
browser->priv->was_fullscreen = FALSE;
- browser->priv->fullscreen_controls = NULL;
+ browser->priv->viewer_controls = NULL;
browser->priv->pointer_visible = TRUE;
browser->priv->hide_mouse_timeout = 0;
browser->priv->motion_signal = 0;
@@ -4133,15 +4129,15 @@ gth_browser_init (GthBrowser *browser)
{
GtkWidget *button;
- browser->priv->fullscreen_headerbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_widget_set_halign (browser->priv->fullscreen_headerbar, GTK_ALIGN_END);
- gtk_widget_set_valign (browser->priv->fullscreen_headerbar, GTK_ALIGN_START);
- gtk_overlay_add_overlay (GTK_OVERLAY (browser->priv->viewer_container),
browser->priv->fullscreen_headerbar);
+ browser->priv->fullscreen_toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_widget_set_halign (browser->priv->fullscreen_toolbar, GTK_ALIGN_START);
+ gtk_widget_set_valign (browser->priv->fullscreen_toolbar, GTK_ALIGN_START);
+ gtk_overlay_add_overlay (GTK_OVERLAY (browser->priv->viewer_container),
browser->priv->fullscreen_toolbar);
button = gtk_button_new_from_icon_name ("view-restore-symbolic", GTK_ICON_SIZE_BUTTON);
gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.unfullscreen");
gtk_widget_show (button);
- gtk_box_pack_start (GTK_BOX (browser->priv->fullscreen_headerbar), button, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (browser->priv->fullscreen_toolbar), button, FALSE, FALSE, 0);
}
@@ -4217,7 +4213,7 @@ gth_browser_init (GthBrowser *browser)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_SHADOW_NONE);
+ GTK_SHADOW_ETCHED_IN);
gtk_widget_show (scrolled_window);
browser->priv->folder_tree = gth_folder_tree_new ("gthumb-vfs:///");
@@ -6104,18 +6100,18 @@ gth_browser_get_image_preloader (GthBrowser *browser)
void
-gth_browser_register_fullscreen_control (GthBrowser *browser,
- GtkWidget *widget)
+gth_browser_register_viewer_control (GthBrowser *browser,
+ GtkWidget *widget)
{
- browser->priv->fullscreen_controls = g_list_prepend (browser->priv->fullscreen_controls, widget);
+ browser->priv->viewer_controls = g_list_prepend (browser->priv->viewer_controls, widget);
}
void
-gth_browser_unregister_fullscreen_control (GthBrowser *browser,
- GtkWidget *widget)
+gth_browser_unregister_viewer_control (GthBrowser *browser,
+ GtkWidget *widget)
{
- browser->priv->fullscreen_controls = g_list_remove (browser->priv->fullscreen_controls, widget);
+ browser->priv->viewer_controls = g_list_remove (browser->priv->viewer_controls, widget);
}
@@ -6130,8 +6126,8 @@ gth_browser_fullscreen (GthBrowser *browser)
browser->priv->was_fullscreen = FALSE;
browser->priv->fullscreen = TRUE;
- g_list_free (browser->priv->fullscreen_controls);
- browser->priv->fullscreen_controls = g_list_append (NULL, browser->priv->fullscreen_headerbar);
+ g_list_free (browser->priv->viewer_controls);
+ browser->priv->viewer_controls = g_list_append (NULL, browser->priv->fullscreen_toolbar);
browser->priv->before_fullscreen.page = gth_window_get_current_page (GTH_WINDOW (browser));
browser->priv->before_fullscreen.viewer_properties = gth_window_get_action_state (GTH_WINDOW
(browser), "viewer-properties");
@@ -6170,7 +6166,7 @@ gth_browser_unfullscreen (GthBrowser *browser)
browser->priv->was_fullscreen = TRUE;
browser->priv->fullscreen = FALSE;
- gtk_widget_hide (browser->priv->fullscreen_headerbar);
+ gtk_widget_hide (browser->priv->fullscreen_toolbar);
gth_window_show_only_content (GTH_WINDOW (browser), FALSE);
gth_window_set_current_page (GTH_WINDOW (browser), browser->priv->before_fullscreen.page);
@@ -6200,8 +6196,8 @@ gth_browser_unfullscreen (GthBrowser *browser)
gth_viewer_page_fullscreen (browser->priv->viewer_page, FALSE);
_gth_browser_show_pointer_on_viewer (browser, TRUE);
}
- g_list_free (browser->priv->fullscreen_controls);
- browser->priv->fullscreen_controls = NULL;
+ g_list_free (browser->priv->viewer_controls);
+ browser->priv->viewer_controls = NULL;
gtk_alignment_set_padding (GTK_ALIGNMENT (browser->priv->viewer_sidebar_alignment), 0, 0, 0, 0);
diff --git a/gthumb/gth-browser.h b/gthumb/gth-browser.h
index a5f1f93..a006c42 100644
--- a/gthumb/gth-browser.h
+++ b/gthumb/gth-browser.h
@@ -228,10 +228,10 @@ void gth_browser_load_location (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
+void gth_browser_register_viewer_control
(GthBrowser *browser,
GtkWidget *widget);
-void gth_browser_unregister_fullscreen_control
+void gth_browser_unregister_viewer_control
(GthBrowser *browser,
GtkWidget *widget);
void gth_browser_fullscreen (GthBrowser *browser);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]