+
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
/* Forward declarations */
-static void gtk_dial_class_init (GtkDialClass *klass);
-static void gtk_dial_init (GtkDial *dial);
-static void gtk_dial_destroy (GtkObject *object);
-static void gtk_dial_realize (GtkWidget *widget);
-static void gtk_dial_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_dial_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gint gtk_dial_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static gint gtk_dial_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_dial_button_release (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_dial_motion_notify (GtkWidget *widget,
- GdkEventMotion *event);
-static gint gtk_dial_timer (GtkDial *dial);
+static void gtk_dial_class_init (GtkDialClass *klass);
+static void gtk_dial_init (GtkDial *dial);
+static void gtk_dial_destroy (GtkObject *object);
+static void gtk_dial_realize (GtkWidget *widget);
+static void gtk_dial_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void gtk_dial_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+static gboolean gtk_dial_expose (GtkWidget *widget,
+ GdkEventExpose *event);
+static gboolean gtk_dial_button_press (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean gtk_dial_button_release (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean gtk_dial_motion_notify (GtkWidget *widget,
+ GdkEventMotion *event);
+static gboolean gtk_dial_timer (GtkDial *dial);
static void gtk_dial_update_mouse (GtkDial *dial, gint x, gint y);
static void gtk_dial_update (GtkDial *dial);
-static void gtk_dial_adjustment_changed (GtkAdjustment *adjustment,
- gpointer data);
-static void gtk_dial_adjustment_value_changed (GtkAdjustment *adjustment,
- gpointer data);
+static void gtk_dial_adjustment_changed (GtkAdjustment *adjustment,
+ gpointer data);
+static void gtk_dial_adjustment_value_changed (GtkAdjustment *adjustment,
+ gpointer data);
/* Local data */
{
GtkDial *dial;
+ g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_DIAL (object));
dial = GTK_DIAL (object);
if (dial->adjustment)
- g_object_unref (G_OBJECT (dial->adjustment));
+ {
+ g_object_unref (GTK_OBJECT (dial->adjustment));
+ dial->adjustment = NULL;
+ }
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
GtkAdjustment*
gtk_dial_get_adjustment (GtkDial *dial)
{
+ g_return_val_if_fail (dial != NULL, NULL);
g_return_val_if_fail (GTK_IS_DIAL (dial), NULL);
return dial->adjustment;
gtk_dial_set_update_policy (GtkDial *dial,
GtkUpdateType policy)
{
+ g_return_if_fail (dial != NULL);
g_return_if_fail (GTK_IS_DIAL (dial));
dial->policy = policy;
gtk_dial_set_adjustment (GtkDial *dial,
GtkAdjustment *adjustment)
{
+ g_return_if_fail (dial != NULL);
g_return_if_fail (GTK_IS_DIAL (dial));
if (dial->adjustment)
{
- g_signal_handlers_disconnect_by_func (G_OBJECT (dial->adjustment), NULL, (gpointer) dial);
- g_object_unref (G_OBJECT (dial->adjustment));
+ g_signal_handlers_disconnect_by_func (GTK_OBJECT (dial->adjustment), NULL, (gpointer) dial);
+ g_object_unref (GTK_OBJECT (dial->adjustment));
}
dial->adjustment = adjustment;
- g_object_ref (G_OBJECT (dial->adjustment));
+ g_object_ref (GTK_OBJECT (dial->adjustment));
- g_signal_connect (G_OBJECT (adjustment), "changed",
- G_CALLBACK (gtk_dial_adjustment_changed),
- dial);
- g_signal_connect (G_OBJECT (adjustment), "value_changed",
- G_CALLBACK (gtk_dial_adjustment_value_changed),
- dial);
+ g_signal_connect (GTK_OBJECT (adjustment), "changed",
+ GTK_SIGNAL_FUNC (gtk_dial_adjustment_changed),
+ (gpointer) dial);
+ g_signal_connect (GTK_OBJECT (adjustment), "value_changed",
+ GTK_SIGNAL_FUNC (gtk_dial_adjustment_value_changed),
+ (gpointer) dial);
dial->old_value = adjustment->value;
dial->old_lower = adjustment->lower;
GdkWindowAttr attributes;
gint attributes_mask;
+ g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_DIAL (widget));
GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
{
GtkDial *dial;
+ g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_DIAL (widget));
g_return_if_fail (allocation != NULL);
dial->pointer_width = dial->radius / 5;
}
-static gint
-gtk_dial_expose (GtkWidget *widget,
- GdkEventExpose *event)
+static gboolean
+gtk_dial_expose( GtkWidget *widget,
+ GdkEventExpose *event )
{
GtkDial *dial;
GdkPoint points[6];
gint tick_length;
gint i, inc;
+ g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_DIAL (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
for (i = 0; i <= inc; i++)
{
- theta = ((gdouble)i*M_PI / (18*inc/24.) - M_PI/6.);
+ theta = ((gfloat)i*M_PI / (18*inc/24.) - M_PI/6.);
if ((theta - last) < (increment))
continue;
return FALSE;
}
-static gint
-gtk_dial_button_press (GtkWidget *widget,
- GdkEventButton *event)
+static gboolean
+gtk_dial_button_press( GtkWidget *widget,
+ GdkEventButton *event )
{
GtkDial *dial;
gint dx, dy;
double d_parallel;
double d_perpendicular;
+ g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_DIAL (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
return FALSE;
}
-static gint
-gtk_dial_button_release (GtkWidget *widget,
- GdkEventButton *event)
+static gboolean
+gtk_dial_button_release( GtkWidget *widget,
+ GdkEventButton *event )
{
GtkDial *dial;
+ g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_DIAL (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
dial->button = 0;
if (dial->policy == GTK_UPDATE_DELAYED)
- gtk_timeout_remove (dial->timer);
+ g_source_remove (dial->timer);
if ((dial->policy != GTK_UPDATE_CONTINUOUS) &&
(dial->old_value != dial->adjustment->value))
- gtk_adjustment_value_changed (dial->adjustment);
+ g_signal_emit_by_name (GTK_OBJECT (dial->adjustment), "value_changed");
}
return FALSE;
}
-static gint
-gtk_dial_motion_notify (GtkWidget *widget,
- GdkEventMotion *event)
+static gboolean
+gtk_dial_motion_notify( GtkWidget *widget,
+ GdkEventMotion *event )
{
GtkDial *dial;
GdkModifierType mods;
gint x, y, mask;
+ g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_DIAL (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
return FALSE;
}
-static gint
-gtk_dial_timer (GtkDial *dial)
+static gboolean
+gtk_dial_timer( GtkDial *dial )
{
+ g_return_val_if_fail (dial != NULL, FALSE);
g_return_val_if_fail (GTK_IS_DIAL (dial), FALSE);
if (dial->policy == GTK_UPDATE_DELAYED)
- gtk_adjustment_value_changed (dial->adjustment);
+ g_signal_emit_by_name (GTK_OBJECT (dial->adjustment), "value_changed");
return FALSE;
}
static void
-gtk_dial_update_mouse (GtkDial *dial, gint x, gint y)
+gtk_dial_update_mouse( GtkDial *dial, gint x, gint y )
{
gint xc, yc;
- gdouble old_value;
+ gfloat old_value;
+ g_return_if_fail (dial != NULL);
g_return_if_fail (GTK_IS_DIAL (dial));
xc = GTK_WIDGET(dial)->allocation.width / 2;
{
if (dial->policy == GTK_UPDATE_CONTINUOUS)
{
- gtk_adjustment_value_changed (dial->adjustment);
+ g_signal_emit_by_name (GTK_OBJECT (dial->adjustment), "value_changed");
}
else
{
if (dial->policy == GTK_UPDATE_DELAYED)
{
if (dial->timer)
- gtk_timeout_remove (dial->timer);
+ g_source_remove (dial->timer);
- dial->timer = gtk_timeout_add (SCROLL_DELAY_LENGTH,
- (GtkFunction) gtk_dial_timer,
- (gpointer) dial);
+ dial->timer = gdk_threads_add_timeout (SCROLL_DELAY_LENGTH,
+ (GSourceFunc) gtk_dial_timer,
+ (gpointer) dial);
}
}
}
static void
gtk_dial_update (GtkDial *dial)
{
- gdouble new_value;
+ gfloat new_value;
+ g_return_if_fail (dial != NULL);
g_return_if_fail (GTK_IS_DIAL (dial));
new_value = dial->adjustment->value;
if (new_value != dial->adjustment->value)
{
- gtk_adjustment_set_value (dial->adjustment, new_value);
+ dial->adjustment->value = new_value;
+ g_signal_emit_by_name (GTK_OBJECT (dial->adjustment), "value_changed");
}
dial->angle = 7.*M_PI/6. - (new_value - dial->adjustment->lower) * 4.*M_PI/3. /
static void
gtk_dial_adjustment_changed (GtkAdjustment *adjustment,
- gpointer data)
+ gpointer data)
{
GtkDial *dial;
g_return_if_fail (adjustment != NULL);
- g_return_if_fail (GTK_IS_DIAL (data));
+ g_return_if_fail (data != NULL);
dial = GTK_DIAL (data);
GtkDial *dial;
g_return_if_fail (adjustment != NULL);
- g_return_if_fail (GTK_IS_DIAL (data));
+ g_return_if_fail (data != NULL);
dial = GTK_DIAL (data);