cid#1607171 Data race condition
[LibreOffice.git] / sd / source / ui / slidesorter / controller / SlsDragAndDropContext.hxx
blobcbeb11f8b2260507325e110ffb7b0e93051e5b08
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #pragma once
22 #include <controller/SlsInsertionIndicatorHandler.hxx>
24 class Point;
26 namespace sd::slidesorter
28 class SlideSorter;
31 namespace sd::slidesorter::controller
33 /** A DragAndDropContext object handles an active drag and drop operation.
34 When the mouse is moved from one slide sorter window to another the
35 target SlideSorter object is exchanged accordingly.
37 class DragAndDropContext
39 public:
40 /** Create a substitution display of the currently selected pages or,
41 when provided, the pages in the transferable.
43 explicit DragAndDropContext(SlideSorter& rSlideSorter);
44 ~DragAndDropContext() COVERITY_NOEXCEPT_FALSE;
46 /** Call this method (for example as reaction to ESC key press) to avoid
47 processing (ie moving or inserting) the substitution when the called
48 DragAndDropContext object is destroyed.
50 void Dispose();
52 /** Move the substitution display by the distance the mouse has
53 travelled since the last call to this method or to
54 CreateSubstitution(). The given point becomes the new anchor.
56 void UpdatePosition(const Point& rMousePosition, const InsertionIndicatorHandler::Mode eMode,
57 const bool bAllowAutoScroll);
59 void SetTargetSlideSorter();
61 private:
62 SlideSorter* mpTargetSlideSorter;
63 sal_Int32 mnInsertionIndex;
66 } // end of namespace ::sd::slidesorter::controller
68 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */