rpms/gsynaptics/devel gsynaptics-0.9.14-driver-header.patch, NONE, 1.1 gsynaptics-0.9.14-fix-scrolling-checkboxes.patch, NONE, 1.1 gsynaptics-0.9.14-scrolling-checkboxes.patch, NONE, 1.1 gsynaptics-0.9.14-scrollmethods.patch, NONE, 1.1 gsynaptics.spec, 1.20, 1.21
Peter Hutterer
whot at fedoraproject.org
Thu Apr 2 00:35:00 UTC 2009
- Previous message: rpms/ibus-table-wubi/devel ibus-table-wubi.spec,1.1,1.2
- Next message: rpms/qemu/devel 01-tls-handshake-fix.patch, NONE, 1.1 02-vnc-monitor-info.patch, NONE, 1.1 03-display-keymaps.patch, NONE, 1.1 04-vnc-struct.patch, NONE, 1.1 05-vnc-tls-vencrypt.patch, NONE, 1.1 06-vnc-sasl.patch, NONE, 1.1 07-vnc-monitor-authinfo.patch, NONE, 1.1 08-vnc-acl-mgmt.patch, NONE, 1.1 .cvsignore, 1.13, 1.14 kvm-upstream-ppc.patch, 1.2, 1.3 qemu.spec, 1.70, 1.71 sources, 1.13, 1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: whot
Update of /cvs/pkgs/rpms/gsynaptics/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31643
Modified Files:
gsynaptics.spec
Added Files:
gsynaptics-0.9.14-driver-header.patch
gsynaptics-0.9.14-fix-scrolling-checkboxes.patch
gsynaptics-0.9.14-scrolling-checkboxes.patch
gsynaptics-0.9.14-scrollmethods.patch
Log Message:
* Mon Apr 2 2009 Peter Hutterer <peter.hutterer at redhat.com> - 0.9.14-5
- gsynaptics-0.9.14-scrolling-checkboxes.patch: set checkboxes based on the
scrolling enabled/disabled property, not on the delta.
- gsynaptics-0.9.14-driver-header.patch: use the driver's header file instead
of a custom synshm.h.
- Require xorg-x11-drv-synaptics now that we use the driver header, and force
an autoreconf to include it properly.
- gsynaptics-0.9.14-fix-scrolling-checkboxes.patch: fix scrolling
enabled/disabled checkboxes
- gsynaptics-0.9.14-scrollmethod.patch: provide radiobuttons instead
gsynaptics-0.9.14-driver-header.patch:
--- NEW FILE gsynaptics-0.9.14-driver-header.patch ---
>From 53529e21e35efe409afc7be42553551ac89c9aa4 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Fri, 13 Mar 2009 10:06:50 +1000
Subject: [PATCH] Use the driver's synaptics.h file instead of our own synshm.h file.
Requires chaning a couple of constant names, but oh well, we get bonus points
for having the same SHM struct as the driver.
---
src/Makefile.am | 2 +
src/gsynaptics.c | 22 ++++++------
src/gsynaptics.h | 10 +++---
src/main.c | 6 ++--
src/synshm.h | 107 ------------------------------------------------------
5 files changed, 21 insertions(+), 126 deletions(-)
delete mode 100644 src/synshm.h
diff --git a/configure.ac b/configure.ac
index 085ee4e..3bd7747 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,10 @@ PKG_CHECK_MODULES(GCONF2, gconf-2.0)
AC_SUBST(GCONF2_CFLAGS)
AC_SUBST(GCONF2_LIBS)
+PKG_CHECK_MODULES(SYNAPTICS, xorg-synaptics)
+AC_SUBST(SYNAPTICS_CFLAGS)
+AC_SUBST(SYNAPTICS_LIBS)
+
GETTEXT_PACKAGE=gsynaptics
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Gettext package])
diff --git a/src/Makefile.am b/src/Makefile.am
index 643fcb9..a5f9046 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,6 +5,7 @@ gsynaptics_CFLAGS = \
$(GTK_CFLAGS) \
$(GLADE2_CFLAGS) \
$(GCONF2_CFLAGS) \
+ $(SYNAPTICS_CFLAGS) \
$(AM_CFLAGS)
gsynaptics_SOURCES = \
@@ -29,6 +30,7 @@ gsynaptics_init_CFLAGS = \
$(GLIB_CFLAGS) \
$(GNOME_CFLAGS) \
$(GCONF2_CFLAGS) \
+ $(SYNAPTICS_CFLAGS) \
$(AM_CFLAGS)
gsynaptics_init_LDADD = \
diff --git a/src/gsynaptics.c b/src/gsynaptics.c
index 3598c18..37e6cb2 100644
--- a/src/gsynaptics.c
+++ b/src/gsynaptics.c
@@ -233,7 +233,7 @@ g_synaptics_is_tapping_enabled (GSynaptics *synaptics)
else
{
return SYNSHM(synaptics)->tap_time > 0 &&
- SYNSHM(synaptics)->tap_action[OneFinger] > 0; /* F1_TAP */
+ SYNSHM(synaptics)->tap_action[F1_TAP] > 0; /* F1_TAP */
}
}
@@ -256,7 +256,7 @@ g_synaptics_tap_time (GSynaptics *synaptics)
#if 0
gint
-g_synaptics_tap_action (GSynaptics *synaptics, TapType type)
+g_synaptics_tap_action (GSynaptics *synaptics, TapEvent type)
{
}
#endif
@@ -499,7 +499,7 @@ g_synaptics_circular_scroll_trigger (GSynaptics *synaptics)
}
Button
-g_synaptics_button_for_tap (GSynaptics *synaptics, TapType tap)
+g_synaptics_button_for_tap (GSynaptics *synaptics, TapEvent tap)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
if (!g_synaptics_is_valid(synaptics))
@@ -617,7 +617,7 @@ g_synaptics_set_tap_time (GSynaptics *synaptics, gint time)
#if 0
void
-g_synaptics_set_tap_action (GSynaptics *synaptics, TapType type, int action)
+g_synaptics_set_tap_action (GSynaptics *synaptics, TapEvent type, int action)
{
if (!g_synaptics_is_valid(synaptics))
return;
@@ -884,7 +884,7 @@ g_synaptics_set_circular_scroll_trigger (GSynaptics *synaptics, ScrollTrigger t)
}
void
-g_synaptics_set_button_for_tap (GSynaptics *synaptics, TapType tap, Button button)
+g_synaptics_set_button_for_tap (GSynaptics *synaptics, TapEvent tap, Button button)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
if (!g_synaptics_is_valid(synaptics))
@@ -894,19 +894,19 @@ g_synaptics_set_button_for_tap (GSynaptics *synaptics, TapType tap, Button butto
{
gchar *command;
- if (tap >= OneFinger)
+ if (tap >= F1_TAP)
{
command = g_strdup_printf ("synclient TapButton%d=%d",
- tap - OneFinger + 1, button);
+ tap - F1_TAP + 1, button);
} else
{
char *corner;
switch (tap)
{
- case RightTop: corner ="RT"; break;
- case LeftTop: corner ="LT"; break;
- case RightBottom: corner ="RB"; break;
- case LeftBottom: corner ="LB"; break;
+ case RT_TAP: corner ="RT"; break;
+ case LT_TAP: corner ="LT"; break;
+ case RB_TAP: corner ="RB"; break;
+ case LB_TAP: corner ="LB"; break;
default:
return;
}
diff --git a/src/gsynaptics.h b/src/gsynaptics.h
index 3b15c7e..11b8763 100644
--- a/src/gsynaptics.h
+++ b/src/gsynaptics.h
@@ -20,7 +20,7 @@
#define __G_SYNAPTICS_H__
#include <gtk/gtk.h>
-#include "synshm.h"
+#include <synaptics.h>
G_BEGIN_DECLS
@@ -76,7 +76,7 @@ void g_synaptics_edges (GSynaptics *synaptics);
gboolean g_synaptics_is_tapping_enabled (GSynaptics *synaptics);
gint g_synaptics_tap_time (GSynaptics *synaptics);
gint g_synaptics_tap_action (GSynaptics *synaptics,
- TapType type );
+ TapEvent type );
gint g_synaptics_sensitivity (GSynaptics *synaptics);
gboolean g_synaptics_is_horizontal_scroll_enabled(GSynaptics *synaptics);
gint g_synaptics_horizontal_scroll_delta (GSynaptics *synaptics);
@@ -91,7 +91,7 @@ gboolean g_synaptics_is_circular_scroll_enabled (GSynaptics *synaptics);
gint g_synaptics_circular_scroll_delta (GSynaptics *synaptics);
ScrollTrigger g_synaptics_circular_scroll_trigger (GSynaptics *synaptics);
Button g_synaptics_button_for_tap (GSynaptics *synaptics,
- TapType tap );
+ TapEvent tap );
gboolean g_synaptics_are_fast_taps_enabled (GSynaptics *synaptics);
gint g_synaptics_abs_coord_x (GSynaptics *synaptics);
gint g_synaptics_abs_coord_y (GSynaptics *synaptics);
@@ -102,7 +102,7 @@ void g_synaptics_set_edges (GSynaptics *synaptics);
void g_synaptics_set_tap_time (GSynaptics *synaptics,
gint time);
void g_synaptics_set_tap_action (GSynaptics *synaptics,
- TapType type,
+ TapEvent type,
int action);
void g_synaptics_set_sensitivity (GSynaptics *synaptics,
gint value);
@@ -127,7 +127,7 @@ void g_synaptics_set_circular_scroll_delta (GSynaptics *synaptics,
void g_synaptics_set_circular_scroll_trigger (GSynaptics *synaptics,
ScrollTrigger t);
void g_synaptics_set_button_for_tap (GSynaptics *synaptics,
- TapType tap,
+ TapEvent tap,
Button button);
void g_synaptics_set_fast_taps (GSynaptics *synaptics,
gboolean enable);
diff --git a/src/main.c b/src/main.c
index 71c1570..d0cc0dd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -223,9 +223,9 @@ cb_tapping_toggled (GtkToggleButton *button, GladeXML *dialog)
g_synaptics_set_tap_time (synaptics, time);
/* Default 1/2/3 finger tap settings */
- g_synaptics_set_button_for_tap(synaptics, OneFinger, check ? 1 : 0);
- g_synaptics_set_button_for_tap(synaptics, TwoFingers, check ? 3 : 0);
- g_synaptics_set_button_for_tap(synaptics, ThreeFingers, check ? 2 : 0);
+ g_synaptics_set_button_for_tap(synaptics, F1_TAP, check ? 1 : 0);
+ g_synaptics_set_button_for_tap(synaptics, F2_TAP, check ? 3 : 0);
+ g_synaptics_set_button_for_tap(synaptics, F3_TAP, check ? 2 : 0);
gconf_client_set_int (gconf, MAXTAPTIME_KEY, time, NULL);
}
diff --git a/src/synshm.h b/src/synshm.h
deleted file mode 100644
index 59ec0f4..0000000
--- a/src/synshm.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2004 by Stefan Kombrink <katakombi at web.de> *
- * Copyright (C) 2004 by Nadeem Hasan <nhasan at kde.org> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#ifndef _SYNSHM_H_
-#define _SYNSHM_H_
-
-#include <X11/Xdefs.h>
-
-/***************************************************************************
- * Public definitions (from Peter Osterlunds synaptics driver)
- ***************************************************************************/
-
-typedef enum
-{
- RightTop = 0, /* Right top corner */
- RightBottom, /* Right bottom corner */
- LeftTop, /* Left top corner */
- LeftBottom, /* Left bottom corner */
- OneFinger, /* Non-corner tap, one finger */
- TwoFingers, /* Non-corner tap, two fingers */
- ThreeFingers, /* Non-corner tap, three fingers */
- MaxTap
-} TapType;
-
-struct SynapticsHwInfo
-{
- unsigned int model_id; /* Model-ID */
- unsigned int capabilities; /* Capabilities */
- unsigned int ext_cap; /* Extended Capabilities */
- unsigned int identity; /* Identification */
- Bool hasGuest; /* Has a guest mouse */
-};
-
-// SHM Id
-#define SHM_SYNAPTICS 23947
-
-typedef struct _SynapticsSHM
-{
- /* Current device state */
- int x, y; /* actual x, y coordinates */
- int z; /* pressure value */
- int numFingers; /* number of fingers */
- int fingerWidth; /* finger width value */
- int left, right, up, down; /* left/right/up/down buttons */
- Bool multi[8];
- Bool middle;
- int guest_left, guest_mid, guest_right; /* guest device buttons */
- int guest_dx, guest_dy; /* guest device movement */
-
- /* Probed hardware properties */
- struct SynapticsHwInfo synhw;
-
- /* Parameter data */
- int left_edge, right_edge, top_edge, bottom_edge; /* edge coordinates absolute */
- int finger_low, finger_high; /* finger detection values in Z-values */
- unsigned long tap_time;
- int tap_move; /* max. tapping time and movement in packets and coord. */
- unsigned long tap_time_2; /* max. tapping time for double taps */
- unsigned long click_time; /* The duration of a single click */
- Bool fast_taps;
- int emulate_mid_button_time; /* Max time between left and right button presses
-to
- emulate a middle button press. */
- int scroll_dist_vert; /* Scrolling distance in absolute coordinates */
- int scroll_dist_horiz; /* Scrolling distance in absolute coordinates */
- double min_speed, max_speed, accl; /* movement parameters */
- int edge_motion_min_z; /* finger pressure at which minimum edge motion speed
-is set */
- int edge_motion_max_z; /* finger pressure at which maximum edge motion speed
-is set */
- int edge_motion_min_speed; /* slowest setting for edge motion speed */
- int edge_motion_max_speed; /* fastest setting for edge motion speed */
- Bool edge_motion_use_always; /* If false, egde motion is used only when dragging */
-
- Bool updown_button_scrolling; /* Up/Down-Button scrolling or middle/double-click */
- int touchpad_off; /* Switches the touchpad off */
- Bool guestmouse_off; /* Switches the guest mouse off */
- Bool locked_drags; /* Enable locked drags */
- int tap_action[MaxTap]; /* Button to report on tap events */
- Bool circular_scrolling; /* Enable circular scrolling */
- double scroll_dist_circ; /* Scrolling angle radians */
- int circular_trigger; /* Trigger area for circular scrolling */
- Bool circular_pad; /* Edge has an oval or circular shape */
- Bool palm_detect; /* Enable palm detection */
- int palm_min_width; /* Palm detection width */
- int palm_min_z; /* Palm detection pressure */
- double coasting_speed; /* Coasting threshold scrolling speed */
-} SynapticsSHM;
-
-#endif
--
1.6.0.6
gsynaptics-0.9.14-fix-scrolling-checkboxes.patch:
--- NEW FILE gsynaptics-0.9.14-fix-scrolling-checkboxes.patch ---
>From 8071f04d537f39a0feeda90b24e72f29f2f17246 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Fri, 13 Mar 2009 09:47:02 +1000
Subject: [PATCH] Fix up edge scrolling checkboxes.
Edge scrolling toggling should set the Vert/HorizEdgeScroll property, not the
delta. And it should be stored in a separate gconf key, so the actual speed is
untouched when disabling it.
---
src/gsynaptics-conf.h | 4 +++-
src/gsynaptics.c | 40 ++++++++++++++++++++++++++++++++++++++++
src/gsynaptics.h | 4 ++++
src/main.c | 25 ++++++-------------------
4 files changed, 53 insertions(+), 20 deletions(-)
diff --git a/src/gsynaptics-conf.h b/src/gsynaptics-conf.h
index 76999db..d2b8c17 100644
--- a/src/gsynaptics-conf.h
+++ b/src/gsynaptics-conf.h
@@ -28,6 +28,8 @@ G_BEGIN_DECLS
#define MAXTAPTIME_KEY "/desktop/gnome/peripherals/touchpad/max_tap_time"
#define HORIZSCROLLDELTA_KEY "/desktop/gnome/peripherals/touchpad/horiz_scroll_delta"
#define VERTSCROLLDELTA_KEY "/desktop/gnome/peripherals/touchpad/vert_scroll_delta"
+#define VERTSCROLLENABLED_KEY "/desktop/gnome/peripherals/touchpad/vert_scroll_enabled"
+#define HORIZSCROLLENABLED_KEY "/desktop/gnome/peripherals/touchpad/horiz_scroll_enabled"
#define EDGEMOTIONUSEALWAYS_KEY "/desktop/gnome/peripherals/touchpad/edge_motion_use_always"
#define COASTENABLE_KEY "/desktop/gnome/peripherals/touchpad/coast_enable"
#define CIRCULARSCROLLING_KEY "/desktop/gnome/peripherals/touchpad/circular_scrolling"
diff --git a/src/gsynaptics.c b/src/gsynaptics.c
index 37e6cb2..6f9b6a3 100644
--- a/src/gsynaptics.c
+++ b/src/gsynaptics.c
@@ -664,6 +664,46 @@ g_synaptics_set_sensitivity (GSynaptics *synaptics, gint value)
}
void
+g_synaptics_set_horizontal_scroll_enabled(GSynaptics *synaptics, gint enabled)
+{
+ GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
+ if (!g_synaptics_is_valid(synaptics))
+ return;
+ if (priv->synclient)
+ {
+ gchar *command;
+ command = g_strdup_printf ("synclient HorizEdgeScroll=%d",
+ enabled);
+ g_spawn_command_line_async (command, NULL);
+ g_free (command);
+ }
+ else
+ {
+ SYNSHM(synaptics)->scroll_edge_horiz = enabled;
+ }
+}
+
+void
+g_synaptics_set_vertical_scroll_enabled(GSynaptics *synaptics, gint enabled)
+{
+ GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
+ if (!g_synaptics_is_valid(synaptics))
+ return;
+ if (priv->synclient)
+ {
+ gchar *command;
+ command = g_strdup_printf ("synclient VertEdgeScroll=%d",
+ enabled);
+ g_spawn_command_line_async (command, NULL);
+ g_free (command);
+ }
+ else
+ {
+ SYNSHM(synaptics)->scroll_edge_vert = enabled;
+ }
+}
+
+void
g_synaptics_set_horizontal_scroll_delta (GSynaptics *synaptics, gint delta)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
diff --git a/src/gsynaptics.h b/src/gsynaptics.h
index 11b8763..8fced65 100644
--- a/src/gsynaptics.h
+++ b/src/gsynaptics.h
@@ -106,6 +106,10 @@ void g_synaptics_set_tap_action (GSynaptics *synaptics,
int action);
void g_synaptics_set_sensitivity (GSynaptics *synaptics,
gint value);
+void g_synaptics_set_horizontal_scroll_enabled(GSynaptics *synaptics,
+ gint enabled);
+void g_synaptics_set_vertical_scroll_enabled (GSynaptics *synaptics,
+ gint enabled);
void g_synaptics_set_horizontal_scroll_delta (GSynaptics *synaptics,
gint delta);
void g_synaptics_set_vertical_scroll_delta (GSynaptics *synaptics,
diff --git a/src/main.c b/src/main.c
index d0cc0dd..c7089f3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -136,22 +136,15 @@ cb_vertical_scroll_toggled (GtkToggleButton *button, GladeXML *dialog)
GtkWidget *widget;
GSynaptics *synaptics;
gboolean check;
- gint value;
widget = WID ("vertical_scroll_box");
check = gtk_toggle_button_get_active (button);
gtk_widget_set_sensitive (widget, check);
- widget = WID ("vertical_scroll_scale");
- value = (gint) gtk_range_get_value (GTK_RANGE(widget));
-
synaptics = g_object_get_qdata (G_OBJECT(dialog), synaptics_quark);
- if (!check)
- value = 0;
-
- g_synaptics_set_vertical_scroll_delta (synaptics, value * -1);
- gconf_client_set_int (gconf, VERTSCROLLDELTA_KEY, value * -1, NULL);
+ g_synaptics_set_vertical_scroll_enabled(synaptics, check);
+ gconf_client_set_int (gconf, VERTSCROLLENABLED_KEY, check, NULL);
}
static void
@@ -160,22 +153,16 @@ cb_horizontal_scroll_toggled (GtkToggleButton *button, GladeXML *dialog)
GtkWidget *widget;
GSynaptics *synaptics;
gboolean check;
- gint value;
widget = WID ("horizontal_scroll_box");
check = gtk_toggle_button_get_active (button);
gtk_widget_set_sensitive (widget, check);
-
- widget = WID ("horizontal_scroll_scale");
- value = (gint) gtk_range_get_value (GTK_RANGE(widget));
-
- synaptics = g_object_get_qdata (G_OBJECT(dialog), synaptics_quark);
- if (!check)
- value = 0;
- g_synaptics_set_horizontal_scroll_delta (synaptics, value * -1);
- gconf_client_set_int (gconf, HORIZSCROLLDELTA_KEY, value * -1, NULL);
+ synaptics = g_object_get_qdata (G_OBJECT(dialog), synaptics_quark);
+
+ g_synaptics_set_horizontal_scroll_enabled(synaptics, check);
+ gconf_client_set_int (gconf, HORIZSCROLLENABLED_KEY, check, NULL);
}
static void
--
1.6.0.6
gsynaptics-0.9.14-scrolling-checkboxes.patch:
--- NEW FILE gsynaptics-0.9.14-scrolling-checkboxes.patch ---
>From 216e4904913e709532e88e2030831d3b8d8b0c2f Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Fri, 13 Mar 2009 09:27:39 +1000
Subject: [PATCH] Set the scrolling checkboxes based on the Vert/HorizEdgeScroll property.
---
src/gsynaptics.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/gsynaptics.c b/src/gsynaptics.c
index 64755aa..3598c18 100644
--- a/src/gsynaptics.c
+++ b/src/gsynaptics.c
@@ -299,7 +299,7 @@ g_synaptics_is_horizontal_scroll_enabled (GSynaptics *synaptics)
if (priv->synclient)
{
- return g_synaptics_get_value_from_synclient ("HorizScrollDelta") > 0;
+ return g_synaptics_get_value_from_synclient ("HorizEdgeScroll") > 0;
}
else
{
@@ -334,7 +334,7 @@ g_synaptics_is_vertical_scroll_enabled (GSynaptics *synaptics)
if (priv->synclient)
{
- return g_synaptics_get_value_from_synclient ("VertScrollDelta") > 0;
+ return g_synaptics_get_value_from_synclient ("VertEdgeScroll") > 0;
}
else
{
--
1.6.0.6
gsynaptics-0.9.14-scrollmethods.patch:
--- NEW FILE gsynaptics-0.9.14-scrollmethods.patch ---
>From ed0ff114f059eab1c18e354b665fe858b5022301 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Wed, 1 Apr 2009 13:39:12 +1000
Subject: [PATCH] Add radiobuttons for twofinger/edge scrolling
---
data/gsynaptics.glade | 74 +++++++++++++++++++++++++++++++++++++++-------
src/gsynaptics-conf.h | 2 +-
src/gsynaptics.c | 78 ++++++++++++++++++++++++++++++++++++++++--------
src/gsynaptics.h | 12 +++++--
src/main.c | 54 ++++++++++++++++++++++++---------
5 files changed, 176 insertions(+), 44 deletions(-)
diff --git a/data/gsynaptics.glade b/data/gsynaptics.glade
index c3fa58d..b8a7a13 100644
--- a/data/gsynaptics.glade
+++ b/data/gsynaptics.glade
@@ -558,16 +558,69 @@
<property name="spacing">6</property>
<child>
- <widget class="GtkCheckButton" id="vertical_scroll_check">
+ <widget class="GtkHBox" id="hbox29">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Enable _vertical scrolling</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkRadioButton" id="disable_scroll_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">disabled</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="edge_scroll_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">edge scrolling</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">disable_scroll_radio</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="twofinger_scroll_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">two-finger scrolling</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">disable_scroll_radio</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
diff --git a/src/gsynaptics-conf.h b/src/gsynaptics-conf.h
index 8dc788b..df58daf 100644
--- a/src/gsynaptics-conf.h
+++ b/src/gsynaptics-conf.h
@@ -29,7 +29,7 @@ G_BEGIN_DECLS
#define MAXTAPTIME_KEY "/desktop/gnome/peripherals/touchpad/max_tap_time"
#define HORIZSCROLLDELTA_KEY "/desktop/gnome/peripherals/touchpad/horiz_scroll_delta"
#define VERTSCROLLDELTA_KEY "/desktop/gnome/peripherals/touchpad/vert_scroll_delta"
-#define VERTSCROLLENABLED_KEY "/desktop/gnome/peripherals/touchpad/vert_scroll_enabled"
+#define SCROLLMETHOD_KEY "/desktop/gnome/peripherals/touchpad/scroll_method"
#define HORIZSCROLLENABLED_KEY "/desktop/gnome/peripherals/touchpad/horiz_scroll_enabled"
#define EDGEMOTIONUSEALWAYS_KEY "/desktop/gnome/peripherals/touchpad/edge_motion_use_always"
#define COASTENABLE_KEY "/desktop/gnome/peripherals/touchpad/coast_enable"
diff --git a/src/gsynaptics.c b/src/gsynaptics.c
index 6f9b6a3..93706f5 100644
--- a/src/gsynaptics.c
+++ b/src/gsynaptics.c
@@ -299,11 +299,13 @@ g_synaptics_is_horizontal_scroll_enabled (GSynaptics *synaptics)
if (priv->synclient)
{
- return g_synaptics_get_value_from_synclient ("HorizEdgeScroll") > 0;
+ return (g_synaptics_get_value_from_synclient("HorizEdgeScroll") ||
+ g_synaptics_get_value_from_synclient("HorizTwoFingerScroll"));
}
else
{
- return SYNSHM(synaptics)->scroll_dist_horiz > 0;
+ return SYNSHM(synaptics)->scroll_edge_horiz ||
+ SYNSHM(synaptics)->scroll_twofinger_horiz;
}
}
@@ -324,22 +326,33 @@ g_synaptics_horizontal_scroll_delta (GSynaptics *synaptics)
}
}
-gboolean
-g_synaptics_is_vertical_scroll_enabled (GSynaptics *synaptics)
+ScrollMethod
+g_synaptics_get_scroll_method (GSynaptics *synaptics)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
+ gboolean edge = 0, twofinger = 0;
+
if (!g_synaptics_is_valid(synaptics))
- return FALSE;
+ return ScrollingDisabled;
if (priv->synclient)
{
-
- return g_synaptics_get_value_from_synclient ("VertEdgeScroll") > 0;
+ edge = g_synaptics_get_value_from_synclient ("VertEdgeScroll");
+ twofinger = g_synaptics_get_value_from_synclient ("VertTwoFingerScroll");
}
else
{
- return SYNSHM(synaptics)->scroll_dist_vert > 0;
+ edge = SYNSHM(synaptics)->scroll_edge_vert;
+ twofinger = SYNSHM(synaptics)->scroll_twofinger_vert;
}
+
+ if (edge)
+ return EdgeScrolling;
+
+ if (twofinger)
+ return TwoFingerScrolling;
+
+ return ScrollingDisabled;
}
gint
@@ -667,40 +680,79 @@ void
g_synaptics_set_horizontal_scroll_enabled(GSynaptics *synaptics, gint enabled)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
+ gboolean edge = 0, twofinger = 0;
+
if (!g_synaptics_is_valid(synaptics))
return;
+
+ switch (g_synaptics_get_scroll_method (synaptics))
+ {
+ case EdgeScrolling: edge = 1; break;
+ case TwoFingerScrolling: twofinger = 1; break;
+ default:
+ break;
+ }
+
if (priv->synclient)
{
gchar *command;
command = g_strdup_printf ("synclient HorizEdgeScroll=%d",
- enabled);
+ edge && enabled);
+ g_spawn_command_line_async (command, NULL);
+ g_free (command);
+
+ command = g_strdup_printf ("synclient HorizTwoFingerScroll=%d",
+ twofinger && enabled);
g_spawn_command_line_async (command, NULL);
g_free (command);
}
else
{
- SYNSHM(synaptics)->scroll_edge_horiz = enabled;
+ SYNSHM(synaptics)->scroll_edge_horiz = edge && enabled;
+ SYNSHM(synaptics)->scroll_twofinger_horiz = twofinger &&
+ enabled;
}
}
void
-g_synaptics_set_vertical_scroll_enabled(GSynaptics *synaptics, gint enabled)
+g_synaptics_set_scroll_method (GSynaptics *synaptics, ScrollMethod method)
{
GSynapticsPrivate *priv = G_SYNAPTICS_GET_PRIVATE (synaptics);
+ gboolean edge = 0, twofinger = 0;
+
if (!g_synaptics_is_valid(synaptics))
return;
+
+ switch(method)
+ {
+ case EdgeScrolling: edge = 1; break;
+ case TwoFingerScrolling: twofinger = 1; break;
+ default:
+ break;
+ }
+
if (priv->synclient)
{
gchar *command;
+
command = g_strdup_printf ("synclient VertEdgeScroll=%d",
- enabled);
+ edge);
+ g_spawn_command_line_async (command, NULL);
+ g_free (command);
+
+ command = g_strdup_printf ("synclient VertTwoFingerScroll=%d",
+ twofinger);
g_spawn_command_line_async (command, NULL);
g_free (command);
}
else
{
- SYNSHM(synaptics)->scroll_edge_vert = enabled;
+ SYNSHM(synaptics)->scroll_edge_vert = edge;
+ SYNSHM(synaptics)->scroll_twofinger_vert = twofinger;
}
+
+ g_synaptics_set_horizontal_scroll_enabled(synaptics,
+ g_synaptics_is_horizontal_scroll_enabled(synaptics));
}
void
diff --git a/src/gsynaptics.h b/src/gsynaptics.h
index 8fced65..30bb3af 100644
--- a/src/gsynaptics.h
+++ b/src/gsynaptics.h
@@ -58,6 +58,12 @@ typedef enum
TopLeftCorner
} ScrollTrigger;
+typedef enum {
+ ScrollingDisabled = 0,
+ EdgeScrolling = 1,
+ TwoFingerScrolling = 2
+} ScrollMethod;
+
typedef enum
{
None=0,
@@ -80,7 +86,7 @@ gint g_synaptics_tap_action (GSynaptics *synaptics,
gint g_synaptics_sensitivity (GSynaptics *synaptics);
gboolean g_synaptics_is_horizontal_scroll_enabled(GSynaptics *synaptics);
gint g_synaptics_horizontal_scroll_delta (GSynaptics *synaptics);
-gboolean g_synaptics_is_vertical_scroll_enabled (GSynaptics *synaptics);
+ScrollMethod g_synaptics_get_scroll_method (GSynaptics *synaptics);
gint g_synaptics_vertical_scroll_delta (GSynaptics *synaptics);
gboolean g_synaptics_is_edge_motion_enabled (GSynaptics *synaptics);
gboolean g_synaptics_is_coasting_enabled (GSynaptics *synaptics);
@@ -108,8 +114,8 @@ void g_synaptics_set_sensitivity (GSynaptics *synaptics,
gint value);
void g_synaptics_set_horizontal_scroll_enabled(GSynaptics *synaptics,
gint enabled);
-void g_synaptics_set_vertical_scroll_enabled (GSynaptics *synaptics,
- gint enabled);
+void g_synaptics_set_scroll_method (GSynaptics *synaptics,
+ ScrollMethod method);
void g_synaptics_set_horizontal_scroll_delta (GSynaptics *synaptics,
gint delta);
void g_synaptics_set_vertical_scroll_delta (GSynaptics *synaptics,
diff --git a/src/main.c b/src/main.c
index c7089f3..fbbb19b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -131,20 +131,30 @@ cb_touchpad_toggled (GtkToggleButton *button, GladeXML *dialog)
}
static void
-cb_vertical_scroll_toggled (GtkToggleButton *button, GladeXML *dialog)
+rd_scroll_method_toggled (GtkToggleButton *button, GladeXML *dialog)
{
GtkWidget *widget;
GSynaptics *synaptics;
- gboolean check;
-
- widget = WID ("vertical_scroll_box");
- check = gtk_toggle_button_get_active (button);
- gtk_widget_set_sensitive (widget, check);
+ ScrollMethod method = ScrollingDisabled;
+
+ widget = WID ("twofinger_scroll_radio");
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)))
+ method = TwoFingerScrolling;
+ else {
+ widget = WID("edge_scroll_radio");
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
+ method = EdgeScrolling;
+ }
synaptics = g_object_get_qdata (G_OBJECT(dialog), synaptics_quark);
- g_synaptics_set_vertical_scroll_enabled(synaptics, check);
- gconf_client_set_int (gconf, VERTSCROLLENABLED_KEY, check, NULL);
+ g_synaptics_set_scroll_method(synaptics, method);
+ gconf_client_set_int (gconf, SCROLLMETHOD_KEY, method, NULL);
+
+ widget = WID("horizontal_scroll_check");
+ gtk_widget_set_sensitive(widget, (method != ScrollingDisabled));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
+ g_synaptics_is_horizontal_scroll_enabled(synaptics));
}
static void
@@ -517,7 +527,7 @@ setup_dialog (GladeXML *dialog)
{
GdkPixbuf *icon_pixbuf = NULL;
GtkWidget *widget, *button;
- GtkWidget *check, *scale;
+ GtkWidget *check, *scale, *radio;
GSynaptics *synaptics;
gchar *path;
@@ -571,12 +581,25 @@ setup_dialog (GladeXML *dialog)
g_signal_connect (G_OBJECT (scale), "change-value",
G_CALLBACK (cb_vertical_scroll_change), dialog);
- check = WID ("vertical_scroll_check");
- value = g_synaptics_is_vertical_scroll_enabled (synaptics);
- g_signal_connect (G_OBJECT (check), "toggled",
- G_CALLBACK (cb_vertical_scroll_toggled), dialog);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check),
- value);
+ value = g_synaptics_get_scroll_method(synaptics);
+
+ radio = WID ("disable_scroll_radio");
+ g_signal_connect (G_OBJECT (radio), "toggled",
+ G_CALLBACK (rd_scroll_method_toggled), dialog);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio),
+ value == ScrollingDisabled);
+
+ radio = WID ("twofinger_scroll_radio");
+ g_signal_connect (G_OBJECT (radio), "toggled",
+ G_CALLBACK (rd_scroll_method_toggled), dialog);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio),
+ value == TwoFingerScrolling);
+
+ radio = WID ("edge_scroll_radio");
+ g_signal_connect (G_OBJECT (radio), "toggled",
+ G_CALLBACK (rd_scroll_method_toggled), dialog);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio),
+ value == EdgeScrolling);
scale = WID ("horizontal_scroll_scale");
num = g_synaptics_horizontal_scroll_delta (synaptics);
@@ -585,6 +608,7 @@ setup_dialog (GladeXML *dialog)
G_CALLBACK (cb_horizontal_scroll_change), dialog);
check = WID ("horizontal_scroll_check");
+ gtk_widget_set_sensitive(check, (value != ScrollingDisabled));
value = g_synaptics_is_horizontal_scroll_enabled (synaptics);
g_signal_connect (G_OBJECT (check), "toggled",
G_CALLBACK (cb_horizontal_scroll_toggled), dialog);
--
1.6.0.6
Index: gsynaptics.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gsynaptics/devel/gsynaptics.spec,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- gsynaptics.spec 28 Feb 2009 23:51:50 -0000 1.20
+++ gsynaptics.spec 2 Apr 2009 00:34:30 -0000 1.21
@@ -1,6 +1,6 @@
Name: gsynaptics
Version: 0.9.14
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Settings tool for Synaptics touchpad driver
Group: Applications/System
@@ -12,9 +12,14 @@
Patch0: gsynaptics-0.9.14-dot-fixes.patch
Patch1: gsynaptics-0.9.14-do-not-set-zero.patch
Patch2: gsynaptics-0.9.14-pixmap.patch
+# 3 4 5 are merged upstream
Patch3: gsynaptics-0.9.14-fix-tap-statecheck.patch
Patch4: gsynaptics-0.9.14-enable-tapping.patch
Patch5: gsynaptics-0.9.14-dont-reset-taptime.patch
+Patch6: gsynaptics-0.9.14-scrolling-checkboxes.patch
+Patch7: gsynaptics-0.9.14-driver-header.patch
+Patch8: gsynaptics-0.9.14-fix-scrolling-checkboxes.patch
+Patch9: gsynaptics-0.9.14-scrollmethods.patch
Source1: %{name}-touchpad.png
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -24,8 +29,10 @@
BuildRequires: libglade2-devel
BuildRequires: desktop-file-utils gettext
BuildRequires: gnome-doc-utils
+BuildRequires: xorg-x11-drv-synaptics-devel
+BuildRequires: libtool pkgconfig intltool
-Requires: synaptics
+Requires: xorg-x11-drv-synaptics
# Use ExclusiveArch just as synaptics does; see
# http://cvs.fedora.redhat.com/viewcvs/rpms/synaptics/devel/synaptics.spec?root=extras&view=markup
@@ -49,8 +56,13 @@
%patch3 -p1 -b .tap-checkbox
%patch4 -p1 -b .tapping
%patch5 -p1 -b .taptime
+%patch6 -p1 -b .scrl-chkbx
+%patch7 -p1 -b .header
+%patch8 -p1 -b .scrl-chkbx-fix
+%patch9 -p1 -b .scrollmethods
%build
+autoreconf -v --install --force || exit 1
%configure
make %{?_smp_mflags}
@@ -91,6 +103,18 @@
%changelog
+* Mon Apr 2 2009 Peter Hutterer <peter.hutterer at redhat.com> - 0.9.14-5
+- gsynaptics-0.9.14-scrolling-checkboxes.patch: set checkboxes based on the
+ scrolling enabled/disabled property, not on the delta.
+- gsynaptics-0.9.14-driver-header.patch: use the driver's header file instead
+ of a custom synshm.h.
+- Require xorg-x11-drv-synaptics now that we use the driver header, and force
+ an autoreconf to include it properly.
+- gsynaptics-0.9.14-fix-scrolling-checkboxes.patch: fix scrolling
+ enabled/disabled checkboxes
+- gsynaptics-0.9.14-scrollmethod.patch: provide radiobuttons instead
+ of a checkbox for scrolling methods.
+
* Sun Mar 01 2009 Peter Hutterer <peter.hutterer at redhat.com> - 0.9.14-4
- gsynaptics-0.9.14-fix-tap-statecheck.patch: fix check for tapping enabled or
disabled, should take TapButton1 into account.
- Previous message: rpms/ibus-table-wubi/devel ibus-table-wubi.spec,1.1,1.2
- Next message: rpms/qemu/devel 01-tls-handshake-fix.patch, NONE, 1.1 02-vnc-monitor-info.patch, NONE, 1.1 03-display-keymaps.patch, NONE, 1.1 04-vnc-struct.patch, NONE, 1.1 05-vnc-tls-vencrypt.patch, NONE, 1.1 06-vnc-sasl.patch, NONE, 1.1 07-vnc-monitor-authinfo.patch, NONE, 1.1 08-vnc-acl-mgmt.patch, NONE, 1.1 .cvsignore, 1.13, 1.14 kvm-upstream-ppc.patch, 1.2, 1.3 qemu.spec, 1.70, 1.71 sources, 1.13, 1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list