tdf#149609 release mouse before showing popups from calc grid window
[LibreOffice.git] / sw / inc / list.hxx
bloba329165c1da26ba1aa0a3b395d5ea9bf8d322e01
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 #ifndef INCLUDED_SW_INC_LIST_HXX
21 #define INCLUDED_SW_INC_LIST_HXX
23 #include <o3tl/deleter.hxx>
24 #include <rtl/ustring.hxx>
25 #include "SwNodeNum.hxx"
26 #include "pam.hxx"
27 #include <memory>
29 #include "swdllapi.h"
31 class SwDoc;
32 class SwNumRule;
33 class SwNodes;
35 class SwList
37 public:
38 SwList( const OUString& sListId,
39 SwNumRule& rDefaultListStyle,
40 const SwNodes& rNodes );
41 ~SwList() COVERITY_NOEXCEPT_FALSE;
43 const OUString & GetListId() const { return msListId; }
45 const OUString & GetDefaultListStyleName() const { return msDefaultListStyleName; }
47 void SetDefaultListStyleName(OUString const&);
49 void InsertListItem(SwNodeNum& rNodeNum,
50 bool isHiddenRedlines,
51 const int nLevel,
52 const SwDoc& rDoc);
53 static void RemoveListItem(SwNodeNum& rNodeNum, const SwDoc& rDoc);
55 void InvalidateListTree();
56 void ValidateListTree(const SwDoc& rDoc);
58 void MarkListLevel( const int nListLevel,
59 const bool bValue );
61 bool IsListLevelMarked( const int nListLevel ) const;
63 bool HasNodes() const;
65 private:
66 SwList( const SwList& ) = delete;
67 SwList& operator=( const SwList& ) = delete;
69 void NotifyItemsOnListLevel( const int nLevel );
71 // unique identifier of the list
72 const OUString msListId;
73 // default list style for the list items, identified by the list style name
74 OUString msDefaultListStyleName;
76 // list trees for certain document ranges
77 struct tListTreeForRange
79 /// tree always corresponds to document model
80 std::unique_ptr<SwNodeNum> pRoot;
81 /// Tree that is missing those nodes that are merged or hidden
82 /// by delete redlines; this is only used if there is a layout
83 /// that has IsHideRedlines() enabled.
84 /// A second tree is needed because not only are the numbers in
85 /// the nodes different, the structure of the tree may be different
86 /// as well, if a high-level node is hidden its children go under
87 /// the previous node on the same level.
88 /// The nodes of pRootRLHidden are a subset of the nodes of pRoot.
89 std::unique_ptr<SwNodeNum> pRootRLHidden;
90 /// top-level SwNodes section
91 std::unique_ptr<SwPaM> pSection;
92 tListTreeForRange(std::unique_ptr<SwNodeNum> p1, std::unique_ptr<SwNodeNum> p2, std::unique_ptr<SwPaM> p3)
93 : pRoot(std::move(p1)), pRootRLHidden(std::move(p2)), pSection(std::move(p3)) {}
95 std::vector<tListTreeForRange> maListTrees;
97 int mnMarkedListLevel;
99 #endif // INCLUDED_SW_INC_LIST_HXX
101 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */