Updating branch refs/heads/bluesabre/display-settings to af52d5f5c0782bb7a86dba96d63bff3086a0fe3d (commit) from 0b641006b099507b8017bc46777d2606cf7cf4e2 (commit)
commit af52d5f5c0782bb7a86dba96d63bff3086a0fe3d Author: Simon Steinbeiss <simon.steinbe...@elfenbeinturm.at> Date: Wed Oct 10 18:27:21 2012 +0200 Visual improvements to the identity-popup dialogs/display-settings/main.c | 87 +++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c index 9b5aa69..0775ae8 100644 --- a/dialogs/display-settings/main.c +++ b/dialogs/display-settings/main.c @@ -1011,21 +1011,63 @@ display_setting_screen_changed(GtkWidget *widget, GdkScreen *old_screen, gpointe } static gboolean -display_setting_identity_popup_expose(GtkWidget *popup, GdkEventExpose *event, gpointer userdata) +display_setting_identity_popup_expose(GtkWidget *popup, GdkEventExpose *event, gpointer has_selection) { cairo_t *cr = gdk_cairo_create(popup->window); gint radius; + gboolean selected = GPOINTER_TO_INT(has_selection); + cairo_pattern_t *vertical_gradient, *innerstroke_gradient, *selected_gradient, *selected_innerstroke_gradient; - radius = 15; + radius = 10; cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - + + /* Create the various gradients */ + vertical_gradient = cairo_pattern_create_linear(0, 0, 0, popup->allocation.height); + cairo_pattern_add_color_stop_rgb(vertical_gradient, 0, 0.25, 0.25, 0.25); + cairo_pattern_add_color_stop_rgb(vertical_gradient, 0.24, 0.15, 0.15, 0.15); + cairo_pattern_add_color_stop_rgb(vertical_gradient, 0.6, 0.0, 0.0, 0.0); + + innerstroke_gradient = cairo_pattern_create_linear(0, 0, 0, popup->allocation.height); + cairo_pattern_add_color_stop_rgb(innerstroke_gradient, 0, 0.35, 0.35, 0.35); + cairo_pattern_add_color_stop_rgb(innerstroke_gradient, 0.4, 0.25, 0.25, 0.25); + cairo_pattern_add_color_stop_rgb(innerstroke_gradient, 0.7, 0.15, 0.15, 0.15); + cairo_pattern_add_color_stop_rgb(innerstroke_gradient, 0.85, 0.0, 0.0, 0.0); + + selected_gradient = cairo_pattern_create_linear(0, 0, 0, popup->allocation.height); + cairo_pattern_add_color_stop_rgb(selected_gradient, 0, 0.05, 0.25, 0.45); + cairo_pattern_add_color_stop_rgb(selected_gradient, 0.4, 0.05, 0.15, 0.25); + cairo_pattern_add_color_stop_rgb(selected_gradient, 0.6, 0.05, 0.10, 0.20); + cairo_pattern_add_color_stop_rgb(selected_gradient, 0.8, 0.0, 0.05, 0.05); + + selected_innerstroke_gradient = cairo_pattern_create_linear(0, 0, 0, popup->allocation.height); + cairo_pattern_add_color_stop_rgb(selected_innerstroke_gradient, 0, 0.15, 0.45, 0.75); + cairo_pattern_add_color_stop_rgb(selected_innerstroke_gradient, 0.7, 0.0, 0.15, 0.25); + cairo_pattern_add_color_stop_rgb(selected_innerstroke_gradient, 0.85, 0.0, 0.0, 0.0); + /* Compositing is not available, so just set the background color. */ if (!supports_alpha) { - cairo_set_source_rgb(cr, 0.1, 0.1, 0.1); + /* Draw a filled rectangle with outline */ + cairo_set_line_width(cr, 1.0); + cairo_set_source(cr, vertical_gradient); + if (selected) cairo_set_source(cr, selected_gradient); cairo_paint (cr); - cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); - cairo_rectangle(cr, 0, 0, popup->allocation.width, popup->allocation.height); + cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); + cairo_rectangle(cr, 0.5, 0.5, popup->allocation.width-0.5, popup->allocation.height-0.5); + cairo_stroke(cr); + + /* Draw the inner stroke */ + cairo_set_source_rgb(cr, 0.35, 0.35, 0.35); + if (selected) cairo_set_source_rgb(cr, 0.15, 0.45, 0.75); + cairo_move_to(cr, 1.5, 1.5); + cairo_line_to(cr, popup->allocation.width-1, 1.5); + cairo_stroke(cr); + cairo_set_source(cr, innerstroke_gradient); + if (selected) cairo_set_source(cr, selected_innerstroke_gradient); + cairo_move_to(cr, 1.5, 1.5); + cairo_line_to(cr, 1.5, popup->allocation.height-1.0); + cairo_move_to(cr, popup->allocation.width-1.5, 1.5); + cairo_line_to(cr, popup->allocation.width-1.5, popup->allocation.height-1.0); cairo_stroke(cr); } @@ -1043,14 +1085,35 @@ display_setting_identity_popup_expose(GtkWidget *popup, GdkEventExpose *event, g cairo_line_to(cr, popup->allocation.width-0.5 - radius, 0.5); cairo_arc(cr, popup->allocation.width-0.5 - radius, radius+0.5, radius, 3.0*3.14/2.0, 0.0); cairo_line_to(cr, popup->allocation.width-0.5, popup->allocation.height+0.5); - cairo_set_source_rgba(cr, 0.1, 0.1, 0.1, 0.9); + cairo_set_source(cr, vertical_gradient); + if (selected) cairo_set_source(cr, selected_gradient); cairo_fill_preserve(cr); - cairo_set_source_rgba(cr, 1.0, 1.0, 1.0,0.7); + cairo_set_source_rgb(cr, 0.05, 0.05, 0.05); cairo_stroke(cr); + + /* Draw the inner stroke */ + cairo_set_source_rgb(cr, 0.35, 0.35, 0.35); + if (selected) cairo_set_source_rgb(cr, 0.15, 0.45, 0.75); + cairo_arc(cr, radius+1.5, radius+1.5, radius, 3.14, 3.0*3.14/2.0); + cairo_line_to(cr, popup->allocation.width-1.5 - radius, 1.5); + cairo_arc(cr, popup->allocation.width-1.5 - radius, radius+1.5, radius, 3.0*3.14/2.0, 0.0); + cairo_stroke(cr); + cairo_set_source(cr, innerstroke_gradient); + if (selected) cairo_set_source(cr, selected_innerstroke_gradient); + cairo_move_to(cr, 1.5, radius+1.0); + cairo_line_to(cr, 1.5, popup->allocation.height-1.0); + cairo_move_to(cr, popup->allocation.width-1.5, radius+1.0); + cairo_line_to(cr, popup->allocation.width-1.5, popup->allocation.height-1.0); + cairo_stroke(cr); + cairo_close_path(cr); } cairo_destroy (cr); + cairo_pattern_destroy(vertical_gradient); + cairo_pattern_destroy(innerstroke_gradient); + cairo_pattern_destroy(selected_gradient); + cairo_pattern_destroy(selected_innerstroke_gradient); return FALSE; } @@ -1080,7 +1143,7 @@ display_setting_identity_display (gint display_id, gtk_widget_set_name(GTK_WIDGET(popup),"XfceDisplayDialogPopup"); gtk_widget_set_app_paintable(popup, TRUE); - g_signal_connect( G_OBJECT(popup), "expose-event", G_CALLBACK(display_setting_identity_popup_expose), NULL ); + g_signal_connect( G_OBJECT(popup), "expose-event", G_CALLBACK(display_setting_identity_popup_expose), GINT_TO_POINTER(has_selection) ); g_signal_connect( G_OBJECT(popup), "screen-changed", G_CALLBACK(display_setting_screen_changed), NULL ); display_name = gtk_builder_get_object(builder, "display_name"); @@ -1109,14 +1172,14 @@ display_setting_identity_display (gint display_id, name = xfce_randr_friendly_name (xfce_randr, xfce_randr->resources->outputs[display_id], xfce_randr->output_info[display_id]->name); - color_hex = "#FFFFFF"; - if ((has_selection)) color_hex = "#D20000"; + color_hex = "#D0D0D0"; + if ((has_selection)) color_hex = "#FFFFFF"; name_label = g_markup_printf_escaped("<span foreground='%s'><big><b>%s %s</b></big></span>", color_hex, _("Display:"), name); gtk_label_set_markup (GTK_LABEL(display_name), name_label); g_free (name_label); - details_label = g_markup_printf_escaped("<span foreground='%s'>%s %i x %i</span>", color_hex, _("Resolution:"), screen_width, screen_height); + details_label = g_markup_printf_escaped("<span foreground='#ABABAB'>%s %i x %i</span>", _("Resolution:"), screen_width, screen_height); gtk_label_set_markup (GTK_LABEL(display_details), details_label); g_free (details_label); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits