diff --git a/src/process-monitor.c b/src/process-monitor.c index 350c5d5..5ad24e2 100644 --- a/src/process-monitor.c +++ b/src/process-monitor.c @@ -24,6 +24,7 @@ enum PROP_COLOR_RED, PROP_COLOR_GREEN, PROP_COLOR_BLUE, + PROP_PAINT_BOX, }; typedef struct _XtmProcessMonitorClass XtmProcessMonitorClass; struct _XtmProcessMonitorClass @@ -39,6 +40,7 @@ struct _XtmProcessMonitor gfloat color_red; gfloat color_green; gfloat color_blue; + gboolean paint_box; }; G_DEFINE_TYPE (XtmProcessMonitor, xtm_process_monitor, GTK_TYPE_DRAWING_AREA) @@ -66,6 +68,8 @@ xtm_process_monitor_class_init (XtmProcessMonitorClass *klass) g_param_spec_float ("color-green", "ColorGreen", "Color green", 0, 1, 0, G_PARAM_READWRITE)); g_object_class_install_property (class, PROP_COLOR_BLUE, g_param_spec_float ("color-blue", "ColorBlue", "Color blue", 0, 1, 0, G_PARAM_READWRITE)); + g_object_class_install_property (class, PROP_PAINT_BOX, + g_param_spec_boolean ("paint-box", "PaintBox", "Paint box around monitor", TRUE, G_PARAM_CONSTRUCT|G_PARAM_READWRITE)); } static void @@ -106,6 +110,10 @@ xtm_process_monitor_get_property (GObject *object, guint property_id, GValue *va g_value_set_float (value, monitor->color_blue); break; + case PROP_PAINT_BOX: + g_value_set_boolean (value, monitor->paint_box); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -134,6 +142,10 @@ xtm_process_monitor_set_property (GObject *object, guint property_id, const GVal monitor->color_blue = g_value_get_float (value); break; + case PROP_PAINT_BOX: + monitor->paint_box = g_value_get_boolean (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -235,8 +247,9 @@ xtm_process_monitor_paint (XtmProcessMonitor *monitor) height = GTK_WIDGET (monitor)->allocation.height; /* Paint a box */ - gtk_paint_box (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN, - NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height); + if (monitor->paint_box) + gtk_paint_box (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN, + NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height); /* Paint the graph */ graph_surface = xtm_process_monitor_graph_surface_create (monitor); @@ -272,8 +285,9 @@ xtm_process_monitor_paint (XtmProcessMonitor *monitor) cairo_stroke (cr); /* Repaint a shadow on top of everything to clear corners */ - gtk_paint_shadow (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN, - NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height); + if (monitor->paint_box) + gtk_paint_shadow (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN, + NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height); cairo_destroy (cr); } @@ -326,3 +340,11 @@ xtm_process_monitor_set_source_color (XtmProcessMonitor *monitor, gdouble red, g gdk_window_invalidate_rect (GTK_WIDGET (monitor)->window, NULL, FALSE); } +void +xtm_process_monitor_set_paint_box (XtmProcessMonitor *monitor, gboolean paint_box) +{ + g_return_if_fail (XTM_IS_PROCESS_MONITOR (monitor)); + g_object_set (monitor, "paint-box", paint_box, NULL); + if (GDK_IS_WINDOW (GTK_WIDGET (monitor)->window)) + gdk_window_invalidate_rect (GTK_WIDGET (monitor)->window, NULL, FALSE); +} diff --git a/src/process-monitor.h b/src/process-monitor.h index e4ead80..aa90f98 100644 --- a/src/process-monitor.h +++ b/src/process-monitor.h @@ -31,5 +31,6 @@ void xtm_process_monitor_add_peak (XtmProcessMonitor *monitor, gfloat peak); void xtm_process_monitor_set_step_size (XtmProcessMonitor *monitor, gfloat step_size); void xtm_process_monitor_clear (XtmProcessMonitor *monitor); void xtm_process_monitor_set_source_color (XtmProcessMonitor *monitor, gdouble red, gdouble green, gdouble blue); +void xtm_process_monitor_set_paint_box (XtmProcessMonitor *monitor, gboolean paint_box); #endif /* !PROCESS_MONITOR_H */ diff --git a/src/process-window.c b/src/process-window.c index a8fc1b2..0a48abe 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -64,6 +64,7 @@ static void xtm_process_window_hide (GtkWidget *widget); static void emit_destroy_signal (XtmProcessWindow *window); static gboolean emit_delete_event_signal (XtmProcessWindow *window, GdkEvent *event); static void monitor_update_step_size (XtmProcessWindow *window); +static void monitor_update_paint_box (XtmProcessWindow *window); static void show_about_dialog (XtmProcessWindow *window); @@ -121,6 +122,8 @@ xtm_process_window_init (XtmProcessWindow *window) gtk_widget_show (window->priv->mem_monitor); gtk_container_add (GTK_CONTAINER (toolitem), window->priv->mem_monitor); + monitor_update_paint_box (window); + g_signal_connect_swapped (window->priv->settings, "notify::monitor-paint-box", G_CALLBACK (monitor_update_paint_box), window); g_signal_connect_swapped (window->priv->settings, "notify::refresh-rate", G_CALLBACK (monitor_update_step_size), window); } @@ -206,6 +209,15 @@ emit_delete_event_signal (XtmProcessWindow *window, GdkEvent *event) return ret; } +static void +monitor_update_paint_box (XtmProcessWindow *window) +{ + gboolean paint_box; + g_object_get (window->priv->settings, "monitor-paint-box", &paint_box, NULL); + xtm_process_monitor_set_paint_box (XTM_PROCESS_MONITOR (window->priv->cpu_monitor), paint_box); + xtm_process_monitor_set_paint_box (XTM_PROCESS_MONITOR (window->priv->mem_monitor), paint_box); +} + static void monitor_update_step_size (XtmProcessWindow *window) { @@ -348,4 +360,3 @@ xtm_process_window_show_swap_usage (XtmProcessWindow *window, gboolean show_swap g_return_if_fail (GTK_IS_STATUSBAR (window->priv->statusbar)); g_object_set (window->priv->statusbar, "show-swap", show_swap_usage, NULL); } - diff --git a/src/settings-dialog.ui b/src/settings-dialog.ui index dc37e24..1b8ee35 100644 --- a/src/settings-dialog.ui +++ b/src/settings-dialog.ui @@ -77,7 +77,6 @@ Draw borders around monitors True - False True False 0.49000000953674316