spacepaste

  1.  
  2. diff --git a/mycpu.c b/mycpu.c
  3. index 6f19d6a..c46f700 100644
  4. --- a/mycpu.c
  5. +++ b/mycpu.c
  6. @@ -24,13 +24,17 @@ static void my_cpu_set_property(GObject *object, guint prop_id,
  7. const GValue *value, GParamSpec *pspec);
  8. static void my_cpu_get_property(GObject *object, guint prop_id,
  9. GValue *value, GParamSpec *pspec);
  10. -static void my_cpu_size_request(GtkWidget *widget,
  11. - GtkRequisition *requisition);
  12. +static void my_cpu_get_preferred_width(GtkWidget *widget,
  13. + gint *minimal_w,
  14. + gint *natural_w);
  15. +static void my_cpu_get_preferred_height(GtkWidget *widget,
  16. + gint *minimal_h,
  17. + gint *natural_h);
  18. static void my_cpu_size_allocate(GtkWidget *widget,
  19. GtkAllocation *allocation);
  20. static void my_cpu_realize(GtkWidget *widget);
  21. -static gboolean my_cpu_expose(GtkWidget *widget,
  22. - GdkEventExpose *event);
  23. +static gboolean my_cpu_draw(GtkWidget *widget,
  24. + cairo_t *cr);
  25. /* Define type */
  26. G_DEFINE_TYPE(MyCpu, my_cpu, GTK_TYPE_WIDGET)
  27. @@ -50,9 +54,10 @@ static void my_cpu_class_init(MyCpuClass *klass) {
  28. g_class->get_property = my_cpu_get_property;
  29. w_class->realize = my_cpu_realize;
  30. - w_class->size_request = my_cpu_size_request;
  31. + w_class->get_preferred_width = my_cpu_get_preferred_width;
  32. + w_class->get_preferred_height = my_cpu_get_preferred_height;
  33. w_class->size_allocate = my_cpu_size_allocate;
  34. - w_class->expose_event = my_cpu_expose;
  35. + w_class->draw = my_cpu_draw;
  36. /* Install property */
  37. pspec = g_param_spec_double("percent", "Percent",
  38. @@ -143,16 +148,21 @@ static void my_cpu_realize(GtkWidget *widget) {
  39. gdk_window_set_user_data(priv->window, widget);
  40. gtk_widget_set_window(widget, priv->window);
  41. - widget->style = gtk_style_attach(gtk_widget_get_style( widget ),
  42. - priv->window);
  43. - gtk_style_set_background(widget->style, priv->window, GTK_STATE_NORMAL);
  44. +// widget->style = gtk_style_attach(gtk_widget_get_style( widget ),
  45. +// priv->window);
  46. +// gtk_style_set_background(widget->style, priv->window, GTK_STATE_NORMAL);
  47. }
  48. -static void my_cpu_size_request(GtkWidget *widget,
  49. - GtkRequisition *requisition) {
  50. -
  51. - requisition->width = WIDTH;
  52. - requisition->height = HEIGHT;
  53. +static void my_cpu_get_preferred_width(GtkWidget *widget,
  54. + gint *minimal_w,
  55. + gint *natural_w){
  56. + *minimal_w = *natural_w = WIDTH;
  57. +}
  58. +
  59. +static void my_cpu_get_preferred_height(GtkWidget *widget,
  60. + gint *minimal_h,
  61. + gint *natural_h){
  62. + *minimal_h = *natural_h = HEIGHT;
  63. }
  64. static void my_cpu_size_allocate(GtkWidget *widget,
  65. @@ -171,16 +181,13 @@ static void my_cpu_size_allocate(GtkWidget *widget,
  66. }
  67. }
  68. -static gboolean my_cpu_expose(GtkWidget *widget,
  69. - GdkEventExpose *event) {
  70. +static gboolean my_cpu_draw (GtkWidget *widget,
  71. + cairo_t *cr) {
  72. MyCpuPrivate *priv = MY_CPU(widget)->priv;
  73. - cairo_t *cr;
  74. gint limit;
  75. gint i;
  76. - cr = gdk_cairo_create(event->window);
  77. -
  78. cairo_translate(cr, 0, 7);
  79. cairo_set_source_rgb(cr, 0, 0, 0);
  80. @@ -201,8 +208,6 @@ static gboolean my_cpu_expose(GtkWidget *widget,
  81. cairo_fill(cr);
  82. }
  83. - cairo_destroy(cr);
  84. -
  85. return TRUE;
  86. }
  87.