X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-annotation.c;h=2fadb9787be2f8ccc9acf564ed3b6b6e52f68322;hb=cc3f21efc8104182171c9300facc16d9a79177ef;hp=3245593d740292f2a08b125c848c2630c387ee4e;hpb=0dd0c92a0acb3d4aaecb7fd56e6ca71e89fef54a;p=evince.git diff --git a/libdocument/ev-annotation.c b/libdocument/ev-annotation.c index 3245593d..2fadb978 100644 --- a/libdocument/ev-annotation.c +++ b/libdocument/ev-annotation.c @@ -31,6 +31,7 @@ enum { PROP_0, PROP_LABEL, PROP_OPACITY, + PROP_HAS_POPUP, PROP_RECTANGLE, PROP_IS_OPEN }; @@ -123,6 +124,7 @@ ev_annotation_text_new (EvPage *page) typedef struct { gchar *label; gdouble opacity; + gboolean has_popup; gboolean is_open; EvRectangle *rectangle; } EvAnnotationMarkupProps; @@ -147,6 +149,13 @@ ev_annotation_markup_iface_base_init (EvAnnotationMarkupIface *iface) G_MAXDOUBLE, 0, G_PARAM_READWRITE)); + g_object_interface_install_property (iface, + g_param_spec_boolean ("has_popup", + "Has popup", + "Whether the markup annotation has " + "a popup window associated", + TRUE, + G_PARAM_READWRITE)); g_object_interface_install_property (iface, g_param_spec_boxed ("rectangle", "Rectangle", @@ -211,6 +220,9 @@ ev_annotation_markup_set_property (GObject *object, case PROP_OPACITY: props->opacity = g_value_get_double (value); break; + case PROP_HAS_POPUP: + props->has_popup = g_value_get_boolean (value); + break; case PROP_RECTANGLE: ev_rectangle_free (props->rectangle); props->rectangle = g_value_dup_boxed (value); @@ -240,6 +252,9 @@ ev_annotation_markup_get_property (GObject *object, case PROP_OPACITY: g_value_set_double (value, props->opacity); break; + case PROP_HAS_POPUP: + g_value_set_boolean (value, props->has_popup); + break; case PROP_RECTANGLE: g_value_set_boxed (value, props->rectangle); break; @@ -259,6 +274,7 @@ ev_annotation_markup_class_install_properties (GObjectClass *klass) g_object_class_override_property (klass, PROP_LABEL, "label"); g_object_class_override_property (klass, PROP_OPACITY, "opacity"); + g_object_class_override_property (klass, PROP_HAS_POPUP, "has_popup"); g_object_class_override_property (klass, PROP_RECTANGLE, "rectangle"); g_object_class_override_property (klass, PROP_IS_OPEN, "is_open"); } @@ -306,6 +322,18 @@ ev_annotation_markup_set_opacity (EvAnnotationMarkup *markup, g_object_set (G_OBJECT (markup), "opacity", opacity, NULL); } +gboolean +ev_annotation_markup_has_popup (EvAnnotationMarkup *markup) +{ + gboolean retval; + + g_return_val_if_fail (EV_IS_ANNOTATION_MARKUP (markup), FALSE); + + g_object_get (G_OBJECT (markup), "has_popup", &retval, NULL); + + return retval; +} + void ev_annotation_markup_get_rectangle (EvAnnotationMarkup *markup, EvRectangle *ev_rect) @@ -359,62 +387,3 @@ ev_annotation_text_markup_iface_init (EvAnnotationMarkupIface *iface) { } -/* Annotation Mapping stuff */ -static void -ev_annotation_mapping_free_foreach (EvAnnotationMapping *mapping) -{ - g_object_unref (mapping->annotation); - g_free (mapping); -} - -void -ev_annotation_mapping_free (GList *annotation_mapping) -{ - if (!annotation_mapping) - return; - - g_list_foreach (annotation_mapping, (GFunc) ev_annotation_mapping_free_foreach, NULL); - g_list_free (annotation_mapping); -} - -EvAnnotation * -ev_annotation_mapping_find (GList *annotation_mapping, - gdouble x, - gdouble y) -{ - GList *list; - - for (list = annotation_mapping; list; list = list->next) { - EvAnnotationMapping *mapping = list->data; - - if ((x >= mapping->x1) && - (y >= mapping->y1) && - (x <= mapping->x2) && - (y <= mapping->y2)) { - return mapping->annotation; - } - } - - return NULL; -} - -void -ev_annotation_mapping_get_area (GList *annotation_mapping, - EvAnnotation *annotation, - EvRectangle *area) -{ - GList *list; - - for (list = annotation_mapping; list; list = list->next) { - EvAnnotationMapping *mapping = list->data; - - if (mapping->annotation == annotation) { - area->x1 = mapping->x1; - area->y1 = mapping->y1; - area->x2 = mapping->x2; - area->y2 = mapping->y2; - - break; - } - } -}