X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-loading-window.c;h=94576ee71d9fa64bdb390b2da647b2db9d996a5f;hb=d03b039e22ac6ceaff38823c70dd84c78e6049ca;hp=a3dd3b37fcf93c01b05bebaed72a2431bc88094d;hpb=e8ae19eec531a08822c42f7defac4f0bff38d373;p=evince.git diff --git a/libview/ev-loading-window.c b/libview/ev-loading-window.c index a3dd3b37..94576ee7 100644 --- a/libview/ev-loading-window.c +++ b/libview/ev-loading-window.c @@ -33,6 +33,7 @@ struct _EvLoadingWindow { GtkWindow base_instance; GtkWindow *parent; + GtkWidget *spinner; gint x; gint y; @@ -69,20 +70,18 @@ ev_loading_window_init (EvLoadingWindow *window) GtkWindow *gtk_window = GTK_WINDOW (window); GtkWidget *widget = GTK_WIDGET (window); GtkWidget *hbox; - GtkWidget *spinner; GtkWidget *label; - GtkStyle *style; - GdkColor fg, bg; + GtkStyleContext *context; + GdkRGBA fg, bg; const gchar *loading_text = _("Loading…"); const gchar *fg_color_name = "info_fg_color"; const gchar *bg_color_name = "info_bg_color"; hbox = gtk_hbox_new (FALSE, 12); - spinner = gtk_spinner_new (); - gtk_spinner_start (GTK_SPINNER (spinner)); - gtk_box_pack_start (GTK_BOX (hbox), spinner, FALSE, FALSE, 0); - gtk_widget_show (spinner); + window->spinner = gtk_spinner_new (); + gtk_box_pack_start (GTK_BOX (hbox), window->spinner, FALSE, FALSE, 0); + gtk_widget_show (window->spinner); label = gtk_label_new (loading_text); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); @@ -100,24 +99,22 @@ ev_loading_window_init (EvLoadingWindow *window) gtk_window_set_decorated (gtk_window, FALSE); gtk_window_set_resizable (gtk_window, FALSE); - style = gtk_widget_get_style (widget); - if (!gtk_style_lookup_color (style, fg_color_name, &fg) || - !gtk_style_lookup_color (style, bg_color_name, &bg)) { - fg.pixel = 0; - fg.red = 0xb800; - fg.green = 0xad00; - fg.blue = 0x9d00; - - bg.pixel = 0; - bg.red = 0xff00; - bg.green = 0xff00; - bg.blue = 0xbf00; + context = gtk_widget_get_style_context (widget); + if (!gtk_style_context_lookup_color (context, fg_color_name, &fg) || + !gtk_style_context_lookup_color (context, bg_color_name, &bg)) { + fg.red = 0.7; + fg.green = 0.67; + fg.blue = 0.63; + fg.alpha = 1.0; + + bg.red = 0.99; + bg.green = 0.99; + bg.blue = 0.71; + bg.alpha = 1.0; } - if (!gdk_color_equal (&bg, &style->bg[GTK_STATE_NORMAL])) - gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &bg); - if (!gdk_color_equal (&fg, &style->fg[GTK_STATE_NORMAL])) - gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, &fg); + gtk_widget_override_background_color (widget, GTK_STATE_NORMAL, &bg); + gtk_widget_override_color (widget, GTK_STATE_NORMAL, &fg); } static GObject * @@ -177,12 +174,8 @@ ev_loading_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { EvLoadingWindow *window = EV_LOADING_WINDOW (widget); -#if GTK_CHECK_VERSION (2, 90, 8) cairo_surface_t *surface; - cairo_region_t *shape; -#else - GdkPixmap *mask; -#endif + cairo_region_t *shape; cairo_t *cr; double r; @@ -194,15 +187,10 @@ ev_loading_window_size_allocate (GtkWidget *widget, window->width = allocation->width; window->height = allocation->height; -#if GTK_CHECK_VERSION (2, 90, 8) surface = cairo_image_surface_create (CAIRO_FORMAT_A8, window->width, window->height); cr = cairo_create (surface); -#else - mask = gdk_pixmap_new (NULL, window->width, window->height, 1); - cr = gdk_cairo_create (GDK_DRAWABLE (mask)); -#endif cairo_save (cr); cairo_rectangle (cr, 0, 0, window->width, window->height); @@ -217,16 +205,11 @@ ev_loading_window_size_allocate (GtkWidget *widget, cairo_destroy (cr); -#if GTK_CHECK_VERSION (2, 90, 8) shape = gdk_cairo_region_create_from_surface (surface); cairo_surface_destroy (surface); gtk_widget_shape_combine_region (widget, shape); cairo_region_destroy (shape); -#else - gtk_widget_shape_combine_mask (widget, mask, 0, 0); - g_object_unref (mask); -#endif } static void @@ -236,9 +219,21 @@ ev_loading_window_hide (GtkWidget *widget) window->x = window->y = 0; + gtk_spinner_stop (GTK_SPINNER (window->spinner)); + GTK_WIDGET_CLASS (ev_loading_window_parent_class)->hide (widget); } +static void +ev_loading_window_show (GtkWidget *widget) +{ + EvLoadingWindow *window = EV_LOADING_WINDOW (widget); + + gtk_spinner_start (GTK_SPINNER (window->spinner)); + + GTK_WIDGET_CLASS (ev_loading_window_parent_class)->show (widget); +} + static void ev_loading_window_class_init (EvLoadingWindowClass *klass) { @@ -249,6 +244,7 @@ ev_loading_window_class_init (EvLoadingWindowClass *klass) g_object_class->set_property = ev_loading_window_set_property; gtk_widget_class->size_allocate = ev_loading_window_size_allocate; + gtk_widget_class->show = ev_loading_window_show; gtk_widget_class->hide = ev_loading_window_hide; g_object_class_install_property (g_object_class, @@ -270,6 +266,7 @@ ev_loading_window_new (GtkWindow *parent) g_return_val_if_fail (GTK_IS_WINDOW (parent), NULL); window = g_object_new (EV_TYPE_LOADING_WINDOW, + "type", GTK_WINDOW_POPUP, "parent", parent, NULL); return window;