[Xfce4-commits] r29181 - xfce4-mixer/branches/xfce_4_4/panel-plugin
Danny Milosavljevic
dannym at xfce.org
Sun Jan 11 22:11:34 CET 2009
Author: dannym
Date: 2009-01-11 21:11:34 +0000 (Sun, 11 Jan 2009)
New Revision: 29181
Modified:
xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-slider-tiny.gob
xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny-private.h
xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.c
xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.h
Log:
fix bug# 3410: drag slider.
Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-slider-tiny.gob
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-slider-tiny.gob 2009-01-11 20:52:13 UTC (rev 29180)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/mixer-slider-tiny.gob 2009-01-11 21:11:34 UTC (rev 29181)
@@ -15,6 +15,7 @@
protected GtkProgressBar *progress = NULL;
/*protected GtkBox *hbox = NULL;*/
public GtkEventBox *eb = NULL;
+ protected gboolean pressed = FALSE;
protected void set_vval (self, gint vval)
{
@@ -63,6 +64,7 @@
g_signal_connect_swapped (self->eb, "scroll-event", G_CALLBACK(self_scroll_cb), self);
g_signal_connect_swapped (self->eb, "button-press-event", G_CALLBACK(self_button_cb), self);
g_signal_connect_swapped (self->eb, "button-release-event", G_CALLBACK(self_button_cb), self);
+ g_signal_connect_swapped (self->eb, "motion-notify-event", G_CALLBACK(self_motion_cb), self);
}
public gboolean scroll_cb (self, GdkEventScroll *event, GtkWidget *w)
@@ -88,37 +90,68 @@
protected gboolean button_cb (self, GdkEventButton *b, GtkWidget *widget)
{
- int y; /* pos */
- int sy; /* size */
+ int y;
- y = (int)b->y;
+ y = (int) b->y; /* pos */
if (b->button == 3 || b->button == 2) {
if (b->type == GDK_BUTTON_PRESS) {
+ /* mute */
y = 0;
} else {
return TRUE;
}
} else if (b->button == 1) {
- sy = widget->allocation.height;
- if (sy != 0) {
- /* this is a hack 'cause I dont know how to get the height
- * of the border of the progressbar yet ;)
- */
- y = (sy + 2 - y) * 100 / sy;
- if (y <= 0) y = 0;
- } else y = 0;
+ if (b->type == GDK_BUTTON_PRESS) {
+ y = self_figure_out_volume(self, widget, y);
+ self->pressed = TRUE;
+ } else if (b->type == GDK_BUTTON_RELEASE){
+ y = self_figure_out_volume(self, widget, y);
+ self->pressed = FALSE;
+ } else {
+ return TRUE;
+ }
} else {
return FALSE;
}
-
- if (y < 0) { y = 0; }
- if (y > 100) { y = 100; }
self_set_vval (self, y);
return TRUE;
}
+ /* returns the volume in range 0..100, given a coordinate in the widget. */
+ protected int figure_out_volume(self, GtkWidget *widget, int y) {
+ int sy; /* size in pixels. */
+ sy = widget->allocation.height; /* size */
+ if (sy > 4) {
+ sy -= 4;
+ /* this is a hack 'cause I dont know how to get the height of the border of the progressbar yet ;) */
+ y = (sy + 2 - y) * 100 / sy;
+ if (y <= 0)
+ y = 0;
+ } else {
+ y = 0;
+ }
+
+ if (y < 0) {
+ y = 0;
+ } else if (y > 100) {
+ y = 100;
+ }
+ return y;
+ }
+
+ protected gboolean motion_cb (self, GdkEventMotion *m, GtkWidget *widget)
+ {
+ if (self->pressed) {
+ int y = (int) m->y; /* pos */
+ y = self_figure_out_volume(self, widget, y);
+ self_set_vval (self, y);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
public XfceMixerControl *new(void)
{
return XFCE_MIXER_CONTROL(GET_NEW);
Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny-private.h
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny-private.h 2009-01-11 20:52:13 UTC (rev 29180)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny-private.h 2009-01-11 21:11:34 UTC (rev 29181)
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.14) (do not edit directly) */
+/* Generated by GOB (v2.0.15) (do not edit directly) */
#ifndef __XFCE_MIXER_SLIDER_TINY_PRIVATE_H__
#define __XFCE_MIXER_SLIDER_TINY_PRIVATE_H__
@@ -17,6 +17,8 @@
#line 18 "xfce-mixer-slider-tiny-private.h"
void xfce_mixer_slider_tiny_set_vval (XfceMixerSliderTiny * self, gint vval);
gboolean xfce_mixer_slider_tiny_button_cb (XfceMixerSliderTiny * self, GdkEventButton * b, GtkWidget * widget);
+int xfce_mixer_slider_tiny_figure_out_volume (XfceMixerSliderTiny * self, GtkWidget * widget, int y);
+gboolean xfce_mixer_slider_tiny_motion_cb (XfceMixerSliderTiny * self, GdkEventMotion * m, GtkWidget * widget);
#ifdef __cplusplus
}
Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.c
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.c 2009-01-11 20:52:13 UTC (rev 29180)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.c 2009-01-11 21:11:34 UTC (rev 29181)
@@ -1,10 +1,10 @@
-/* Generated by GOB (v2.0.14) (do not edit directly) */
+/* Generated by GOB (v2.0.15) (do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 14
+#define GOB_VERSION_PATCHLEVEL 15
#define selfp (self->_priv)
@@ -60,8 +60,8 @@
/* here are local prototypes */
static void xfce_mixer_slider_tiny_class_init (XfceMixerSliderTinyClass * c) G_GNUC_UNUSED;
static void xfce_mixer_slider_tiny_init (XfceMixerSliderTiny * self) G_GNUC_UNUSED;
-static void ___6_xfce_mixer_slider_tiny_value_changed (XfceMixerControl * pself) G_GNUC_UNUSED;
-static void ___7_xfce_mixer_slider_tiny_vcname_changed (XfceMixerControl * pself) G_GNUC_UNUSED;
+static void ___8_xfce_mixer_slider_tiny_value_changed (XfceMixerControl * pself) G_GNUC_UNUSED;
+static void ___9_xfce_mixer_slider_tiny_vcname_changed (XfceMixerControl * pself) G_GNUC_UNUSED;
/* pointer to the class of our parent */
static XfceMixerControlClass *parent_class = NULL;
@@ -70,6 +70,8 @@
#define self_set_vval xfce_mixer_slider_tiny_set_vval
#define self_scroll_cb xfce_mixer_slider_tiny_scroll_cb
#define self_button_cb xfce_mixer_slider_tiny_button_cb
+#define self_figure_out_volume xfce_mixer_slider_tiny_figure_out_volume
+#define self_motion_cb xfce_mixer_slider_tiny_motion_cb
#define self_new xfce_mixer_slider_tiny_new
GType
xfce_mixer_slider_tiny_get_type (void)
@@ -121,27 +123,30 @@
parent_class = g_type_class_ref (XFCE_TYPE_MIXER_CONTROL);
-#line 127 "mixer-slider-tiny.gob"
- xfce_mixer_control_class->value_changed = ___6_xfce_mixer_slider_tiny_value_changed;
-#line 141 "mixer-slider-tiny.gob"
- xfce_mixer_control_class->vcname_changed = ___7_xfce_mixer_slider_tiny_vcname_changed;
-#line 129 "xfce-mixer-slider-tiny.c"
+#line 160 "mixer-slider-tiny.gob"
+ xfce_mixer_control_class->value_changed = ___8_xfce_mixer_slider_tiny_value_changed;
+#line 174 "mixer-slider-tiny.gob"
+ xfce_mixer_control_class->vcname_changed = ___9_xfce_mixer_slider_tiny_vcname_changed;
+#line 131 "xfce-mixer-slider-tiny.c"
}
#undef __GOB_FUNCTION__
-#line 33 "mixer-slider-tiny.gob"
+#line 34 "mixer-slider-tiny.gob"
static void
xfce_mixer_slider_tiny_init (XfceMixerSliderTiny * self G_GNUC_UNUSED)
-#line 135 "xfce-mixer-slider-tiny.c"
+#line 137 "xfce-mixer-slider-tiny.c"
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::init"
#line 10 "mixer-slider-tiny.gob"
self->progress = NULL;
-#line 140 "xfce-mixer-slider-tiny.c"
+#line 142 "xfce-mixer-slider-tiny.c"
#line 10 "mixer-slider-tiny.gob"
self->eb = NULL;
-#line 143 "xfce-mixer-slider-tiny.c"
+#line 145 "xfce-mixer-slider-tiny.c"
+#line 10 "mixer-slider-tiny.gob"
+ self->pressed = FALSE;
+#line 148 "xfce-mixer-slider-tiny.c"
{
-#line 34 "mixer-slider-tiny.gob"
+#line 35 "mixer-slider-tiny.gob"
GtkRcStyle *rc;
GdkColor color;
@@ -174,26 +179,27 @@
g_signal_connect_swapped (self->eb, "scroll-event", G_CALLBACK(self_scroll_cb), self);
g_signal_connect_swapped (self->eb, "button-press-event", G_CALLBACK(self_button_cb), self);
g_signal_connect_swapped (self->eb, "button-release-event", G_CALLBACK(self_button_cb), self);
+ g_signal_connect_swapped (self->eb, "motion-notify-event", G_CALLBACK(self_motion_cb), self);
-#line 179 "xfce-mixer-slider-tiny.c"
+#line 185 "xfce-mixer-slider-tiny.c"
}
}
#undef __GOB_FUNCTION__
-#line 19 "mixer-slider-tiny.gob"
+#line 20 "mixer-slider-tiny.gob"
void
xfce_mixer_slider_tiny_set_vval (XfceMixerSliderTiny * self, gint vval)
-#line 188 "xfce-mixer-slider-tiny.c"
+#line 194 "xfce-mixer-slider-tiny.c"
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::set_vval"
-#line 19 "mixer-slider-tiny.gob"
+#line 20 "mixer-slider-tiny.gob"
g_return_if_fail (self != NULL);
-#line 19 "mixer-slider-tiny.gob"
+#line 20 "mixer-slider-tiny.gob"
g_return_if_fail (XFCE_IS_MIXER_SLIDER_TINY (self));
-#line 195 "xfce-mixer-slider-tiny.c"
+#line 201 "xfce-mixer-slider-tiny.c"
{
-#line 20 "mixer-slider-tiny.gob"
+#line 21 "mixer-slider-tiny.gob"
gdouble val;
gchar *tmp;
@@ -206,23 +212,23 @@
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(self->progress),
val / 100.0);
}}
-#line 210 "xfce-mixer-slider-tiny.c"
+#line 216 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
-#line 68 "mixer-slider-tiny.gob"
+#line 70 "mixer-slider-tiny.gob"
gboolean
xfce_mixer_slider_tiny_scroll_cb (XfceMixerSliderTiny * self, GdkEventScroll * event, GtkWidget * w)
-#line 217 "xfce-mixer-slider-tiny.c"
+#line 223 "xfce-mixer-slider-tiny.c"
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::scroll_cb"
-#line 68 "mixer-slider-tiny.gob"
+#line 70 "mixer-slider-tiny.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 68 "mixer-slider-tiny.gob"
+#line 70 "mixer-slider-tiny.gob"
g_return_val_if_fail (XFCE_IS_MIXER_SLIDER_TINY (self), (gboolean )0);
-#line 224 "xfce-mixer-slider-tiny.c"
+#line 230 "xfce-mixer-slider-tiny.c"
{
-#line 69 "mixer-slider-tiny.gob"
+#line 71 "mixer-slider-tiny.gob"
int vol; /* new volume */
vol = xfce_mixer_control_calc_num_value (XFCE_MIXER_CONTROL (self));
@@ -242,85 +248,145 @@
return TRUE;
}}
-#line 246 "xfce-mixer-slider-tiny.c"
+#line 252 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
-#line 89 "mixer-slider-tiny.gob"
+#line 91 "mixer-slider-tiny.gob"
gboolean
xfce_mixer_slider_tiny_button_cb (XfceMixerSliderTiny * self, GdkEventButton * b, GtkWidget * widget)
-#line 252 "xfce-mixer-slider-tiny.c"
+#line 258 "xfce-mixer-slider-tiny.c"
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::button_cb"
-#line 89 "mixer-slider-tiny.gob"
+#line 91 "mixer-slider-tiny.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 89 "mixer-slider-tiny.gob"
+#line 91 "mixer-slider-tiny.gob"
g_return_val_if_fail (XFCE_IS_MIXER_SLIDER_TINY (self), (gboolean )0);
-#line 259 "xfce-mixer-slider-tiny.c"
+#line 265 "xfce-mixer-slider-tiny.c"
{
-#line 90 "mixer-slider-tiny.gob"
+#line 92 "mixer-slider-tiny.gob"
- int y; /* pos */
- int sy; /* size */
+ int y;
- y = (int)b->y;
+ y = (int) b->y; /* pos */
if (b->button == 3 || b->button == 2) {
if (b->type == GDK_BUTTON_PRESS) {
+ /* mute */
y = 0;
} else {
return TRUE;
}
} else if (b->button == 1) {
- sy = widget->allocation.height;
- if (sy != 0) {
- /* this is a hack 'cause I dont know how to get the height
- * of the border of the progressbar yet ;)
- */
- y = (sy + 2 - y) * 100 / sy;
- if (y <= 0) y = 0;
- } else y = 0;
+ if (b->type == GDK_BUTTON_PRESS) {
+ y = self_figure_out_volume(self, widget, y);
+ self->pressed = TRUE;
+ } else if (b->type == GDK_BUTTON_RELEASE){
+ y = self_figure_out_volume(self, widget, y);
+ self->pressed = FALSE;
+ } else {
+ return TRUE;
+ }
} else {
return FALSE;
}
-
- if (y < 0) { y = 0; }
- if (y > 100) { y = 100; }
self_set_vval (self, y);
return TRUE;
}}
-#line 292 "xfce-mixer-slider-tiny.c"
+#line 296 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
#line 122 "mixer-slider-tiny.gob"
+int
+xfce_mixer_slider_tiny_figure_out_volume (XfceMixerSliderTiny * self, GtkWidget * widget, int y)
+#line 302 "xfce-mixer-slider-tiny.c"
+{
+#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::figure_out_volume"
+#line 122 "mixer-slider-tiny.gob"
+ g_return_val_if_fail (self != NULL, (int )0);
+#line 122 "mixer-slider-tiny.gob"
+ g_return_val_if_fail (XFCE_IS_MIXER_SLIDER_TINY (self), (int )0);
+#line 309 "xfce-mixer-slider-tiny.c"
+{
+#line 122 "mixer-slider-tiny.gob"
+
+ int sy; /* size in pixels. */
+
+ sy = widget->allocation.height; /* size */
+ if (sy > 4) {
+ sy -= 4;
+ /* this is a hack 'cause I dont know how to get the height of the border of the progressbar yet ;) */
+ y = (sy + 2 - y) * 100 / sy;
+ if (y <= 0)
+ y = 0;
+ } else {
+ y = 0;
+ }
+
+ if (y < 0) {
+ y = 0;
+ } else if (y > 100) {
+ y = 100;
+ }
+ return y;
+ }}
+#line 333 "xfce-mixer-slider-tiny.c"
+#undef __GOB_FUNCTION__
+
+#line 144 "mixer-slider-tiny.gob"
+gboolean
+xfce_mixer_slider_tiny_motion_cb (XfceMixerSliderTiny * self, GdkEventMotion * m, GtkWidget * widget)
+#line 339 "xfce-mixer-slider-tiny.c"
+{
+#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::motion_cb"
+#line 144 "mixer-slider-tiny.gob"
+ g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 144 "mixer-slider-tiny.gob"
+ g_return_val_if_fail (XFCE_IS_MIXER_SLIDER_TINY (self), (gboolean )0);
+#line 346 "xfce-mixer-slider-tiny.c"
+{
+#line 145 "mixer-slider-tiny.gob"
+
+ if (self->pressed) {
+ int y = (int) m->y; /* pos */
+ y = self_figure_out_volume(self, widget, y);
+ self_set_vval (self, y);
+ return TRUE;
+ }
+ return FALSE;
+ }}
+#line 358 "xfce-mixer-slider-tiny.c"
+#undef __GOB_FUNCTION__
+
+#line 155 "mixer-slider-tiny.gob"
XfceMixerControl *
xfce_mixer_slider_tiny_new (void)
-#line 298 "xfce-mixer-slider-tiny.c"
+#line 364 "xfce-mixer-slider-tiny.c"
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::new"
{
-#line 123 "mixer-slider-tiny.gob"
+#line 156 "mixer-slider-tiny.gob"
return XFCE_MIXER_CONTROL(GET_NEW);
}}
-#line 306 "xfce-mixer-slider-tiny.c"
+#line 372 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
-#line 127 "mixer-slider-tiny.gob"
+#line 160 "mixer-slider-tiny.gob"
static void
-___6_xfce_mixer_slider_tiny_value_changed (XfceMixerControl * pself G_GNUC_UNUSED)
-#line 312 "xfce-mixer-slider-tiny.c"
+___8_xfce_mixer_slider_tiny_value_changed (XfceMixerControl * pself G_GNUC_UNUSED)
+#line 378 "xfce-mixer-slider-tiny.c"
#define PARENT_HANDLER(___pself) \
{ if(XFCE_MIXER_CONTROL_CLASS(parent_class)->value_changed) \
(* XFCE_MIXER_CONTROL_CLASS(parent_class)->value_changed)(___pself); }
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::value_changed"
-#line 127 "mixer-slider-tiny.gob"
+#line 160 "mixer-slider-tiny.gob"
g_return_if_fail (pself != NULL);
-#line 127 "mixer-slider-tiny.gob"
+#line 160 "mixer-slider-tiny.gob"
g_return_if_fail (XFCE_IS_MIXER_CONTROL (pself));
-#line 322 "xfce-mixer-slider-tiny.c"
+#line 388 "xfce-mixer-slider-tiny.c"
{
-#line 129 "mixer-slider-tiny.gob"
+#line 162 "mixer-slider-tiny.gob"
gint v;
@@ -332,26 +398,26 @@
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (self->progress), ((gdouble) v) / 100.0);
}}
-#line 336 "xfce-mixer-slider-tiny.c"
+#line 402 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 141 "mixer-slider-tiny.gob"
+#line 174 "mixer-slider-tiny.gob"
static void
-___7_xfce_mixer_slider_tiny_vcname_changed (XfceMixerControl * pself G_GNUC_UNUSED)
-#line 343 "xfce-mixer-slider-tiny.c"
+___9_xfce_mixer_slider_tiny_vcname_changed (XfceMixerControl * pself G_GNUC_UNUSED)
+#line 409 "xfce-mixer-slider-tiny.c"
#define PARENT_HANDLER(___pself) \
{ if(XFCE_MIXER_CONTROL_CLASS(parent_class)->vcname_changed) \
(* XFCE_MIXER_CONTROL_CLASS(parent_class)->vcname_changed)(___pself); }
{
#define __GOB_FUNCTION__ "Xfce:Mixer:Slider:Tiny::vcname_changed"
-#line 141 "mixer-slider-tiny.gob"
+#line 174 "mixer-slider-tiny.gob"
g_return_if_fail (pself != NULL);
-#line 141 "mixer-slider-tiny.gob"
+#line 174 "mixer-slider-tiny.gob"
g_return_if_fail (XFCE_IS_MIXER_CONTROL (pself));
-#line 353 "xfce-mixer-slider-tiny.c"
+#line 419 "xfce-mixer-slider-tiny.c"
{
-#line 143 "mixer-slider-tiny.gob"
+#line 176 "mixer-slider-tiny.gob"
Self *self;
char *sanename;
@@ -365,6 +431,6 @@
}
g_free (sanename);
}}
-#line 369 "xfce-mixer-slider-tiny.c"
+#line 435 "xfce-mixer-slider-tiny.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
Modified: xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.h
===================================================================
--- xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.h 2009-01-11 20:52:13 UTC (rev 29180)
+++ xfce4-mixer/branches/xfce_4_4/panel-plugin/xfce-mixer-slider-tiny.h 2009-01-11 21:11:34 UTC (rev 29181)
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.14) (do not edit directly) */
+/* Generated by GOB (v2.0.15) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
@@ -38,6 +38,7 @@
GtkEventBox * eb;
/*< private >*/
GtkProgressBar * progress; /* protected */
+ gboolean pressed; /* protected */
};
/*
More information about the Xfce4-commits
mailing list