WebCore:
[WebKit-https.git] / WebCore / page / FramePrivate.h
1 /* This file is part of the KDE project
2  *
3  * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
4  *                     1999-2001 Lars Knoll <knoll@kde.org>
5  *                     1999-2001 Antti Koivisto <koivisto@kde.org>
6  *                     2000-2001 Simon Hausmann <hausmann@kde.org>
7  *                     2000-2001 Dirk Mueller <mueller@kde.org>
8  *                     2000 Stefan Schimanski <1Stein@gmx.de>
9  * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Library General Public
13  * License as published by the Free Software Foundation; either
14  * version 2 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Library General Public License for more details.
20  *
21  * You should have received a copy of the GNU Library General Public License
22  * along with this library; see the file COPYING.LIB.  If not, write to
23  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24  * Boston, MA 02111-1307, USA.
25  */
26
27 #ifndef FramePrivate_h
28 #define FramePrivate_h
29
30 #include "Editor.h"
31 #include "FormData.h"
32 #include "FrameTree.h"
33 #include "KURL.h"
34 #include "SelectionController.h"
35 #include "StringHash.h"
36
37 namespace WebCore {
38
39     class IconLoader;
40     class TextResourceDecoder;
41     class UserStyleSheetLoader;
42
43     class FramePrivate {
44     public:
45         FramePrivate(Page*, Frame* parent, Frame* thisFrame, Element* ownerElement, PassRefPtr<EditorClient>);
46         ~FramePrivate();
47
48         Page* m_page;
49         FrameTree m_treeNode;
50         RefPtr<DOMWindow> m_domWindow;
51
52         Element* m_ownerElement;
53         RefPtr<FrameView> m_view;
54         RefPtr<Document> m_doc;
55
56         KJSProxy* m_jscript;
57         bool m_bJScriptEnabled : 1;
58         bool m_bJavaEnabled : 1;
59         bool m_bPluginsEnabled : 1;
60
61         Settings* m_settings;
62
63         String m_kjsStatusBarText;
64         String m_kjsDefaultStatusBarText;
65
66         int m_zoomFactor;
67
68         bool m_bMousePressed;
69         RefPtr<Node> m_mousePressNode; // node under the mouse when the mouse was pressed (set in the mouse handler)
70
71         TextGranularity m_selectionGranularity;
72         bool m_beganSelectingText;
73
74         SelectionController m_selectionController;
75         Selection m_mark;
76         Timer<Frame> m_caretBlinkTimer;
77         Editor m_editor;
78
79         bool m_caretVisible : 1;
80         bool m_caretPaint : 1;
81         bool m_isActive : 1;
82
83         int m_xPosForVerticalArrowNavigation;
84         RefPtr<CSSMutableStyleDeclaration> m_typingStyle;
85
86         IntPoint m_dragStartPos;
87
88         Timer<Frame> m_lifeSupportTimer;
89
90         FrameLoader* m_loader;
91         UserStyleSheetLoader* m_userStyleSheetLoader;
92         
93         Timer<Frame> m_autoscrollTimer;
94         RenderObject* m_autoscrollRenderer;
95         bool m_mouseDownMayStartAutoscroll;
96         bool m_mouseDownMayStartDrag;
97         
98         RefPtr<Node> m_elementToDraw;
99         PaintRestriction m_paintRestriction;
100         
101         bool m_markedTextUsesUnderlines;
102         Vector<MarkedTextUnderline> m_markedTextUnderlines;
103         bool m_highlightTextMatches;
104         bool m_windowHasFocus;
105         
106         bool m_inViewSourceMode;
107
108         unsigned frameCount;
109
110         bool m_prohibitsScrolling;
111     };
112 }
113
114 #endif