diff --git a/src/gui/manager.cpp b/src/gui/manager.cpp index 3e2ab2010..16119d2d8 100644 --- a/src/gui/manager.cpp +++ b/src/gui/manager.cpp @@ -1428,12 +1428,11 @@ static Message* new_mouse_msg(int type, JWidget widget) msg->mouse.x = jmouse_x(0); msg->mouse.y = jmouse_y(0); - msg->mouse.flags = - type == JM_BUTTONRELEASED ? jmouse_b(1): - jmouse_b(0); - msg->mouse.left = msg->mouse.flags & 1 ? true: false; - msg->mouse.right = msg->mouse.flags & 2 ? true: false; - msg->mouse.middle = msg->mouse.flags & 4 ? true: false; + msg->mouse.flags = (type == JM_BUTTONRELEASED ? jmouse_b(1): + jmouse_b(0)); + msg->mouse.left = ((jmouse_b(0) & 1) != (jmouse_b(1) & 1)); + msg->mouse.right = ((jmouse_b(0) & 2) != (jmouse_b(1) & 2)); + msg->mouse.middle = ((jmouse_b(0) & 4) != (jmouse_b(1) & 4)); if (widget != NULL) jmessage_add_dest(msg, widget); diff --git a/src/tools/tool_loop_manager.cpp b/src/tools/tool_loop_manager.cpp index 5d93b308f..6cd6819b1 100644 --- a/src/tools/tool_loop_manager.cpp +++ b/src/tools/tool_loop_manager.cpp @@ -216,14 +216,18 @@ void ToolLoopManager::snapToGrid(bool flexible, Point& point) void ToolLoopManager::calculateDirtyArea(ToolLoop* loop, const Points& points, Rect& dirty_area) { - Point minpt, maxpt; - calculateMinMax(points, minpt, maxpt); + if (points.size() > 0) { + Point minpt, maxpt; + calculateMinMax(points, minpt, maxpt); - // Expand the dirty-area with the pen width - Rect r1, r2; - loop->getPointShape()->getModifiedArea(loop, minpt.x, minpt.y, r1); - loop->getPointShape()->getModifiedArea(loop, maxpt.x, maxpt.y, r2); - dirty_area = r1.createUnion(r2); + // Expand the dirty-area with the pen width + Rect r1, r2; + loop->getPointShape()->getModifiedArea(loop, minpt.x, minpt.y, r1); + loop->getPointShape()->getModifiedArea(loop, maxpt.x, maxpt.y, r2); + dirty_area = r1.createUnion(r2); + } + else + dirty_area = Rect(); } void ToolLoopManager::calculateMinMax(const Points& points, Point& minpt, Point& maxpt)