diff --git a/mycpu.c b/mycpu.c index 6f19d6a..c46f700 100644 --- a/mycpu.c +++ b/mycpu.c @@ -24,13 +24,17 @@ static void my_cpu_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void my_cpu_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void my_cpu_size_request(GtkWidget *widget, - GtkRequisition *requisition); +static void my_cpu_get_preferred_width(GtkWidget *widget, + gint *minimal_w, + gint *natural_w); +static void my_cpu_get_preferred_height(GtkWidget *widget, + gint *minimal_h, + gint *natural_h); static void my_cpu_size_allocate(GtkWidget *widget, GtkAllocation *allocation); static void my_cpu_realize(GtkWidget *widget); -static gboolean my_cpu_expose(GtkWidget *widget, - GdkEventExpose *event); +static gboolean my_cpu_draw(GtkWidget *widget, + cairo_t *cr); /* Define type */ G_DEFINE_TYPE(MyCpu, my_cpu, GTK_TYPE_WIDGET) @@ -50,9 +54,10 @@ static void my_cpu_class_init(MyCpuClass *klass) { g_class->get_property = my_cpu_get_property; w_class->realize = my_cpu_realize; - w_class->size_request = my_cpu_size_request; + w_class->get_preferred_width = my_cpu_get_preferred_width; + w_class->get_preferred_height = my_cpu_get_preferred_height; w_class->size_allocate = my_cpu_size_allocate; - w_class->expose_event = my_cpu_expose; + w_class->draw = my_cpu_draw; /* Install property */ pspec = g_param_spec_double("percent", "Percent", @@ -143,16 +148,21 @@ static void my_cpu_realize(GtkWidget *widget) { gdk_window_set_user_data(priv->window, widget); gtk_widget_set_window(widget, priv->window); - widget->style = gtk_style_attach(gtk_widget_get_style( widget ), - priv->window); - gtk_style_set_background(widget->style, priv->window, GTK_STATE_NORMAL); +// widget->style = gtk_style_attach(gtk_widget_get_style( widget ), +// priv->window); +// gtk_style_set_background(widget->style, priv->window, GTK_STATE_NORMAL); } -static void my_cpu_size_request(GtkWidget *widget, - GtkRequisition *requisition) { - - requisition->width = WIDTH; - requisition->height = HEIGHT; +static void my_cpu_get_preferred_width(GtkWidget *widget, + gint *minimal_w, + gint *natural_w){ + *minimal_w = *natural_w = WIDTH; +} + +static void my_cpu_get_preferred_height(GtkWidget *widget, + gint *minimal_h, + gint *natural_h){ + *minimal_h = *natural_h = HEIGHT; } static void my_cpu_size_allocate(GtkWidget *widget, @@ -171,16 +181,13 @@ static void my_cpu_size_allocate(GtkWidget *widget, } } -static gboolean my_cpu_expose(GtkWidget *widget, - GdkEventExpose *event) { +static gboolean my_cpu_draw (GtkWidget *widget, + cairo_t *cr) { MyCpuPrivate *priv = MY_CPU(widget)->priv; - cairo_t *cr; gint limit; gint i; - cr = gdk_cairo_create(event->window); - cairo_translate(cr, 0, 7); cairo_set_source_rgb(cr, 0, 0, 0); @@ -201,8 +208,6 @@ static gboolean my_cpu_expose(GtkWidget *widget, cairo_fill(cr); } - cairo_destroy(cr); - return TRUE; }