~thad-fisch-deactivatedaccount/lightdm-gtk-greeter/preselection-fix

« back to all changes in this revision

Viewing changes to src/lightdm-gtk-greeter.c

  • Committer: Simon Steinbeiß
  • Date: 2014-02-16 18:37:06 UTC
  • Revision ID: ochosi@shimmerproject.org-20140216183706-37447vqkdnzrn0tu
Revert accidental change of previous commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
796
796
    return FALSE;
797
797
}
798
798
 
799
 
static void
800
 
panel_window_shadow (void)
801
 
{
802
 
    cairo_t *cr;
803
 
    cairo_pattern_t *shadow_pattern;
804
 
    GtkWidget *shadow_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
805
 
    GdkWindow *window;
806
 
    GtkAllocation *allocation = g_new0 (GtkAllocation, 1);
807
 
    
808
 
    gtk_widget_get_allocation (GTK_WIDGET(panel_window), allocation);
809
 
    // Create a Window below the panel for the shadow to draw into
810
 
    gtk_window_set_resizable (GTK_WINDOW(shadow_window), FALSE);
811
 
    gtk_window_set_default_size (GTK_WINDOW(shadow_window), allocation->width, 24);
812
 
    gtk_widget_set_app_paintable(GTK_WIDGET(shadow_window), TRUE);
813
 
    // Move it below the panel
814
 
    gtk_window_move (GTK_WINDOW(shadow_window), 0, allocation->height);
815
 
    window = gtk_widget_get_window(shadow_window);
816
 
    // Create the cairo_t
817
 
    cr = gdk_cairo_create(window);
818
 
    
819
 
    // Draw fake transparency background
820
 
    if (background_pixbuf)
821
 
        gdk_cairo_set_source_pixbuf (cr, background_pixbuf, 0, allocation->height);
822
 
    else
823
 
        gdk_cairo_set_source_rgba (cr, default_background_color);
824
 
    cairo_fill_preserve (cr);
825
 
    
826
 
    // Create shadow pattern
827
 
    shadow_pattern = cairo_pattern_create_linear (0, 0, allocation->width, 24);
828
 
    cairo_pattern_add_color_stop_rgb(shadow_pattern, 0.5, 0, 0, 0);
829
 
    cairo_pattern_add_color_stop_rgb(shadow_pattern, 0.2, 0, 0, 0);
830
 
    cairo_pattern_add_color_stop_rgb(shadow_pattern, 0.0, 0, 0, 0);
831
 
    
832
 
    cairo_rectangle (cr, 0, 0, allocation->width, 24);
833
 
    cairo_set_source (cr, shadow_pattern);
834
 
    cairo_fill(cr);
835
 
    cairo_pattern_destroy(shadow_pattern);
836
 
}
837
 
 
838
 
static gboolean
839
 
panel_window_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
840
 
{
841
 
    /* Draw shadow below the panel */
842
 
    panel_window_shadow();
843
 
    
844
 
    if (background_pixbuf)
845
 
        gdk_cairo_set_source_pixbuf (cr, background_pixbuf, 0, 0);
846
 
    else
847
 
        gdk_cairo_set_source_rgba (cr, default_background_color);
848
 
    cairo_paint (cr);
849
 
    return FALSE;
850
 
}
851
 
 
852
799
static gboolean
853
800
login_window_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
854
801
{
2469
2416
#if GTK_CHECK_VERSION (3, 0, 0)
2470
2417
    gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(panel_window))), "lightdm-gtk-greeter");
2471
2418
    gtk_style_context_add_class(GTK_STYLE_CONTEXT(gtk_widget_get_style_context(GTK_WIDGET(panel_window))), GTK_STYLE_CLASS_MENUBAR);
2472
 
    g_signal_connect (G_OBJECT (panel_window), "draw", G_CALLBACK (panel_window_draw), NULL);
 
2419
    g_signal_connect (G_OBJECT (panel_window), "draw", G_CALLBACK (background_window_draw), NULL);
2473
2420
#endif
2474
2421
    gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (builder, "hostname_label")), lightdm_get_hostname ());
2475
2422
    session_menu = GTK_MENU(gtk_builder_get_object (builder, "session_menu"));