This seems to have been broken for quite a while - the add/subtract/intersect cursor will display when you press the appropriate key, but things revert to replace as soon as you press the mouse button to make the selection. I've tracked this down to rect_select_cursor_update(), which updates whether the selection will add/subtract/intersect/replace, and it seems that it gets called when you press the mouse button to make the selection, but mevent->state no longer contains the data needed in selection_tool_update_op_state() - it seems to always be 0. I believe that rect_select_cursor_update() needs to look at mevent->type to determine whether it should call selection_tool_update_op_state(), but my knowledge of Gdk is lacking, and I'm not sure what the value in mevent->type means... I made a quick hacky fix along those lines, and it does indeed made add/subtract/intersecting selections work again. Hopefully someone who knows a little more can make an appropriate fix. later, Andrew Kieschnick