X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=ioncore%2Ftags.c;h=6f1e02980307b35bc1ca029b5b13205520c845d9;hb=ae4260bb64817c11f9a7140324cd3e3ba113e297;hp=383af0c116a0a3a67c2454dd644acfa7757d1b92;hpb=803afbc1cd633f6c025bcd9537e9b7e9aedadd0d;p=ion3.git diff --git a/ioncore/tags.c b/ioncore/tags.c index 383af0c..6f1e029 100644 --- a/ioncore/tags.c +++ b/ioncore/tags.c @@ -3,10 +3,7 @@ * * Copyright (c) Tuomo Valkonen 1999-2007. * - * Ion is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. + * See the included file LICENSE for details. */ #include @@ -46,7 +43,8 @@ bool region_set_tagged(WRegion *reg, int sp) /*EXTL_DOC * Change tagging state of \var{reg} as defined by \var{how} - * (set/unset/toggle). Resulting state is returned. + * (one of \codestr{set}, \codestr{unset}, or \codestr{toggle}). + * The resulting state is returned. */ EXTL_EXPORT_AS(WRegion, set_tagged) bool region_set_tagged_extl(WRegion *reg, const char *how) @@ -70,9 +68,9 @@ bool region_is_tagged(WRegion *reg) * Untag all regions. */ EXTL_EXPORT -void ioncore_clear_tags() +void ioncore_tagged_clear() { - while(ioncore_tagged_take_first()!=NULL) + while(ioncore_tagged_first(TRUE)!=NULL) /* nothing */; } @@ -84,28 +82,29 @@ void ioncore_clear_tags() /*EXTL_DOC - * Returns first tagged object. + * Returns first tagged object, untagging it as well if \var{untag} is set. */ EXTL_SAFE EXTL_EXPORT -WRegion *ioncore_tagged_first() +WRegion *ioncore_tagged_first(bool untag) { - return (WRegion*)OBJLIST_FIRST(WRegion*, taglist); -} - - -WRegion *ioncore_tagged_take_first() -{ - WRegion *reg=(WRegion*)objlist_take_first(&taglist); + WRegion *reg; - if(reg!=NULL){ - reg->flags&=~REGION_TAGGED; - region_notify_change(reg, ioncore_g.notifies.tag); + if(!untag){ + reg=(WRegion*)OBJLIST_FIRST(WRegion*, taglist); + }else{ + reg=(WRegion*)objlist_take_first(&taglist); + + if(reg!=NULL){ + reg->flags&=~REGION_TAGGED; + region_notify_change(reg, ioncore_g.notifies.tag); + } } return reg; } + /*EXTL_DOC * Iterate over tagged regions until \var{iterfn} returns \code{false}. * The function itself returns \code{true} if it reaches the end of list