Remove dropzone_item and hovered_item from GtkView

This commit is contained in:
Arjan Molenaar 2020-10-11 21:08:53 +02:00
parent 347a34486d
commit 6febe7ec52
6 changed files with 20 additions and 51 deletions

View File

@ -398,10 +398,10 @@ Special context for drawing the item. It contains a cairo context and properties
DrawContext(
painter=self,
cairo=cairo,
selected=(item in view.selected_items),
focused=(item is view.focused_item),
hovered=(item is view.hovered_item),
dropzone=(item is view.dropzone_item),
selected=(item in view.selection.selected_items),
focused=(item is view.selection.focused_item),
hovered=(item is view.selection.hovered_item),
dropzone=(item is view.selection.dropzone_item),
draw_all=self.draw_all,
)
```

View File

@ -205,10 +205,10 @@ Special context for drawing the item. It contains a cairo context and properties
DrawContext(
painter=self,
cairo=cairo,
selected=(item in view.selected_items),
focused=(item is view.focused_item),
hovered=(item is view.hovered_item),
dropzone=(item is view.dropzone_item),
selected=(item in view.selection.selected_items),
focused=(item is view.selection.focused_item),
hovered=(item is view.selection.hovered_item),
dropzone=(item is view.selection.dropzone_item),
draw_all=self.draw_all,
)

View File

@ -334,7 +334,7 @@ class FocusedItemPainter(Painter):
def paint(self, context):
view = self.view
item = view.hovered_item
item = view.selection.hovered_item
if item and item is view.focused_item:
PaintFocused(item, view).paint(context)

View File

@ -184,7 +184,7 @@ class SegmentHandleFinder(ItemHandleFinder):
def get_handle_at_point(self, pos):
view = self.view
item = view.hovered_item
item = view.selection.hovered_item
handle = None
if self.item is view.focused_item:
try:
@ -244,7 +244,7 @@ class LineSegmentPainter(ItemPaintFocused):
def paint(self, context):
view = self.view
item = view.hovered_item
item = view.selection.hovered_item
if item and item is view.focused_item:
cr = context.cairo
h = item.handles()

View File

@ -221,7 +221,7 @@ class HoverTool(Tool):
def on_motion_notify(self, event):
view = self.view
pos = event.get_coords()[1:]
view.hovered_item = Finder(view).get_item_at_point(pos)
view.selection.set_hovered_item(Finder(view).get_item_at_point(pos))
class ItemTool(Tool):
@ -239,7 +239,7 @@ class ItemTool(Tool):
self._movable_items = set()
def get_item(self):
return self.view.hovered_item
return self.view.selection.hovered_item
def movable_items(self):
"""Filter the items that should eventually be moved.
@ -273,7 +273,7 @@ class ItemTool(Tool):
if item:
if (
view.hovered_item in view.selected_items
view.selection.hovered_item in view.selected_items
and event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK
):
selection = Selection(item, view)
@ -353,8 +353,9 @@ class HandleTool(Tool):
(item.Handle), that handle is grabbed and can be dragged around.
"""
view = self.view
selection = view.selection
item, handle = HandleFinder(view.hovered_item, view).get_handle_at_point(
item, handle = HandleFinder(selection.hovered_item, view).get_handle_at_point(
event.get_coords()[1:]
)
@ -365,11 +366,11 @@ class HandleTool(Tool):
if not (
event.get_state()[1]
& (Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK)
or view.hovered_item in view.selected_items
or selection.hovered_item in selection.selected_items
):
del view.selected_items
view.hovered_item = item
view.focused_item = item
selection.unselect_all()
selection.set_hovered_item(item)
selection.set_focused_item(item)
self.motion_handle = None

View File

@ -272,38 +272,6 @@ class GtkView(Gtk.DrawingArea, Gtk.Scrollable, View):
"The item with focus (receives key events a.o.)",
)
def _set_hovered_item(self, item):
"""Set the hovered item."""
# self.queue_draw_item(self._selection.hovered_item, item)
self._selection.set_hovered_item(item)
def _del_hovered_item(self):
"""Unset the hovered item."""
self._set_hovered_item(None)
hovered_item = property(
lambda s: s._selection.hovered_item,
_set_hovered_item,
_del_hovered_item,
"The item directly under the mouse pointer",
)
def _set_dropzone_item(self, item):
"""Set dropzone item."""
# self.queue_draw_item(self._selection.dropzone_item, item)
self._selection.set_dropzone_item(item)
def _del_dropzone_item(self):
"""Unset dropzone item."""
self._set_dropzone_item(None)
dropzone_item = property(
lambda s: s._selection.dropzone_item,
_set_dropzone_item,
_del_dropzone_item,
"The item which can group other items",
)
def select_in_rectangle(self, rect):
"""Select all items who have their bounding box within the rectangle.