=== modified file '.pc/applied-patches'
--- .pc/applied-patches	2013-12-24 10:38:24 +0000
+++ .pc/applied-patches	2015-03-31 20:09:51 +0000
@@ -43,3 +43,4 @@
 gnomeradio-gtk_application.patch
 gnomeradio-g_dbus.patch
 gnomeradio-g_object.patch
+gnomeradio-popover.patch

=== modified file 'debian/changelog'
--- debian/changelog	2014-07-09 23:42:55 +0000
+++ debian/changelog	2015-03-31 20:09:51 +0000
@@ -1,3 +1,10 @@
+gnomeradio (1.8-2ubuntu31) vivid; urgency=medium
+
+  * Fix volume button popup with a known limitation of popovers (at least in
+    their current implementation). (LP: #1438261)
+
+ -- POJAR GEORGE <geoubuntu@gmail.com>  Mon, 30 Mar 2015 15:02:43 +0000
+
 gnomeradio (1.8-2ubuntu30) utopic; urgency=medium
 
   * Don't break up when recording doesn't work and we use key allocated to

=== added file 'debian/patches/gnomeradio-popover.patch'
--- debian/patches/gnomeradio-popover.patch	1970-01-01 00:00:00 +0000
+++ debian/patches/gnomeradio-popover.patch	2015-03-31 20:09:51 +0000
@@ -0,0 +1,70 @@
+Description: Fix volume button popup with a known limitation of popovers (at least in their current implementation).
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnomeradio/+bug/1438261
+Author: POJAR GEORGE <geoubuntu@gmail.com>
+Index: gnomeradio-1.8/src/gui.c
+===================================================================
+--- gnomeradio-1.8.orig/src/gui.c
++++ gnomeradio-1.8/src/gui.c
+@@ -93,6 +93,7 @@ static int timeout_id;
+ static int bp_timeout_id = -1;
+ static int bp_timeout_steps = 0;
+ static int volume_value_changed_id;
++static int redraw_status_window_id;
+ static gint mode;
+ 
+ static gboolean do_scan;
+@@ -566,6 +567,19 @@ static gboolean draw_cb(GtkWidget *widge
+ 	return TRUE;
+ }
+ 
++static void scale_button_map(GtkWidget *widget, gpointer data)
++{
++	if (redraw_status_window_id) {
++		g_source_remove(redraw_status_window_id);
++		redraw_status_window_id = 0;
++	}
++}
++
++static void scale_button_unmap(GtkWidget *widget, gpointer data)
++{
++	redraw_status_window_id = g_timeout_add_seconds(3, (GSourceFunc) redraw_status_window, NULL);
++}
++
+ void exit_gnome_radio(void)
+ {
+ 	if (settings.mute_on_exit)
+@@ -1035,6 +1049,7 @@ GtkWidget* gnome_radio_gui (void)
+ 	GtkWidget *vseparator;
+ 	GtkWidget *about_button;
+ /*	GtkWidget *quit_button; */
++	GtkWidget *popup;
+ 	GtkWidget *image;
+ 	gchar *text;
+ 	
+@@ -1172,6 +1187,8 @@ GtkWidget* gnome_radio_gui (void)
+ 
+ 	gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 4);
+ 
++	popup = gtk_scale_button_get_popup (GTK_SCALE_BUTTON (volume_button));
++
+ 	g_signal_connect (app, "delete_event", G_CALLBACK (delete_event_cb), NULL);
+ 	g_signal_connect (drawing_area, "draw", G_CALLBACK (draw_cb), NULL);
+ 	g_signal_connect (preset_combo, "changed", G_CALLBACK (preset_combo_change_cb), NULL);
+@@ -1189,6 +1206,8 @@ GtkWidget* gnome_radio_gui (void)
+ 	g_signal_connect (prefs_button, "clicked", G_CALLBACK (prefs_button_clicked_cb), (gpointer) app);
+ 	g_signal_connect (about_button, "clicked", G_CALLBACK (about_button_clicked_cb), NULL);
+ /*	g_signal_connect (quit_button, "clicked", G_CALLBACK (quit_button_clicked_cb), NULL); */
++	g_signal_connect (popup, "map", G_CALLBACK (scale_button_map), NULL);
++	g_signal_connect (popup, "unmap", G_CALLBACK (scale_button_unmap), NULL);
+ 
+ 	gtk_widget_set_tooltip_text (scbw_button, _("Scan Backwards"));
+ 	gtk_widget_set_tooltip_text (stbw_button, _("0.05 MHz Backwards"));
+@@ -1432,7 +1451,7 @@ startup_cb (GApplication *application, g
+ 
+ 	g_signal_connect (app, "key-press-event", G_CALLBACK (key_press_event_cb), NULL);
+ 
+-	g_timeout_add_seconds (3, (GSourceFunc)redraw_status_window, NULL);
++	redraw_status_window_id = g_timeout_add_seconds (3, (GSourceFunc) redraw_status_window, NULL);
+ }
+ 
+ static void

=== modified file 'debian/patches/series'
--- debian/patches/series	2013-12-24 10:38:24 +0000
+++ debian/patches/series	2015-03-31 20:09:51 +0000
@@ -43,3 +43,4 @@
 gnomeradio-gtk_application.patch
 gnomeradio-g_dbus.patch
 gnomeradio-g_object.patch
+gnomeradio-popover.patch

=== modified file 'src/gui.c'
--- src/gui.c	2014-07-09 23:42:55 +0000
+++ src/gui.c	2015-03-31 20:09:51 +0000
@@ -93,6 +93,7 @@
 static int bp_timeout_id = -1;
 static int bp_timeout_steps = 0;
 static int volume_value_changed_id;
+static int redraw_status_window_id;
 static gint mode;
 
 static gboolean do_scan;
@@ -566,6 +567,19 @@
 	return TRUE;
 }
 
+static void scale_button_map(GtkWidget *widget, gpointer data)
+{
+	if (redraw_status_window_id) {
+		g_source_remove(redraw_status_window_id);
+		redraw_status_window_id = 0;
+	}
+}
+
+static void scale_button_unmap(GtkWidget *widget, gpointer data)
+{
+	redraw_status_window_id = g_timeout_add_seconds(3, (GSourceFunc) redraw_status_window, NULL);
+}
+
 void exit_gnome_radio(void)
 {
 	if (settings.mute_on_exit)
@@ -1035,6 +1049,7 @@
 	GtkWidget *vseparator;
 	GtkWidget *about_button;
 /*	GtkWidget *quit_button; */
+	GtkWidget *popup;
 	GtkWidget *image;
 	gchar *text;
 	
@@ -1172,6 +1187,8 @@
 
 	gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 4);
 
+	popup = gtk_scale_button_get_popup (GTK_SCALE_BUTTON (volume_button));
+
 	g_signal_connect (app, "delete_event", G_CALLBACK (delete_event_cb), NULL);
 	g_signal_connect (drawing_area, "draw", G_CALLBACK (draw_cb), NULL);
 	g_signal_connect (preset_combo, "changed", G_CALLBACK (preset_combo_change_cb), NULL);
@@ -1189,6 +1206,8 @@
 	g_signal_connect (prefs_button, "clicked", G_CALLBACK (prefs_button_clicked_cb), (gpointer) app);
 	g_signal_connect (about_button, "clicked", G_CALLBACK (about_button_clicked_cb), NULL);
 /*	g_signal_connect (quit_button, "clicked", G_CALLBACK (quit_button_clicked_cb), NULL); */
+	g_signal_connect (popup, "map", G_CALLBACK (scale_button_map), NULL);
+	g_signal_connect (popup, "unmap", G_CALLBACK (scale_button_unmap), NULL);
 
 	gtk_widget_set_tooltip_text (scbw_button, _("Scan Backwards"));
 	gtk_widget_set_tooltip_text (stbw_button, _("0.05 MHz Backwards"));
@@ -1432,7 +1451,7 @@
 
 	g_signal_connect (app, "key-press-event", G_CALLBACK (key_press_event_cb), NULL);
 
-	g_timeout_add_seconds (3, (GSourceFunc)redraw_status_window, NULL);
+	redraw_status_window_id = g_timeout_add_seconds (3, (GSourceFunc) redraw_status_window, NULL);
 }
 
 static void

