disconnect adjustment signals on gtk_knob_destroy
This commit is contained in:
23
gtkknob.c
23
gtkknob.c
@@ -190,10 +190,7 @@ gtk_knob_destroy(GtkObject *object) {
|
|||||||
|
|
||||||
knob = GTK_KNOB (object);
|
knob = GTK_KNOB (object);
|
||||||
|
|
||||||
if (knob->adjustment) {
|
gtk_knob_set_adjustment (knob, NULL);
|
||||||
g_object_unref (knob->adjustment);
|
|
||||||
knob->adjustment = NULL;
|
|
||||||
}
|
|
||||||
/* FIXME: needs ref counting for automatic GtkKnobAnim cleanup
|
/* FIXME: needs ref counting for automatic GtkKnobAnim cleanup
|
||||||
if (knob->anim) {
|
if (knob->anim) {
|
||||||
gtk_knob_anim_unref (knob->anim);
|
gtk_knob_anim_unref (knob->anim);
|
||||||
@@ -271,14 +268,14 @@ gtk_knob_set_adjustment(GtkKnob *knob, GtkAdjustment *adjustment) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
knob->adjustment = adjustment;
|
knob->adjustment = adjustment;
|
||||||
g_object_ref (GTK_OBJECT (knob->adjustment));
|
if (adjustment) {
|
||||||
g_object_ref_sink (GTK_OBJECT (knob->adjustment));
|
g_object_ref_sink (adjustment);
|
||||||
|
|
||||||
g_signal_connect (adjustment, "changed",
|
g_signal_connect (adjustment, "changed",
|
||||||
(GCallback) gtk_knob_adjustment_changed,
|
G_CALLBACK(gtk_knob_adjustment_changed),
|
||||||
knob);
|
knob);
|
||||||
g_signal_connect (adjustment, "value_changed",
|
g_signal_connect (adjustment, "value_changed",
|
||||||
(GCallback) gtk_knob_adjustment_value_changed,
|
G_CALLBACK(gtk_knob_adjustment_value_changed),
|
||||||
knob);
|
knob);
|
||||||
|
|
||||||
knob->old_value = adjustment->value;
|
knob->old_value = adjustment->value;
|
||||||
@@ -287,6 +284,7 @@ gtk_knob_set_adjustment(GtkKnob *knob, GtkAdjustment *adjustment) {
|
|||||||
|
|
||||||
gtk_knob_update (knob);
|
gtk_knob_update (knob);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@@ -398,6 +396,7 @@ gtk_knob_expose(GtkWidget *widget, GdkEventExpose *event) {
|
|||||||
g_return_val_if_fail (widget != NULL, FALSE);
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (GTK_KNOB (widget)->adjustment), FALSE);
|
||||||
|
|
||||||
if (event->count > 0)
|
if (event->count > 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -436,6 +435,7 @@ gtk_knob_scroll(GtkWidget *widget, GdkEventScroll *event) {
|
|||||||
g_return_val_if_fail (widget != NULL, FALSE);
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (GTK_KNOB (widget)->adjustment), FALSE);
|
||||||
|
|
||||||
knob = GTK_KNOB (widget);
|
knob = GTK_KNOB (widget);
|
||||||
|
|
||||||
@@ -468,6 +468,7 @@ gtk_knob_button_press(GtkWidget *widget, GdkEventButton *event) {
|
|||||||
g_return_val_if_fail (widget != NULL, FALSE);
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (GTK_KNOB (widget)->adjustment), FALSE);
|
||||||
|
|
||||||
knob = GTK_KNOB (widget);
|
knob = GTK_KNOB (widget);
|
||||||
|
|
||||||
@@ -508,6 +509,7 @@ gtk_knob_button_release(GtkWidget *widget, GdkEventButton *event) {
|
|||||||
g_return_val_if_fail (widget != NULL, FALSE);
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (GTK_KNOB (widget)->adjustment), FALSE);
|
||||||
|
|
||||||
knob = GTK_KNOB (widget);
|
knob = GTK_KNOB (widget);
|
||||||
|
|
||||||
@@ -544,6 +546,7 @@ static gint gtk_knob_key_press(GtkWidget *widget, GdkEventKey *event)
|
|||||||
g_return_val_if_fail (widget != NULL, FALSE);
|
g_return_val_if_fail (widget != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (widget), FALSE);
|
||||||
g_return_val_if_fail (event != NULL, FALSE);
|
g_return_val_if_fail (event != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (GTK_KNOB (widget)->adjustment), FALSE);
|
||||||
|
|
||||||
knob = GTK_KNOB (widget);
|
knob = GTK_KNOB (widget);
|
||||||
|
|
||||||
@@ -629,6 +632,7 @@ gtk_knob_timer(GtkKnob *knob) {
|
|||||||
|
|
||||||
g_return_val_if_fail (knob != NULL, FALSE);
|
g_return_val_if_fail (knob != NULL, FALSE);
|
||||||
g_return_val_if_fail (GTK_IS_KNOB (knob), FALSE);
|
g_return_val_if_fail (GTK_IS_KNOB (knob), FALSE);
|
||||||
|
g_return_val_if_fail (GTK_IS_ADJUSTMENT (knob->adjustment), FALSE);
|
||||||
|
|
||||||
if (knob->policy == GTK_UPDATE_DELAYED) {
|
if (knob->policy == GTK_UPDATE_DELAYED) {
|
||||||
g_signal_emit_by_name (knob->adjustment, "value_changed");
|
g_signal_emit_by_name (knob->adjustment, "value_changed");
|
||||||
@@ -646,6 +650,7 @@ gtk_knob_timer(GtkKnob *knob) {
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
static void
|
static void
|
||||||
gtk_knob_update_mouse_update(GtkKnob *knob) {
|
gtk_knob_update_mouse_update(GtkKnob *knob) {
|
||||||
|
g_return_if_fail(GTK_IS_ADJUSTMENT (knob->adjustment));
|
||||||
|
|
||||||
if (knob->policy == GTK_UPDATE_CONTINUOUS) {
|
if (knob->policy == GTK_UPDATE_CONTINUOUS) {
|
||||||
g_signal_emit_by_name (knob->adjustment, "value_changed");
|
g_signal_emit_by_name (knob->adjustment, "value_changed");
|
||||||
@@ -677,6 +682,7 @@ gtk_knob_update_mouse(GtkKnob *knob, gint x, gint y, gboolean step) {
|
|||||||
|
|
||||||
g_return_if_fail (knob != NULL);
|
g_return_if_fail (knob != NULL);
|
||||||
g_return_if_fail (GTK_IS_KNOB (knob));
|
g_return_if_fail (GTK_IS_KNOB (knob));
|
||||||
|
g_return_if_fail (GTK_IS_ADJUSTMENT (knob->adjustment));
|
||||||
|
|
||||||
old_value = knob->adjustment->value;
|
old_value = knob->adjustment->value;
|
||||||
|
|
||||||
@@ -722,6 +728,7 @@ gtk_knob_update(GtkKnob *knob) {
|
|||||||
|
|
||||||
g_return_if_fail (knob != NULL);
|
g_return_if_fail (knob != NULL);
|
||||||
g_return_if_fail (GTK_IS_KNOB (knob));
|
g_return_if_fail (GTK_IS_KNOB (knob));
|
||||||
|
g_return_if_fail (GTK_IS_ADJUSTMENT (knob->adjustment));
|
||||||
|
|
||||||
if (knob->adjustment->step_increment == 1) {
|
if (knob->adjustment->step_increment == 1) {
|
||||||
new_value = floor (knob->adjustment->value + 0.5);
|
new_value = floor (knob->adjustment->value + 0.5);
|
||||||
|
|||||||
Reference in New Issue
Block a user