From 80307a94e1cc36992c756ee4181537e998535404 Mon Sep 17 00:00:00 2001 From: speare Date: Sat, 14 Mar 2009 18:24:07 +0000 Subject: [PATCH] allow full mouse dragging, rotating, scaling, etc. if a single layer is the selection --- src/select-context.cpp | 5 +++++ src/sp-item-group.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/select-context.cpp b/src/select-context.cpp index 0e35c6546..b2a05dca2 100644 --- a/src/select-context.cpp +++ b/src/select-context.cpp @@ -515,6 +515,8 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (!sc->moved) { item_in_group = desktop->item_at_point(Geom::Point(event->button.x, event->button.y), TRUE); group_at_point = desktop->group_at_point(Geom::Point(event->button.x, event->button.y)); + if (SP_IS_LAYER(selection->single())) + group_at_point = SP_GROUP(selection->single()); // group-at-point is meant to be topmost item if it's a group, // not topmost group of all items at point @@ -577,9 +579,12 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) seltrans->resetState(); selection->toggle(sc->item); } else { + SPObject* single = selection->single(); // without shift, increase state (i.e. toggle scale/rotation handles) if (selection->includes(sc->item)) { seltrans->increaseState(); + } else if (SP_IS_LAYER(single) && single->isAncestorOf(sc->item)) { + seltrans->increaseState(); } else { seltrans->resetState(); selection->set(sc->item); diff --git a/src/sp-item-group.h b/src/sp-item-group.h index 1cf4e9912..65a51055a 100644 --- a/src/sp-item-group.h +++ b/src/sp-item-group.h @@ -22,6 +22,8 @@ #define SP_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_GROUP)) #define SP_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_GROUP)) +#define SP_IS_LAYER(obj) (SP_IS_GROUP(obj) && SP_GROUP(obj)->layerMode() == SPGroup::LAYER) + class CGroup; struct SPGroup : public SPLPEItem { -- 2.30.2