[Xfce4-commits] <parole:bluesabre/gtk3> Initial GtkAction implementation

Sean Davis noreply at xfce.org
Tue Sep 10 04:42:01 CEST 2013


Updating branch refs/heads/bluesabre/gtk3
         to 5e2fffef8e7aba5889f8906a4a458f6bc546a7ca (commit)
       from 0e4103763f45c0930d8d12664713f7ae3d72442c (commit)

commit 5e2fffef8e7aba5889f8906a4a458f6bc546a7ca
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Mon Sep 9 22:40:03 2013 -0400

    Initial GtkAction implementation

 data/interfaces/parole.ui |  171 ++++++++++++---------------
 src/parole-player.c       |  280 +++++++++++++++++++++++----------------------
 2 files changed, 215 insertions(+), 236 deletions(-)

diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui
index 2280ed3..56bc136 100644
--- a/data/interfaces/parole.ui
+++ b/data/interfaces/parole.ui
@@ -1,136 +1,136 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkImage" id="image12">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="pixel_size">16</property>
-    <property name="icon_name">gtk-about-symbolic</property>
-    <property name="use_fallback">True</property>
-  </object>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="upper">100</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkImage" id="image10">
+  <object class="GtkImage" id="image_media_fullscreen">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">16</property>
-    <property name="icon_name">face-sick-symbolic</property>
+    <property name="pixel_size">24</property>
+    <property name="icon_name">view-fullscreen-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image1">
+  <object class="GtkImage" id="image_media_next">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">16</property>
-    <property name="icon_name">media-optical-symbolic</property>
+    <property name="pixel_size">24</property>
+    <property name="icon_name">media-skip-forward-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image11">
+  <object class="GtkImage" id="image_media_playpause">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">16</property>
-    <property name="icon_name">document-save-as-symbolic</property>
+    <property name="pixel_size">24</property>
+    <property name="icon_name">media-playback-start-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image2">
+  <object class="GtkImage" id="image_media_previous">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">16</property>
-    <property name="icon_name">folder-remote-symbolic</property>
+    <property name="pixel_size">24</property>
+    <property name="icon_name">media-skip-backward-symbolic</property>
     <property name="use_fallback">True</property>
-    <property name="icon-size">1</property>
   </object>
-  <object class="GtkImage" id="image3">
+  <object class="GtkImage" id="image_about">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
-    <property name="icon_name">audio-volume-high-symbolic</property>
+    <property name="icon_name">gtk-about-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image4">
+  <object class="GtkImage" id="image_disc">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
-    <property name="icon_name">audio-volume-low-symbolic</property>
+    <property name="icon_name">media-optical-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image5">
+  <object class="GtkImage" id="image_help_reportbug">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
-    <property name="icon_name">audio-volume-muted-symbolic</property>
+    <property name="icon_name">face-sick-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image6">
+  <object class="GtkImage" id="image_menu_fullscreen">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
     <property name="icon_name">view-fullscreen-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image7">
+  <object class="GtkImage" id="image_open">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
     <property name="icon_name">document-open-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image8">
+  <object class="GtkImage" id="image_open_location">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="pixel_size">16</property>
+    <property name="icon_name">folder-remote-symbolic</property>
+    <property name="use_fallback">True</property>
+    <property name="icon-size">1</property>
+  </object>
+  <object class="GtkImage" id="image_plugins">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
     <property name="icon_name">parole-extension-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image9">
+  <object class="GtkImage" id="image_preferences">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
     <property name="icon_name">document-properties-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_media_fullscreen">
+  <object class="GtkImage" id="image_quit">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">24</property>
-    <property name="icon_name">view-fullscreen-symbolic</property>
+    <property name="pixel_size">16</property>
+    <property name="icon_name">system-shutdown-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_media_next">
+  <object class="GtkImage" id="image_saveplaylist">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">24</property>
-    <property name="icon_name">media-skip-forward-symbolic</property>
+    <property name="pixel_size">16</property>
+    <property name="icon_name">document-save-as-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_media_play">
+  <object class="GtkImage" id="image_toggleplaylist">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">24</property>
-    <property name="icon_name">media-playback-start-symbolic</property>
+    <property name="icon_name">view-list-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_media_prev">
+  <object class="GtkImage" id="image_volume_down">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">24</property>
-    <property name="icon_name">media-skip-backward-symbolic</property>
+    <property name="pixel_size">16</property>
+    <property name="icon_name">audio-volume-low-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_media_toggleplaylist">
+  <object class="GtkImage" id="image_volume_mute">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="pixel_size">24</property>
-    <property name="icon_name">view-list-symbolic</property>
+    <property name="pixel_size">16</property>
+    <property name="icon_name">audio-volume-muted-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
-  <object class="GtkImage" id="image_quit">
+  <object class="GtkImage" id="image_volume_up">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="pixel_size">16</property>
-    <property name="icon_name">system-shutdown-symbolic</property>
+    <property name="icon_name">audio-volume-high-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
   <object class="GtkWindow" id="main-window">
@@ -167,7 +167,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image7</property>
+                        <property name="image">image_open</property>
                         <property name="use_stock">False</property>
                         <accelerator key="o" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="parole_player_menu_add_cb" swapped="no"/>
@@ -179,7 +179,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image2</property>
+                        <property name="image">image_open_location</property>
                         <property name="use_stock">False</property>
                         <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                         <signal name="activate" handler="parole_player_menu_open_location_cb" swapped="no"/>
@@ -205,7 +205,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image11</property>
+                        <property name="image">image_saveplaylist</property>
                         <property name="use_stock">False</property>
                       </object>
                     </child>
@@ -221,7 +221,7 @@
                         <property name="visible">True</property>
                         <property name="sensitive">False</property>
                         <property name="can_focus">False</property>
-                        <property name="image">image1</property>
+                        <property name="image">image_disc</property>
                         <property name="use_stock">False</property>
                       </object>
                     </child>
@@ -285,10 +285,7 @@
                       <object class="GtkCheckMenuItem" id="show-hide-list">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Show _playlist</property>
-                        <property name="use_underline">True</property>
                         <accelerator key="F9" signal="activate"/>
-                        <signal name="toggled" handler="parole_player_show_hide_playlist" swapped="no"/>
                       </object>
                     </child>
                   </object>
@@ -420,7 +417,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image3</property>
+                        <property name="image">image_volume_up</property>
                         <property name="use_stock">False</property>
                         <accelerator key="plus" signal="activate"/>
                         <accelerator key="equal" signal="activate"/>
@@ -433,7 +430,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image4</property>
+                        <property name="image">image_volume_down</property>
                         <property name="use_stock">False</property>
                         <accelerator key="minus" signal="activate"/>
                         <signal name="activate" handler="parole_player_volume_down" swapped="no"/>
@@ -445,7 +442,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image5</property>
+                        <property name="image">image_volume_mute</property>
                         <property name="use_stock">False</property>
                         <accelerator key="0" signal="activate"/>
                         <signal name="activate" handler="parole_player_volume_mute" swapped="no"/>
@@ -471,10 +468,9 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image6</property>
+                        <property name="image">image_menu_fullscreen</property>
                         <property name="use_stock">False</property>
                         <accelerator key="F11" signal="activate"/>
-                        <signal name="activate" handler="parole_player_full_screen_activated_cb" swapped="no"/>
                       </object>
                     </child>
                     <child>
@@ -632,7 +628,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image8</property>
+                        <property name="image">image_plugins</property>
                         <property name="use_stock">False</property>
                       </object>
                     </child>
@@ -642,7 +638,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image9</property>
+                        <property name="image">image_preferences</property>
                         <property name="use_stock">False</property>
                         <signal name="activate" handler="parole_player_open_preferences_cb" swapped="no"/>
                       </object>
@@ -667,7 +663,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image10</property>
+                        <property name="image">image_help_reportbug</property>
                         <property name="use_stock">False</property>
                       </object>
                     </child>
@@ -677,7 +673,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="use_underline">True</property>
-                        <property name="image">image12</property>
+                        <property name="image">image_about</property>
                         <property name="use_stock">False</property>
                         <signal name="activate" handler="parole_show_about" swapped="no"/>
                       </object>
@@ -857,22 +853,16 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkBox" id="play-box">
+                      <object class="GtkBox" id="media_controls">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <child>
-                          <object class="GtkButton" id="media_prev">
+                          <object class="GtkButton" id="media_previous">
                             <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
                             <property name="receives_default">True</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_markup" translatable="yes">Previous</property>
-                            <property name="tooltip_text" translatable="yes">Previous</property>
-                            <property name="image">image_media_prev</property>
+                            <property name="image">image_media_previous</property>
                             <property name="relief">none</property>
-                            <property name="focus_on_click">False</property>
-                            <signal name="clicked" handler="parole_player_back_cb" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -881,18 +871,12 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkButton" id="media_play">
+                          <object class="GtkButton" id="media_playpause">
                             <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
                             <property name="receives_default">True</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_markup" translatable="yes">Play</property>
-                            <property name="tooltip_text" translatable="yes">Play</property>
-                            <property name="image">image_media_play</property>
+                            <property name="image">image_media_playpause</property>
                             <property name="relief">none</property>
-                            <property name="focus_on_click">False</property>
-                            <signal name="clicked" handler="parole_player_play_pause_clicked" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -903,16 +887,10 @@
                         <child>
                           <object class="GtkButton" id="media_next">
                             <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
                             <property name="receives_default">True</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_markup" translatable="yes">Next</property>
-                            <property name="tooltip_text" translatable="yes">Next</property>
                             <property name="image">image_media_next</property>
                             <property name="relief">none</property>
-                            <property name="focus_on_click">False</property>
-                            <signal name="clicked" handler="parole_player_forward_cb" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -1004,15 +982,10 @@ audio-volume-medium-symbolic</property>
                         <child>
                           <object class="GtkButton" id="media_fullscreen">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
                             <property name="receives_default">True</property>
-                            <property name="has_tooltip">True</property>
-                            <property name="tooltip_markup" translatable="yes">Fullscreen</property>
-                            <property name="tooltip_text" translatable="yes">Fullscreen</property>
                             <property name="image">image_media_fullscreen</property>
                             <property name="relief">none</property>
-                            <property name="always_show_image">True</property>
-                            <signal name="clicked" handler="parole_player_full_screen_activated_cb" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -1023,12 +996,11 @@ audio-volume-medium-symbolic</property>
                         <child>
                           <object class="GtkToggleButton" id="media_toggleplaylist">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
                             <property name="receives_default">True</property>
                             <property name="no_show_all">True</property>
-                            <property name="image">image_media_toggleplaylist</property>
+                            <property name="image">image_toggleplaylist</property>
                             <property name="relief">none</property>
-                            <signal name="clicked" handler="parole_player_show_hide_playlist" swapped="no"/>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -1039,9 +1011,8 @@ audio-volume-medium-symbolic</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="pack_type">end</property>
-                        <property name="position">0</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                   </object>
diff --git a/src/parole-player.c b/src/parole-player.c
index 9fe2f20..34b4ce1 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -135,17 +135,23 @@ gboolean    parole_player_range_button_release      (GtkWidget *widget,
 
 void        parole_player_range_value_changed       (GtkRange *range, 
                                                      ParolePlayer *player);
-
-void        parole_player_play_pause_clicked        (GtkButton *button, 
+                                                     
+void        parole_player_playpause_action_cb       (GtkAction *action,
                                                      ParolePlayer *player);
 
 void        parole_player_stop_clicked              (GtkButton *button, 
                                                      ParolePlayer *player);
 
-void        parole_player_forward_cb                (GtkButton *button, 
+void        parole_player_next_action_cb            (GtkAction *action, 
                                                      ParolePlayer *player);
                              
-void        parole_player_back_cb                   (GtkButton *button, 
+void        parole_player_previous_action_cb        (GtkAction *action, 
+                                                     ParolePlayer *player);
+                                                     
+void        parole_player_toggle_playlist_action_cb (GtkAction *action, 
+                                                     ParolePlayer *player);
+                                                     
+void        parole_player_fullscreen_action_cb      (GtkAction *action, 
                                                      ParolePlayer *player);
                              
 void        parole_player_seekf_cb                  (GtkWidget *widget, 
@@ -160,18 +166,12 @@ gboolean    parole_player_window_state_event        (GtkWidget *widget,
                                                      GdkEventWindowState *event,
                                                      ParolePlayer *player);
 
-void        parole_player_leave_fs_cb               (GtkButton *button,
-                                                     ParolePlayer *player);
-
 void        parole_player_destroy_cb                (GObject *window, 
                                                      ParolePlayer *player);
 
 gboolean    parole_player_delete_event_cb           (GtkWidget *widget, 
                                                      GdkEvent *ev,
                                                      ParolePlayer *player);
-
-void        parole_player_show_hide_playlist        (GtkWidget *widget,
-                                                     ParolePlayer *player);
                              
 void        parole_player_reset_controls            (ParolePlayer *player, 
                                                      gboolean fullscreen);
@@ -212,9 +212,6 @@ gboolean    parole_player_volume_scroll_event_cb    (GtkWidget *widget,
                                                      GdkEventScroll *ev,
                                                      ParolePlayer *player);
 
-void        parole_player_full_screen_activated_cb  (GtkWidget *widget,
-                                                     ParolePlayer *player);
-
 void        parole_player_shuffle_toggled_cb        (GtkWidget *widget,
                                                      ParolePlayer *player);
 
@@ -332,13 +329,8 @@ struct ParolePlayerPrivate
     GtkWidget          *window;
     GtkWidget          *recent_menu;
     GtkWidget          *playlist_nt;
-    GtkWidget          *show_hide_playlist;
-    GtkWidget          *show_hide_playlist_button;
     GtkWidget          *shuffle_menu_item;
     GtkWidget          *repeat_menu_item;
-    GtkWidget          *play_pause;
-    GtkWidget          *seekf;
-    GtkWidget          *seekb;
     GtkWidget          *range;
     
     GtkWidget          *progressbar_buffering;
@@ -347,9 +339,10 @@ struct ParolePlayerPrivate
     GtkWidget          *label_duration;
 
     GtkWidget          *control; /* contains all play button*/
+    GtkWidget          *playpause_button;
+    GtkWidget          *playpause_image;
     GtkWidget          *fullscreen_button;
     GtkWidget          *fullscreen_image;
-    GdkPixbuf          *logo;
     GtkWidget          *logo_image;
     
     GtkWidget          *hbox_infobar;
@@ -401,6 +394,12 @@ struct ParolePlayerPrivate
     gint                handle_width;
     
     GtkTreeRowReference *row;
+    
+    GtkAction          *media_next_action;
+    GtkAction          *media_playpause_action;
+    GtkAction          *media_previous_action;
+    GtkAction          *media_fullscreen_action;
+    GtkToggleAction    *toggle_playlist_action;
         
 };
 
@@ -484,15 +483,14 @@ void parole_player_set_playlist_visible (ParolePlayer *player, gboolean visibili
     if (playlist_w == 1)
         playlist_w = 220;
 
-    gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(player->priv->show_hide_playlist), visibility );
-    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(player->priv->show_hide_playlist_button), visibility );
+    gtk_toggle_action_set_active( player->priv->toggle_playlist_action, visibility );
     if ( visibility )
     {
         if ( !player->priv->full_screen )
             gtk_window_resize(GTK_WINDOW (player->priv->window), window_w+playlist_w+player->priv->handle_width, window_h);
         
         gtk_widget_show (player->priv->playlist_nt);
-        gtk_widget_set_tooltip_text( GTK_WIDGET( player->priv->show_hide_playlist_button ), _("Hide playlist") );
+        gtk_action_set_tooltip( GTK_ACTION( player->priv->toggle_playlist_action ), _("Hide playlist") );
         g_object_set   (G_OBJECT (player->priv->conf),    
                         "showhide-playlist", TRUE,
                         NULL);
@@ -500,7 +498,7 @@ void parole_player_set_playlist_visible (ParolePlayer *player, gboolean visibili
     else
     {
         gtk_widget_hide (player->priv->playlist_nt);
-        gtk_widget_set_tooltip_text( GTK_WIDGET( player->priv->show_hide_playlist_button ), _("Show playlist") );
+        gtk_action_set_tooltip( GTK_ACTION( player->priv->toggle_playlist_action ), _("Show playlist") );
         g_object_set   (G_OBJECT (player->priv->conf),    
                         "showhide-playlist", FALSE,
                         NULL);
@@ -510,7 +508,7 @@ void parole_player_set_playlist_visible (ParolePlayer *player, gboolean visibili
     }
 }
 
-void parole_player_show_hide_playlist (GtkWidget *widget, ParolePlayer *player)
+void parole_player_toggle_playlist_action_cb (GtkAction *action, ParolePlayer *player)
 {
     gboolean   visible;
     
@@ -1214,7 +1212,7 @@ parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_sel
 {
     if (player->priv->state < PAROLE_STATE_PAUSED)
     {
-    gtk_widget_set_sensitive   (player->priv->play_pause, 
+    gtk_action_set_sensitive   (player->priv->media_playpause_action, 
                                 media_selected || !parole_media_list_is_empty (player->priv->list));
     }
 }
@@ -1277,32 +1275,26 @@ parole_player_seekable_notify (ParoleStream *stream, GParamSpec *spec, ParolePla
           
     gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->range), seekable ? NULL : _("Media stream is not seekable"));
     gtk_widget_set_sensitive (GTK_WIDGET (player->priv->range), seekable);
-    gtk_widget_set_sensitive (player->priv->seekf, seekable);
-    gtk_widget_set_sensitive (player->priv->seekb, seekable);
 }
 
 static void
-parole_player_set_playpause_button_image (GtkWidget *widget, const gchar *stock_id)
+parole_player_set_playpause_button_from_stock (ParolePlayer *player, const gchar *stock_id)
 {
-    GtkWidget *img;
-    gchar *icon_name = NULL;
+    gchar *icon_name = NULL, *label = NULL;
     
     if (g_strcmp0(stock_id, "gtk-media-play") == 0) {
         icon_name = g_strdup("media-playback-start-symbolic");
+        label = _("Play");
     } else if (g_strcmp0(stock_id, "gtk-media-pause") == 0) {
         icon_name = g_strdup("media-playback-pause-symbolic");
+        label = _("Pause");
     }
     
-    g_object_get (G_OBJECT (widget),
-                  "image", &img,
-                  NULL);
-          
-    g_object_set (G_OBJECT (img),
-                  "icon-name", icon_name,
-                  NULL);
-
-    g_object_unref (img);
-    //g_object_unref (icon_name);
+    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_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);
 }
 
 static void
@@ -1380,10 +1372,13 @@ parole_player_playing (ParolePlayer *player, const ParoleStream *stream)
         player->priv->wait_for_gst_disc_info = FALSE;
     }
           
-    gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
+    gtk_action_set_sensitive (player->priv->media_playpause_action, TRUE);
     
-    parole_player_set_playpause_button_image (player->priv->play_pause, "gtk-media-pause");
-    gtk_widget_set_tooltip_text(player->priv->play_pause, _("Pause"));
+    /* FIXME: Better detection for when previous/next should be enabled */
+    gtk_action_set_sensitive (player->priv->media_previous_action, TRUE);
+    gtk_action_set_sensitive (player->priv->media_next_action, TRUE);
+    
+    parole_player_set_playpause_button_from_stock (player, "gtk-media-pause");
     
     gtk_widget_set_sensitive (player->priv->range, seekable);
     
@@ -1417,8 +1412,6 @@ parole_player_playing (ParolePlayer *player, const ParoleStream *stream)
     
     player->priv->internal_range_change = FALSE;
     
-    gtk_widget_set_sensitive (player->priv->seekf, seekable);
-    gtk_widget_set_sensitive (player->priv->seekb, seekable);
     gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->range), seekable ? NULL : _("Media stream is not seekable"));
 
     if ( pix )
@@ -1442,12 +1435,11 @@ parole_player_paused (ParolePlayer *player)
     pix = parole_icon_load ("media-playback-pause", 16);
     parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix);
     
-    gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
+    gtk_action_set_sensitive (player->priv->media_playpause_action, TRUE);
     
     if ( player->priv->user_seeking == FALSE)
     {
-        parole_player_set_playpause_button_image (player->priv->play_pause, "gtk-media-play");
-        gtk_widget_set_tooltip_text(player->priv->play_pause, _("Play"));
+        parole_player_set_playpause_button_from_stock (player, "gtk-media-play");
     }
     
     if ( pix )
@@ -1471,7 +1463,7 @@ parole_player_stopped (ParolePlayer *player)
     gchar dur_text[128];
     TRACE ("Player stopped");
     
-    gtk_widget_set_sensitive (player->priv->play_pause, 
+    gtk_action_set_sensitive (player->priv->media_playpause_action, 
                               parole_media_list_is_selected_row (player->priv->list) || 
                               !parole_media_list_is_empty (player->priv->list));
                   
@@ -1486,12 +1478,8 @@ parole_player_stopped (ParolePlayer *player)
 
     parole_player_change_range_value (player, 0);
     gtk_widget_set_sensitive (player->priv->range, FALSE);
-    
-    gtk_widget_set_sensitive (player->priv->seekf, FALSE);
-    gtk_widget_set_sensitive (player->priv->seekb, FALSE);
 
-    parole_player_set_playpause_button_image (player->priv->play_pause, "gtk-media-play");
-    gtk_widget_set_tooltip_text(player->priv->play_pause, _("Play"));
+    parole_player_set_playpause_button_from_stock (player, "gtk-media-play");
     
     parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
     
@@ -1665,8 +1653,8 @@ on_infobar_close_clicked (GtkButton *button, ParolePlayer *player)
     gtk_widget_hide(player->priv->infobar);
 }
 
-void
-parole_player_play_pause_clicked (GtkButton *button, ParolePlayer *player)
+static void
+parole_player_toggle_playpause (ParolePlayer *player)
 {
     if ( player->priv->state == PAROLE_STATE_PLAYING )
         parole_gst_pause (PAROLE_GST (player->priv->gst));
@@ -1677,17 +1665,23 @@ parole_player_play_pause_clicked (GtkButton *button, ParolePlayer *player)
 }
 
 void
+parole_player_playpause_action_cb (GtkAction *action, ParolePlayer *player)
+{
+    parole_player_toggle_playpause (player);
+}
+
+void
 parole_player_stop_clicked (GtkButton *button, ParolePlayer *player)
 {
     parole_gst_stop (PAROLE_GST (player->priv->gst));
 }
 
-void parole_player_forward_cb (GtkButton *button, ParolePlayer *player)
+void parole_player_next_action_cb (GtkAction *action, ParolePlayer *player)
 {
     parole_player_play_next (player, TRUE);
 }
                              
-void parole_player_back_cb (GtkButton *button, ParolePlayer *player)
+void parole_player_previous_action_cb (GtkAction *action, ParolePlayer *player)
 {
     parole_player_play_prev (player);
 }
@@ -1892,12 +1886,6 @@ parole_player_destroy_cb (GObject *window, ParolePlayer *player)
 {
 }
 
-static void
-parole_player_play_menu_item_activate (ParolePlayer *player)
-{
-    gtk_widget_activate (player->priv->play_pause);
-}
-
 gboolean
 parole_player_window_state_event (GtkWidget *widget, 
                                   GdkEventWindowState *event,
@@ -1938,13 +1926,14 @@ parole_player_reset_controls (ParolePlayer *player, gboolean fullscreen)
             gtk_box_set_child_packing( GTK_BOX(player->priv->control), GTK_WIDGET(player->priv->play_box), TRUE, TRUE, 2, GTK_PACK_START );
             gtk_widget_show (player->priv->play_box);
             gtk_widget_show (player->priv->menu_bar);
-            show_playlist = gtk_check_menu_item_get_active( GTK_CHECK_MENU_ITEM(player->priv->show_hide_playlist) );
+            show_playlist = gtk_toggle_action_get_active (player->priv->toggle_playlist_action);
             gtk_widget_show (player->priv->playlist_nt);
             parole_player_set_playlist_visible(player, show_playlist);
-            gtk_button_set_label (GTK_BUTTON(player->priv->fullscreen_button), "");
+            gtk_action_set_label(player->priv->media_fullscreen_action, _("Fullscreen"));
             gtk_widget_set_tooltip_text (player->priv->fullscreen_button, _("Fullscreen"));
             gtk_image_set_from_icon_name (GTK_IMAGE(player->priv->fullscreen_image), "view-fullscreen-symbolic", 24);
-            gtk_widget_show (player->priv->show_hide_playlist_button);
+            gtk_action_set_icon_name(player->priv->media_fullscreen_action, "view-fullscreen-symbolic");
+            gtk_action_set_visible (GTK_ACTION(player->priv->toggle_playlist_action), TRUE);
 
             gtk_window_unfullscreen (GTK_WINDOW (player->priv->window));
             gtk_notebook_set_current_page (GTK_NOTEBOOK (player->priv->playlist_nt), current_page);
@@ -1957,10 +1946,11 @@ parole_player_reset_controls (ParolePlayer *player, gboolean fullscreen)
             gtk_widget_hide (player->priv->menu_bar);
             gtk_widget_hide (player->priv->playlist_nt);
             parole_player_set_playlist_visible(player, FALSE);
-            gtk_button_set_label (GTK_BUTTON(player->priv->fullscreen_button), "");
+            gtk_action_set_label(player->priv->media_fullscreen_action, _("Leave Fullscreen"));
             gtk_widget_set_tooltip_text (player->priv->fullscreen_button, _("Leave Fullscreen"));
             gtk_image_set_from_icon_name (GTK_IMAGE(player->priv->fullscreen_image), "view-restore-symbolic", 24);
-            gtk_widget_hide (player->priv->show_hide_playlist_button);
+            gtk_action_set_icon_name(player->priv->media_fullscreen_action, "view-restore-symbolic");
+            gtk_action_set_visible (GTK_ACTION(player->priv->toggle_playlist_action), FALSE);
 
             current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (player->priv->playlist_nt));
 
@@ -1973,9 +1963,8 @@ parole_player_reset_controls (ParolePlayer *player, gboolean fullscreen)
     {
         gtk_widget_hide (player->priv->menu_bar);
         gtk_widget_hide (player->priv->playlist_nt);
-        gtk_widget_hide (player->priv->fullscreen_button);
-        gtk_widget_hide (player->priv->show_hide_playlist);
-        gtk_widget_hide (player->priv->show_hide_playlist_button);
+        gtk_action_set_visible (player->priv->media_fullscreen_action, FALSE);
+        gtk_action_set_visible (GTK_ACTION(player->priv->toggle_playlist_action), FALSE);
     }
 }
 
@@ -1999,27 +1988,15 @@ parole_player_full_screen (ParolePlayer *player, gboolean fullscreen)
     parole_player_reset_controls(player, fullscreen);
 }
 
-static void
-parole_player_full_screen_menu_item_activate (ParolePlayer *player)
+void parole_player_fullscreen_action_cb (GtkAction *action, ParolePlayer *player)
 {
     parole_player_full_screen (player, !player->priv->full_screen);
 }
 
-void parole_player_full_screen_activated_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    parole_player_full_screen_menu_item_activate (player);
-}
-
-void parole_player_leave_fs_cb (GtkButton *button, ParolePlayer *player)
-{
-    parole_player_full_screen_menu_item_activate (player);
-}
-
 static void
 parole_player_show_menu (ParolePlayer *player, guint button, guint activate_time)
 {
-    GtkWidget *menu, *mi, *icon;
-    gboolean sensitive;
+    GtkWidget *menu, *mi;
     
     player->priv->current_media_type = parole_gst_get_current_stream_type (PAROLE_GST (player->priv->gst));
     
@@ -2027,54 +2004,25 @@ parole_player_show_menu (ParolePlayer *player, guint button, guint activate_time
     
     /*Play menu item
      */
-    mi = gtk_image_menu_item_new_with_mnemonic (player->priv->state == PAROLE_STATE_PLAYING ? _("_Pause"):_("_Play"));
-    icon = gtk_image_new_from_icon_name (player->priv->state == PAROLE_STATE_PLAYING ? "media-playback-pause-symbolic":"media-playback-start-symbolic", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), GTK_WIDGET(icon));
-
-                         
-    g_object_get (G_OBJECT (player->priv->play_pause),
-                  "sensitive", &sensitive,
-                  NULL);
-          
-    gtk_widget_set_sensitive (mi, sensitive);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-                              G_CALLBACK (parole_player_play_menu_item_activate), player);
+    mi = gtk_action_create_menu_item(player->priv->media_playpause_action);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
     
     /*
      * Next item in playlist.
      */
-    mi = gtk_image_menu_item_new_with_mnemonic (_("_Next"));
-    icon = gtk_image_new_from_icon_name ("media-skip-forward-symbolic", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), GTK_WIDGET(icon));
-    gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_STATE_PAUSED));
-    gtk_widget_show (mi);
-    g_signal_connect (mi, "activate",
-                      G_CALLBACK (parole_player_forward_cb), player);
+    mi = gtk_action_create_menu_item(player->priv->media_next_action);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
     
     /*
      * Previous item in playlist.
      */
-    mi = gtk_image_menu_item_new_with_mnemonic (_("_Previous"));
-    icon = gtk_image_new_from_icon_name ("media-skip-backward-symbolic", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), GTK_WIDGET(icon));
-    gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_STATE_PAUSED));
-    gtk_widget_show (mi);
-    g_signal_connect (mi, "activate",
-                      G_CALLBACK (parole_player_back_cb), player);
+    mi = gtk_action_create_menu_item(player->priv->media_previous_action);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
     
     /*
      * Un/Full screen
      */
-    mi = gtk_image_menu_item_new_with_mnemonic (player->priv->full_screen ? _("_Leave Fullscreen"):_("_Fullscreen"));
-    icon = gtk_image_new_from_icon_name (player->priv->full_screen ? "view-restore-symbolic":"view-fullscreen-symbolic", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), GTK_WIDGET(icon));
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-                              G_CALLBACK (parole_player_full_screen_menu_item_activate), player);
+    mi = gtk_action_create_menu_item(player->priv->media_fullscreen_action);
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
 
     g_signal_connect_swapped (menu, "selection-done",
@@ -2093,7 +2041,7 @@ parole_player_gst_widget_button_press (GtkWidget *widget, GdkEventButton *ev, Pa
 
     if ( ev->type == GDK_2BUTTON_PRESS )
     {
-        parole_player_full_screen_menu_item_activate (player);
+        gtk_action_activate (player->priv->media_fullscreen_action);
         ret_val = TRUE;
     }
 
@@ -2482,13 +2430,13 @@ parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
     {
         case GDK_KEY_f:
         case GDK_KEY_F:
-                if ( player->priv->embedded != TRUE ) parole_player_full_screen_menu_item_activate (player);
+                if ( player->priv->embedded != TRUE ) gtk_action_activate (player->priv->media_fullscreen_action);
             ret_val = TRUE;
             break;
         case GDK_KEY_space:
         case GDK_KEY_p:
         case GDK_KEY_P:
-            parole_player_play_pause_clicked (NULL, player);
+            parole_player_toggle_playpause(player);
             ret_val = TRUE;
             break;
         case GDK_KEY_Right:
@@ -2555,11 +2503,11 @@ parole_player_key_press (GtkWidget *widget, GdkEventKey *ev, ParolePlayer *playe
     switch (ev->keyval)
     {
         case GDK_KEY_F11:
-                if ( player->priv->embedded != TRUE ) parole_player_full_screen_menu_item_activate (player);
+                if ( player->priv->embedded != TRUE ) gtk_action_activate (player->priv->media_fullscreen_action);
             return TRUE;
 #ifdef HAVE_XF86_KEYSYM
         case XF86XK_AudioPlay:
-            parole_player_play_pause_clicked (NULL, player);
+            parole_player_toggle_playpause(player);
             return TRUE;
         case XF86XK_AudioStop:
             parole_player_stop_clicked (NULL, player);
@@ -2596,7 +2544,7 @@ parole_player_button_pressed_cb (ParoleButton *button, ParoleButtonKey key, Paro
     switch (key)
     {
         case PAROLE_KEY_AUDIO_PLAY:
-            parole_player_play_pause_clicked (NULL, player);
+            parole_player_toggle_playpause(player);
             break;
         case PAROLE_KEY_AUDIO_STOP:
             parole_player_stop_clicked (NULL, player);
@@ -2874,6 +2822,7 @@ parole_player_init (ParolePlayer *player)
     gint volume;
 
     GtkWidget *hpaned;
+    GdkPixbuf *logo;
     
     GtkWidget *recent_menu;
     GtkRecentFilter *recent_filter;
@@ -2895,6 +2844,8 @@ parole_player_init (ParolePlayer *player)
     GtkWidget *controls_parent;
     GtkStyleContext *controls_style;
     
+    GtkWidget *action_widget;
+    
     g_setenv("PULSE_PROP_media.role", "video", TRUE);
     
     player->priv = PAROLE_PLAYER_GET_PRIVATE (player);
@@ -2984,6 +2935,43 @@ parole_player_init (ParolePlayer *player)
                
     g_signal_connect (output, "drag-data-received",
             G_CALLBACK (parole_player_drag_data_received_cb), player);
+            
+    /*
+     * GTK Actions
+     */
+    /* Previous Track */
+    player->priv->media_previous_action = gtk_action_new("previous_action", _("Previous Track"), _("Previous Track"), NULL);
+    gtk_action_set_icon_name(player->priv->media_previous_action, "media-skip-backward-symbolic");
+    gtk_action_set_always_show_image(player->priv->media_previous_action, TRUE);
+    g_signal_connect(G_OBJECT(player->priv->media_previous_action), "activate", G_CALLBACK(parole_player_previous_action_cb), player);
+    gtk_action_set_sensitive(player->priv->media_previous_action, FALSE);
+    
+    /* Next Track */
+    player->priv->media_next_action = gtk_action_new("next_action", _("Next Track"), _("Next Track"), NULL);
+    gtk_action_set_icon_name(player->priv->media_next_action, "media-skip-forward-symbolic");
+    gtk_action_set_always_show_image(player->priv->media_next_action, TRUE);
+    g_signal_connect(G_OBJECT(player->priv->media_next_action), "activate", G_CALLBACK(parole_player_next_action_cb), player);
+    gtk_action_set_sensitive(player->priv->media_next_action, FALSE);
+    
+    /* Play/Pause */
+    player->priv->media_playpause_action = gtk_action_new("playpause_action", _("Play"), _("Play"), NULL);
+    gtk_action_set_icon_name(player->priv->media_playpause_action, "media-playback-start-symbolic");
+    gtk_action_set_always_show_image(player->priv->media_playpause_action, TRUE);
+    g_signal_connect(G_OBJECT(player->priv->media_playpause_action), "activate", G_CALLBACK(parole_player_playpause_action_cb), player);
+    gtk_action_set_sensitive(player->priv->media_playpause_action, FALSE);
+    
+    /* Fullscreen */
+    player->priv->media_fullscreen_action = gtk_action_new("fullscreen_action", _("Fullscreen"), _("Fullscreen"), NULL);
+    gtk_action_set_icon_name(player->priv->media_fullscreen_action, "view-fullscreen-symbolic");
+    gtk_action_set_always_show_image(player->priv->media_fullscreen_action, TRUE);
+    g_signal_connect(G_OBJECT(player->priv->media_fullscreen_action), "activate", G_CALLBACK(parole_player_fullscreen_action_cb), player);
+    gtk_action_set_sensitive(player->priv->media_fullscreen_action, TRUE);
+    
+    /* Toggle Playlist */
+    player->priv->toggle_playlist_action = gtk_toggle_action_new("toggle_playlist_action", _("Show Playlist"), _("Show Playlist"), NULL);
+    g_signal_connect(G_OBJECT(player->priv->toggle_playlist_action), "activate", G_CALLBACK(parole_player_toggle_playlist_action_cb), player);
+    gtk_action_set_sensitive(GTK_ACTION(player->priv->toggle_playlist_action), TRUE);
+    
     
     /*
      * GTK Widgets
@@ -3086,7 +3074,10 @@ parole_player_init (ParolePlayer *player)
     player->priv->audio_group = NULL;
     
     /* Additional Menu Items */
-    player->priv->show_hide_playlist = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
+    action_widget = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
+    gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), TRUE);
+    gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), GTK_ACTION(player->priv->toggle_playlist_action));
+    
     player->priv->shuffle_menu_item = GTK_WIDGET (gtk_builder_get_object (builder, "shuffle"));
     player->priv->repeat_menu_item = GTK_WIDGET (gtk_builder_get_object (builder, "repeat"));
     
@@ -3104,9 +3095,9 @@ parole_player_init (ParolePlayer *player)
             G_CALLBACK (parole_player_gst_widget_motion_notify_event), player);
               
     /* Background Image */
-    player->priv->logo = gdk_pixbuf_new_from_file (g_strdup_printf ("%s/parole.png", PIXMAPS_DIR), NULL);
+    logo = gdk_pixbuf_new_from_file (g_strdup_printf ("%s/parole.png", PIXMAPS_DIR), NULL);
     player->priv->logo_image = GTK_WIDGET (gtk_builder_get_object (builder, "logo"));
-    gtk_image_set_from_pixbuf(GTK_IMAGE(player->priv->logo_image), player->priv->logo);
+    gtk_image_set_from_pixbuf(GTK_IMAGE(player->priv->logo_image), logo);
     
     /* Video Box */
     player->priv->videobox = GTK_WIDGET (gtk_builder_get_object (builder, "video_output"));
@@ -3126,7 +3117,8 @@ parole_player_init (ParolePlayer *player)
     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"));
-    player->priv->play_box = GTK_WIDGET (gtk_builder_get_object (builder, "play-box"));
+    player->priv->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);
@@ -3151,9 +3143,18 @@ parole_player_init (ParolePlayer *player)
     gtk_widget_show_all(controls_parent);
     
     /* Previous, Play/Pause, Next */
-    player->priv->seekb = GTK_WIDGET (gtk_builder_get_object (builder, "media_prev"));
-    player->priv->play_pause = GTK_WIDGET (gtk_builder_get_object (builder, "media_play"));
-    player->priv->seekf = GTK_WIDGET (gtk_builder_get_object (builder, "media_next"));
+    action_widget = GTK_WIDGET(gtk_builder_get_object(builder, "media_previous"));
+    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);
+
+    player->priv->playpause_button = GTK_WIDGET(gtk_builder_get_object(builder, "media_playpause"));
+    player->priv->playpause_image = GTK_WIDGET(gtk_builder_get_object(builder, "image_media_playpause"));
+    gtk_activatable_set_use_action_appearance(GTK_ACTIVATABLE(player->priv->playpause_button), FALSE);
+    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_activatable_set_use_action_appearance(GTK_ACTIVATABLE(action_widget), FALSE);
+    gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), player->priv->media_next_action);
     
     /* Elapsed/Duration labels */
     player->priv->label_duration = GTK_WIDGET(gtk_builder_get_object(builder, "media_time_duration"));
@@ -3171,11 +3172,18 @@ parole_player_init (ParolePlayer *player)
     
     /* (un)Fullscreen button */
     player->priv->fullscreen_button = GTK_WIDGET (gtk_builder_get_object (builder, "media_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);
+    gtk_activatable_set_related_action(GTK_ACTIVATABLE(player->priv->fullscreen_button), player->priv->media_fullscreen_action);
+    gtk_activatable_set_related_action(GTK_ACTIVATABLE(action_widget), player->priv->media_fullscreen_action);
     
     /* Show/Hide Playlist button */
-    player->priv->show_hide_playlist_button = GTK_WIDGET (gtk_builder_get_object (builder, "media_toggleplaylist"));
+    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));
     /* End Media Controls */
+    
     g_signal_connect(player->priv->control, "draw", G_CALLBACK(parole_overlay_expose_event), NULL);
     
     /* Info Bar */
@@ -3542,7 +3550,7 @@ parole_player_dbus_init (ParolePlayer *player)
 static gboolean parole_player_dbus_play (ParolePlayer *player,
                                          GError *error)
 {
-    parole_player_play_pause_clicked (NULL, player);
+    parole_player_toggle_playpause(player);
     return TRUE;
 }
 
@@ -3570,14 +3578,14 @@ static gboolean parole_player_dbus_prev_track (ParolePlayer *player,
 static gboolean parole_player_dbus_seek_forward (ParolePlayer *player,
                                                  GError *error)
 {
-    parole_player_forward_cb (NULL, player);
+    parole_player_play_next (player, TRUE);
     return TRUE;
 }
 
 static gboolean parole_player_dbus_seek_backward (ParolePlayer *player,
                                                   GError *error)
 {
-    parole_player_back_cb (NULL, player);
+    parole_player_play_prev (player);
     return TRUE;
 }
                      


More information about the Xfce4-commits mailing list