summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaditya Bagga <aaditya_gnulinux@zoho.com>2014-12-26 00:14:40 +0700
committerRobby Workman <rworkman@slackbuilds.org>2014-12-27 23:16:19 -0600
commit5c62be2fe7ca75019c64805e19a76b0e29ec0546 (patch)
treee2d19b532eab5421efbad60104151ef9e1d9ac6b
parent40c2cb1bcfada6a947ccd8fb54c936582715d15b (diff)
downloadslackbuilds-5c62be2fe7ca75019c64805e19a76b0e29ec0546.tar.gz
audio/volumeicon: Add option to built against GTK+2.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
-rw-r--r--audio/volumeicon/README3
-rw-r--r--audio/volumeicon/gtk2.patch193
-rw-r--r--audio/volumeicon/volumeicon.SlackBuild9
3 files changed, 203 insertions, 2 deletions
diff --git a/audio/volumeicon/README b/audio/volumeicon/README
index ccd30857ba..573032f22f 100644
--- a/audio/volumeicon/README
+++ b/audio/volumeicon/README
@@ -18,3 +18,6 @@ at the moment, so using this flag will disable ALSA support.
To enable notifications, you will need to run the script like this:
NOTIFY=yes ./volumeicon.SlackBuild
+
+To build the GTK2 version (GTK3 is upstream default), the script can be run as:
+GTK2=yes ./volumeicon.SlackBuild
diff --git a/audio/volumeicon/gtk2.patch b/audio/volumeicon/gtk2.patch
new file mode 100644
index 0000000000..4a8d6cbac2
--- /dev/null
+++ b/audio/volumeicon/gtk2.patch
@@ -0,0 +1,193 @@
+diff -up src/volumeicon-0.5.0/configure.ac.orig src/volumeicon-0.5.0/configure.ac
+--- src/volumeicon-0.5.0/configure.ac.orig 2013-02-25 09:06:49.000000000 -0700
++++ src/volumeicon-0.5.0/configure.ac 2014-05-17 08:58:51.000000000 -0600
+@@ -35,7 +35,7 @@ AC_ARG_ENABLE([notify],
+ [notify=no])
+
+ # Check for gtk
+-PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.0])
++PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.16])
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+
+@@ -64,8 +64,8 @@ AC_ARG_WITH([oss-include-path],
+ OSS_CPPFLAGS="-I${OSSLIBDIR}/include/sys"
+ OSS_HEADER="${OSSLIBDIR}/include/sys/soundcard.h"
+ else
+- OSS_CPPFLAGS="-I/usr/lib/oss/include/sys"
+- OSS_HEADER="/usr/lib/oss/include/sys/soundcard.h"
++ OSS_CPPFLAGS=""
++ OSS_HEADER="sys/soundcard.h"
+ fi
+ ]
+ )
+@@ -75,7 +75,7 @@ AC_ARG_WITH([oss-include-path],
+ # to fail.
+ OLD_CPPFLAGS=${CPPFLAGS}
+ CPPFLAGS="${OSS_CPPFLAGS}"
+-AC_CHECK_HEADER([soundcard.h], [], [AC_MSG_ERROR([could not find soundcard.h])], [])
++AC_CHECK_HEADER([sys/soundcard.h], [], [AC_MSG_ERROR([could not find soundcard.h])], [])
+ CPPFLAGS=${OLD_CPPFLAGS}
+
+ # Pass the absolute path to the OSS header file
+diff -up src/volumeicon-0.5.0/src/bind.c.orig src/volumeicon-0.5.0/src/bind.c
+--- src/volumeicon-0.5.0/src/bind.c.orig 2012-10-25 09:59:10.000000000 -0600
++++ src/volumeicon-0.5.0/src/bind.c 2014-05-17 08:57:35.000000000 -0600
+@@ -151,7 +151,11 @@ grab_ungrab_with_ignorable_modifiers (Gd
+ XGrabKey (GDK_WINDOW_XDISPLAY (rootwin),
+ keycode,
+ modifiers | mod_masks [i],
++#if GTK_CHECK_VERSION(3,0,0)
+ gdk_x11_window_get_xid (rootwin),
++#elif GTK_CHECK_VERSION(2,16,0)
++ GDK_WINDOW_XID (rootwin),
++#endif
+ False,
+ GrabModeAsync,
+ GrabModeAsync);
+@@ -159,7 +163,12 @@ grab_ungrab_with_ignorable_modifiers (Gd
+ XUngrabKey (GDK_WINDOW_XDISPLAY (rootwin),
+ keycode,
+ modifiers | mod_masks [i],
+- gdk_x11_window_get_xid (rootwin));
++#if GTK_CHECK_VERSION(3,0,0)
++ gdk_x11_window_get_xid (rootwin)
++#elif GTK_CHECK_VERSION(2,16,0)
++ GDK_WINDOW_XID (rootwin)
++#endif
++ );
+ }
+ }
+ gdk_flush();
+diff -up src/volumeicon-0.5.0/src/volumeicon.c.orig src/volumeicon-0.5.0/src/volumeicon.c
+--- src/volumeicon-0.5.0/src/volumeicon.c.orig 2013-02-25 08:52:49.000000000 -0700
++++ src/volumeicon-0.5.0/src/volumeicon.c 2014-05-17 08:57:35.000000000 -0600
+@@ -527,6 +527,7 @@ static gboolean scale_timeout(gpointer d
+ gtk_window_get_size(GTK_WINDOW(m_scale_window), &window.width, &window.height);
+ gtk_status_icon_get_geometry(m_status_icon, NULL, &icon, NULL);
+
++#if GTK_CHECK_VERSION(3,0,0)
+ GdkWindow *root_window;
+ GdkDeviceManager *device_manager;
+ GdkDevice *pointer;
+@@ -536,6 +537,15 @@ static gboolean scale_timeout(gpointer d
+ device_manager = gdk_display_get_device_manager(gdk_window_get_display(root_window));
+ pointer = gdk_device_manager_get_client_pointer(device_manager);
+ gdk_window_get_device_position(root_window, pointer, &x, &y, NULL);
++#elif GTK_CHECK_VERSION(2,16,0)
++ GdkWindow *root_window;
++ gint x, y;
++
++ root_window = gtk_widget_get_root_window(m_scale_window);
++ gdk_display_get_pointer(gdk_window_get_display(root_window), NULL, &x, &y, NULL);
++#else
++#error No GTK version
++#endif
+
+ if(scale_point_in_rect(&window, x, y) || scale_point_in_rect(&icon, x, y))
+ {
+@@ -827,6 +837,7 @@ static void render_widget (cairo_t *cair
+ cairo_paint (cairo_context);
+ }
+
++#if GTK_CHECK_VERSION(3,0,0)
+ static void update_widget (GtkWidget *widget, gint width, gint height)
+ {
+ cairo_surface_t *mask;
+@@ -857,6 +868,32 @@ static void update_widget (GtkWidget *wi
+ cairo_surface_destroy(mask);
+ }
+ }
++#elif GTK_CHECK_VERSION(2,0,0)
++static void update_widget (GtkWidget *widget, gint width, gint height)
++{
++ GdkPixmap *bitmap;
++
++ bitmap = gdk_pixmap_new(NULL, width, height, 1);
++ if (bitmap != NULL) {
++ cairo_t *cairo_context = gdk_cairo_create(GDK_DRAWABLE(bitmap));
++
++ if (cairo_status(cairo_context) == CAIRO_STATUS_SUCCESS) {
++
++ render_widget(cairo_context, width, height);
++ cairo_destroy(cairo_context);
++
++ gtk_widget_input_shape_combine_mask(widget, NULL, 0, 0);
++ if (!gtk_widget_is_composited(widget))
++ gtk_widget_input_shape_combine_mask(widget, bitmap, 0, 0);
++
++ gtk_widget_shape_combine_mask(widget, NULL, 0, 0);
++ if (!gtk_widget_is_composited(widget))
++ gtk_widget_shape_combine_mask(widget, bitmap, 0, 0);
++ }
++ g_object_unref(G_OBJECT(bitmap));
++ }
++}
++#endif
+
+ static gboolean on_configure (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data)
+ {
+@@ -871,9 +908,17 @@ static gboolean on_configure (GtkWidget
+
+ static gboolean on_draw (GtkWidget *widget, cairo_t *cairo_context, gpointer user_data)
+ {
++#if GTK_CHECK_VERSION(3,0,0)
+ render_widget(cairo_context,
+ gtk_widget_get_allocated_width(widget),
+ gtk_widget_get_allocated_height(widget));
++#elif GTK_CHECK_VERSION(2,16,0)
++ GtkAllocation allocation;
++ gtk_widget_get_allocation(widget,&allocation);
++ render_widget(cairo_context,
++ allocation.width,
++ allocation.height);
++#endif
+ return FALSE;
+ }
+
+@@ -888,10 +933,17 @@ static void scale_setup()
+ {
+ GdkScreen *screen;
+
++#if GTK_CHECK_VERSION(3,0,0)
+ if(config_get_use_horizontal_slider())
+ m_scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0.0, 100.0, 1.0);
+ else
+ m_scale = gtk_scale_new_with_range(GTK_ORIENTATION_VERTICAL, 0.0, 100.0, 1.0);
++#elif GTK_CHECK_VERSION(2,16,0)
++ if (config_get_use_horizontal_slider())
++ m_scale = gtk_hscale_new_with_range(0.0, 100.0, 1.0);
++ else
++ m_scale = gtk_vscale_new_with_range(0.0, 100.0, 1.0);
++#endif
+ gtk_range_set_inverted(GTK_RANGE(m_scale), TRUE);
+ gtk_scale_set_draw_value(GTK_SCALE(m_scale), config_get_show_sound_level());
+
+@@ -904,15 +956,27 @@ static void scale_setup()
+ gtk_widget_set_visual(GTK_WIDGET(m_scale_window), visual);
+ gtk_widget_set_app_paintable(GTK_WIDGET(m_scale_window), TRUE);
+ gtk_widget_realize(GTK_WIDGET(m_scale_window));
++#if GTK_CHECK_VERSION(3,0,0)
+ gdk_window_set_background_pattern(gtk_widget_get_window(GTK_WIDGET(m_scale_window)), NULL);
++#elif GTK_CHECK_VERSION(2,16,0)
++ gdk_window_set_back_pixmap(gtk_widget_get_window(GTK_WIDGET(m_scale_window)), NULL, FALSE);
++#endif
+ gtk_window_set_type_hint(GTK_WINDOW(m_scale_window), GDK_WINDOW_TYPE_HINT_DOCK);
+
+ g_signal_connect(G_OBJECT(m_scale_window), "draw", G_CALLBACK(on_draw), NULL);
+ g_signal_connect(G_OBJECT(m_scale_window), "configure-event", G_CALLBACK(on_configure), NULL);
+
++#if GTK_CHECK_VERSION(3,0,0)
+ update_widget(GTK_WIDGET(m_scale_window),
+ gtk_widget_get_allocated_width(GTK_WIDGET(m_scale_window)),
+ gtk_widget_get_allocated_height(GTK_WIDGET(m_scale_window)));
++#elif GTK_CHECK_VERSION(2,16,0)
++ GtkAllocation allocation;
++ gtk_widget_get_allocation(GTK_WIDGET(m_scale_window), &allocation);
++ update_widget(GTK_WIDGET(m_scale_window),
++ allocation.width,
++ allocation.height);
++#endif
+ }
+ }
+
diff --git a/audio/volumeicon/volumeicon.SlackBuild b/audio/volumeicon/volumeicon.SlackBuild
index 667088d7ca..01b1b4ff20 100644
--- a/audio/volumeicon/volumeicon.SlackBuild
+++ b/audio/volumeicon/volumeicon.SlackBuild
@@ -1,7 +1,6 @@
#!/bin/sh
# Slackware build script for volumeicon
-
# Written by Daniel Cash (Original Author)
# Copyright 2014 Aaditya Bagga <aaditya_gnulinux@zoho.com>
@@ -26,7 +25,7 @@
PRGNAM=volumeicon
VERSION=${VERSION:-0.5.0}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
CWD=$(pwd)
@@ -74,6 +73,12 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Check for GTK2
+if [ "$GTK2" == "yes" ]; then
+ # Patch courtesy https://aur.archlinux.org/packages/volumeicon-gtk2/
+ patch -Np2 -b -z .orig -i $CWD/gtk2.patch
+ autoreconf -fi
+fi
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \