[evince/gnome-42] use default color when annotation has no color
- From: Nelson Ben <nbenitez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince/gnome-42] use default color when annotation has no color
- Date: Tue, 20 Sep 2022 04:22:42 +0000 (UTC)
commit 80308dddfd5663d1257b4d5ce591d9bd06bfdaa6
Author: Nelson Benítez León <nbenitezl gmail com>
Date: Sun Jun 5 11:52:56 2022 -0400
use default color when annotation has no color
Annotations may come with a NULL color, use
a default color there instead of letting
undefined GdkRGBA to crash the application.
We take the chance to share this default color
to be the same we already use when creating
an annotation from Evince.
We also take the chance to replace deprecated
function ev_annotation_set_color() with
ev_annotation_set_rgba()
Fixes crash in #1800
backend/pdf/ev-poppler.c | 4 +++-
libdocument/ev-annotation.h | 2 ++
libview/ev-view.c | 4 ++--
3 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/backend/pdf/ev-poppler.c b/backend/pdf/ev-poppler.c
index 8738f0052..03c0f4f2a 100644
--- a/backend/pdf/ev-poppler.c
+++ b/backend/pdf/ev-poppler.c
@@ -2640,7 +2640,9 @@ poppler_annot_color_to_gdk_rgba (PopplerAnnot *poppler_annot,
color->alpha = 1.0;
g_free (poppler_color);
- } /* TODO: else use a default color */
+ } else { /* default color */
+ *color = EV_ANNOTATION_DEFAULT_COLOR;
+ }
}
static EvAnnotationTextIcon
diff --git a/libdocument/ev-annotation.h b/libdocument/ev-annotation.h
index ab5c96245..8b82beb86 100644
--- a/libdocument/ev-annotation.h
+++ b/libdocument/ev-annotation.h
@@ -115,6 +115,8 @@ typedef enum {
EV_ANNOTATION_TEXT_MARKUP_SQUIGGLY
} EvAnnotationTextMarkupType;
+#define EV_ANNOTATION_DEFAULT_COLOR ((const GdkRGBA) { 1., 1., 0, 1.});
+
/* EvAnnotation */
EV_PUBLIC
GType ev_annotation_get_type (void) G_GNUC_CONST;
diff --git a/libview/ev-view.c b/libview/ev-view.c
index 06aeb4ad4..5d940a939 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -3717,7 +3717,7 @@ ev_view_create_annotation_real (EvView *view,
EvAnnotation *annot;
EvRectangle doc_rect, popup_rect;
EvPage *page;
- GdkColor color = { 0, 65535, 65535, 0 };
+ GdkRGBA color = EV_ANNOTATION_DEFAULT_COLOR;
GdkRectangle view_rect;
cairo_region_t *region;
@@ -3749,7 +3749,7 @@ ev_view_create_annotation_real (EvView *view,
g_object_unref (page);
ev_annotation_set_area (annot, &doc_rect);
- ev_annotation_set_color (annot, &color);
+ ev_annotation_set_rgba (annot, &color);
if (EV_IS_ANNOTATION_MARKUP (annot)) {
popup_rect.x1 = doc_rect.x2;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]