[Xfce4-commits] <parole:bluesabre/gtk3> Fix tooltips, fix controls disappearing while being used

Sean Davis noreply at xfce.org
Sun Oct 6 18:10:01 CEST 2013


Updating branch refs/heads/bluesabre/gtk3
         to 802f64f142e1198cb10c3f52149d6e3e559376d0 (commit)
       from de76a6bd55c0bb5f0a38723b9aa364dd039ccd18 (commit)

commit 802f64f142e1198cb10c3f52149d6e3e559376d0
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Sun Oct 6 12:08:16 2013 -0400

    Fix tooltips, fix controls disappearing while being used

 src/parole-player.c |   45 ++++++++++++++++++++++++++++++++++++---------
 1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/src/parole-player.c b/src/parole-player.c
index 1d87dd9..f73d2fa 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -381,6 +381,7 @@ struct ParolePlayerPrivate
     GtkWidget          *progressbar_buffering;
     GtkWidget          *volume;
     GtkWidget          *mute;
+    GtkWidget          *showhide_playlist_button;
     
     /* Infobar */
     GtkWidget          *infobar;
@@ -516,6 +517,7 @@ void parole_player_set_playlist_visible (ParolePlayer *player, gboolean visibili
         
         gtk_widget_show (player->priv->playlist_nt);
         gtk_action_set_tooltip( GTK_ACTION( player->priv->toggle_playlist_action ), _("Hide playlist") );
+        gtk_widget_set_tooltip_text (GTK_WIDGET(player->priv->showhide_playlist_button), _("Hide playlist") );
         g_object_set   (G_OBJECT (player->priv->conf),    
                         "showhide-playlist", TRUE,
                         NULL);
@@ -524,6 +526,7 @@ void parole_player_set_playlist_visible (ParolePlayer *player, gboolean visibili
     {
         gtk_widget_hide (player->priv->playlist_nt);
         gtk_action_set_tooltip( GTK_ACTION( player->priv->toggle_playlist_action ), _("Show playlist") );
+        gtk_widget_set_tooltip_text (GTK_WIDGET(player->priv->showhide_playlist_button), _("Show playlist") );
         g_object_set   (G_OBJECT (player->priv->conf),    
                         "showhide-playlist", FALSE,
                         NULL);
@@ -1283,21 +1286,23 @@ parole_player_seekable_notify (ParoleStream *stream, GParamSpec *spec, ParolePla
 static void
 parole_player_set_playpause_button_from_stock (ParolePlayer *player, const gchar *stock_id)
 {
-    gchar *icon_name = NULL, *label = NULL;
+    gchar *icon_name = NULL, *label = NULL, *tooltip = NULL;
     
     if (g_strcmp0(stock_id, "gtk-media-play") == 0) {
         icon_name = g_strdup("media-playback-start-symbolic");
         label = _("_Play");
+        tooltip = _("Play");
     } else if (g_strcmp0(stock_id, "gtk-media-pause") == 0) {
         icon_name = g_strdup("media-playback-pause-symbolic");
         label = _("_Pause");
+        tooltip = _("Pause");
     }
     
     gtk_action_set_icon_name(player->priv->media_playpause_action, icon_name);
     gtk_action_set_label(player->priv->media_playpause_action, label);
-    gtk_action_set_tooltip(player->priv->media_playpause_action, label);
+    gtk_action_set_tooltip(player->priv->media_playpause_action, tooltip);
     gtk_image_set_from_icon_name(GTK_IMAGE(player->priv->playpause_image), icon_name, 24);
-    gtk_widget_set_tooltip_text(GTK_WIDGET(player->priv->playpause_button), label);
+    gtk_widget_set_tooltip_text(GTK_WIDGET(player->priv->playpause_button), tooltip);
 }
 
 static void
@@ -2909,6 +2914,8 @@ parole_player_init (ParolePlayer *player)
     GtkWidget *controls_parent;
     GtkWidget *play_box;
     
+    GList *widgets;
+    
     GtkWidget *action_widget;
     
     g_setenv("PULSE_PROP_media.role", "video", TRUE);
@@ -3168,14 +3175,15 @@ parole_player_init (ParolePlayer *player)
     /* FIXME: UGLY CODE IN THE NEXT BLOCK */
     /* Media Controls */
     controls_overlay = GTK_WIDGET(gtk_overlay_new());
-    /* control is a placeholder to put the play_box as it is moved to/from the fs-window */
+
     player->priv->control = GTK_WIDGET (gtk_builder_get_object (builder, "control"));
+
     play_box = GTK_WIDGET (gtk_builder_get_object (builder, "media_controls"));
-    
     controls_parent = GTK_WIDGET(gtk_builder_get_object (builder, "box2"));
     gtk_box_pack_start (GTK_BOX(controls_parent), controls_overlay, TRUE, TRUE, 0);
     gtk_widget_reparent(GTK_WIDGET(player->priv->eventbox_output), controls_overlay);
-    tmp_box = GTK_WIDGET(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
+    tmp_box = GTK_WIDGET(gtk_event_box_new());
+    
     gtk_widget_set_vexpand(GTK_WIDGET(tmp_box), FALSE);
     gtk_widget_set_hexpand(GTK_WIDGET(tmp_box), FALSE);
     gtk_widget_set_margin_left(tmp_box, 10);
@@ -3195,8 +3203,23 @@ parole_player_init (ParolePlayer *player)
     gtk_container_set_border_width(GTK_CONTAINER(play_box), 3);
     gtk_widget_show_all(controls_parent);
     
+    /* Enable motion-notify event to prevent hiding controls on mouseover */
+    gtk_widget_add_events (GTK_WIDGET (player->priv->control), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
+    g_signal_connect(G_OBJECT(player->priv->control), "motion-notify-event", 
+                     G_CALLBACK(parole_player_gst_widget_motion_notify_event), player);
+                     
+    gtk_widget_add_events (GTK_WIDGET (play_box), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
+    g_signal_connect(G_OBJECT(play_box), "motion-notify-event", 
+                     G_CALLBACK(parole_player_gst_widget_motion_notify_event), player);
+    for (widgets = gtk_container_get_children(GTK_CONTAINER(play_box)); widgets != NULL; widgets = g_list_next(widgets)) {
+        gtk_widget_add_events (GTK_WIDGET (widgets->data), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
+        g_signal_connect(G_OBJECT(widgets->data), "motion-notify-event", 
+                     G_CALLBACK(parole_player_gst_widget_motion_notify_event), player);
+    }
+    
     /* Previous, Play/Pause, Next */
     action_widget = GTK_WIDGET(gtk_builder_get_object(builder, "media_previous"));
+    gtk_widget_set_tooltip_text(GTK_WIDGET(action_widget), _("Previous Track"));
     gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), FALSE);
     gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), player->priv->media_previous_action);
 
@@ -3206,6 +3229,7 @@ parole_player_init (ParolePlayer *player)
     gtk_activatable_set_related_action(GTK_ACTIVATABLE(player->priv->playpause_button), player->priv->media_playpause_action);
     
     action_widget = GTK_WIDGET(gtk_builder_get_object(builder, "media_next"));
+    gtk_widget_set_tooltip_text(GTK_WIDGET(action_widget), _("Next Track"));
     gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), FALSE);
     gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), player->priv->media_next_action);
     
@@ -3226,6 +3250,7 @@ parole_player_init (ParolePlayer *player)
     
     /* (un)Fullscreen button */
     player->priv->fullscreen_button = GTK_WIDGET (gtk_builder_get_object (builder, "media_fullscreen"));
+    gtk_widget_set_tooltip_text(GTK_WIDGET(player->priv->fullscreen_button), _("Fullscreen"));
     action_widget = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen-menu"));
     player->priv->fullscreen_image = GTK_WIDGET (gtk_builder_get_object (builder, "image_media_fullscreen"));
     gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(player->priv->fullscreen_button), FALSE);
@@ -3233,9 +3258,9 @@ parole_player_init (ParolePlayer *player)
     gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), player->priv->media_fullscreen_action);
     
     /* Show/Hide Playlist button */
-    action_widget = GTK_WIDGET (gtk_builder_get_object (builder, "media_toggleplaylist"));
-    gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), FALSE);
-    gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), GTK_ACTION(player->priv->toggle_playlist_action));
+    player->priv->showhide_playlist_button = GTK_WIDGET (gtk_builder_get_object (builder, "media_toggleplaylist"));
+    gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(player->priv->showhide_playlist_button), FALSE);
+    gtk_activatable_set_related_action(GTK_ACTIVATABLE(player->priv->showhide_playlist_button), GTK_ACTION(player->priv->toggle_playlist_action));
     /* End Media Controls */
     
     g_signal_connect(player->priv->control, "draw", G_CALLBACK(parole_overlay_expose_event), NULL);
@@ -3328,6 +3353,8 @@ parole_player_init (ParolePlayer *player)
     player->priv->last_h = h;
           
     parole_player_set_playlist_visible(player, showhide);
+    gtk_widget_set_tooltip_text(GTK_WIDGET(player->priv->showhide_playlist_button), 
+                                showhide ? _("Hide Playlist") : _("Show Playlist"));
     
     gtk_window_set_default_size (GTK_WINDOW (player->priv->window), w, h);
     gtk_window_resize (GTK_WINDOW (player->priv->window), w, h);


More information about the Xfce4-commits mailing list