mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-22 19:44:21 +01:00
audio/volumeicon: Add option to built against GTK+2.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
40c2cb1bcf
commit
5c62be2fe7
3 changed files with 203 additions and 2 deletions
|
@ -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
|
||||
|
|
193
audio/volumeicon/gtk2.patch
Normal file
193
audio/volumeicon/gtk2.patch
Normal file
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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" \
|
||||
|
|
Loading…
Reference in a new issue