25 #include "Frame.h" |
25 #include "Frame.h" |
26 #include "HitTestRequest.h" |
26 #include "HitTestRequest.h" |
27 #include "HitTestResult.h" |
27 #include "HitTestResult.h" |
28 #include "HTMLNames.h" |
28 #include "HTMLNames.h" |
29 #include "FrameTree.h" |
29 #include "FrameTree.h" |
30 #include <brctldefs.h> |
30 #include "BrCtlDefs.h" |
31 #include "WebCursor.h" |
31 #include "WebCursor.h" |
32 #include "StaticObjectsContainer.h" |
32 #include "StaticObjectsContainer.h" |
33 #include "Page.h" |
33 #include "Page.h" |
34 #include "WebView.h" |
34 #include "WebView.h" |
35 #include "WebFrame.h" |
35 #include "WebFrame.h" |
36 #include "WebFrameView.h" |
36 #include "WebFrameView.h" |
37 #include <wtf/RefPtr.h> |
37 #include <wtf/RefPtr.h> |
38 #include "EventHandler.h" |
38 #include "EventHandler.h" |
39 #include "webkitlogger.h" |
39 #include "WebKitLogger.h" |
40 #include "FocusController.h" |
40 #include "FocusController.h" |
41 #include "RenderListBox.h" |
41 #include "RenderListBox.h" |
42 #include "HTMLSelectElement.h" |
42 #include "HTMLSelectElement.h" |
43 #include "HTMLInputElement.h" |
43 #include "HTMLInputElement.h" |
44 |
44 |
137 if (elemVisibleRect.Intersects(m_webView->Rect())) { |
137 if (elemVisibleRect.Intersects(m_webView->Rect())) { |
138 |
138 |
139 elemVisibleRect.Intersection(m_webView->Rect()); |
139 elemVisibleRect.Intersection(m_webView->Rect()); |
140 if (horizontalDir == -1) { |
140 if (horizontalDir == -1) { |
141 focusPosition.iX = elemVisibleRect.iTl.iX; |
141 focusPosition.iX = elemVisibleRect.iTl.iX; |
142 focusPosition.iY = elemVisibleRect.iTl.iY; |
|
143 } |
142 } |
144 else if (horizontalDir == 1) { |
143 else if (horizontalDir == 1) { |
145 focusPosition.iX = elemVisibleRect.iBr.iX; |
144 focusPosition.iX = elemVisibleRect.iBr.iX; |
146 focusPosition.iY = elemVisibleRect.iTl.iY; |
|
147 } |
145 } |
148 |
146 |
149 if (verticalDir == -1) { |
147 if (verticalDir == -1) { |
150 focusPosition.iY = elemVisibleRect.iTl.iY; |
148 focusPosition.iY = elemVisibleRect.iTl.iY; |
151 focusPosition.iX = elemVisibleRect.iTl.iX; |
|
152 } |
149 } |
153 else if (verticalDir == 1) { |
150 else if (verticalDir == 1) { |
154 focusPosition.iY = elemVisibleRect.iBr.iY; |
151 focusPosition.iY = elemVisibleRect.iBr.iY; |
155 focusPosition.iX = elemVisibleRect.iTl.iX; |
|
156 } |
152 } |
157 |
153 |
158 if ((verticalDir == 0) && (horizontalDir == 0)) { |
154 if ((verticalDir == 0) && (horizontalDir == 0)) { |
159 focusPosition = elemVisibleRect.Center(); |
155 focusPosition = elemVisibleRect.Center(); |
160 } |
156 } |
431 Math::Pow(y, (m_focusPosition.iY - point.iY), 2.0); |
427 Math::Pow(y, (m_focusPosition.iY - point.iY), 2.0); |
432 Math::Sqrt(euclidianDistance, x + y); |
428 Math::Sqrt(euclidianDistance, x + y); |
433 sameAxisDist = horizontalDir * (point.iX - m_focusPosition.iX) + verticalDir * (point.iY - m_focusPosition.iY); |
429 sameAxisDist = horizontalDir * (point.iX - m_focusPosition.iX) + verticalDir * (point.iY - m_focusPosition.iY); |
434 otherAxisDist = (horizontalDir) ? (point.iY - m_focusPosition.iY) : (point.iX - m_focusPosition.iX) ; |
430 otherAxisDist = (horizontalDir) ? (point.iY - m_focusPosition.iY) : (point.iX - m_focusPosition.iX) ; |
435 otherAxisDist = (otherAxisDist < 0 ) ? (otherAxisDist * -1) : otherAxisDist; |
431 otherAxisDist = (otherAxisDist < 0 ) ? (otherAxisDist * -1) : otherAxisDist; |
436 if (verticalDir) { // vertical |
432 if (horizontalDir) { // horizontal |
437 if (rect.iBr.iY < m_selectedElementRect.iTl.iY || rect.iTl.iY > m_selectedElementRect.iBr.iY) { |
433 if (rect.iBr.iY < m_selectedElementRect.iTl.iY || rect.iTl.iY > m_selectedElementRect.iBr.iY) { |
438 overlap = 0; |
434 overlap = 0; |
439 } |
435 } |
440 else { |
436 else { |
441 int top = max(m_selectedElementRect.iTl.iY, rect.iTl.iY); |
437 int top = max(m_selectedElementRect.iTl.iY, rect.iTl.iY); |