Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(265)

Side by Side Diff: Source/core/page/EventHandler.cpp

Issue 110533004: CHR-1706: Context menu with Shift+F10 shows out of Opera when web contents scrolled (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 2804 matching lines...) Expand 10 before | Expand all | Expand 10 after
2815 #if OS(WIN) 2815 #if OS(WIN)
2816 int rightAligned = ::GetSystemMetrics(SM_MENUDROPALIGNMENT); 2816 int rightAligned = ::GetSystemMetrics(SM_MENUDROPALIGNMENT);
2817 #else 2817 #else
2818 int rightAligned = 0; 2818 int rightAligned = 0;
2819 #endif 2819 #endif
2820 IntPoint location; 2820 IntPoint location;
2821 2821
2822 Element* focusedElement = doc->focusedElement(); 2822 Element* focusedElement = doc->focusedElement();
2823 FrameSelection& selection = m_frame->selection(); 2823 FrameSelection& selection = m_frame->selection();
2824 Position start = selection.selection().start(); 2824 Position start = selection.selection().start();
2825 bool shouldTranslateToRootView = true;
2825 2826
2826 if (start.deprecatedNode() && (selection.rootEditableElement() || selection. isRange())) { 2827 if (start.deprecatedNode() && (selection.rootEditableElement() || selection. isRange())) {
2827 RefPtr<Range> selectionRange = selection.toNormalizedRange(); 2828 RefPtr<Range> selectionRange = selection.toNormalizedRange();
2828 IntRect firstRect = m_frame->editor().firstRectForRange(selectionRange.g et()); 2829 IntRect firstRect = m_frame->editor().firstRectForRange(selectionRange.g et());
2829 2830
2830 int x = rightAligned ? firstRect.maxX() : firstRect.x(); 2831 int x = rightAligned ? firstRect.maxX() : firstRect.x();
2831 // In a multiline edit, firstRect.maxY() would endup on the next line, s o -1. 2832 // In a multiline edit, firstRect.maxY() would endup on the next line, s o -1.
2832 int y = firstRect.maxY() ? firstRect.maxY() - 1 : 0; 2833 int y = firstRect.maxY() ? firstRect.maxY() - 1 : 0;
2833 location = IntPoint(x, y); 2834 location = IntPoint(x, y);
2834 } else if (focusedElement) { 2835 } else if (focusedElement) {
2835 RenderBoxModelObject* box = focusedElement->renderBoxModelObject(); 2836 RenderBoxModelObject* box = focusedElement->renderBoxModelObject();
2836 if (!box) 2837 if (!box)
2837 return false; 2838 return false;
2838 IntRect clippedRect = box->pixelSnappedAbsoluteClippedOverflowRect(); 2839 IntRect clippedRect = box->pixelSnappedAbsoluteClippedOverflowRect();
2839 location = IntPoint(clippedRect.x(), clippedRect.maxY() - 1); 2840 location = IntPoint(clippedRect.x(), clippedRect.maxY() - 1);
2840 } else { 2841 } else {
2841 location = IntPoint( 2842 location = IntPoint(
2842 rightAligned ? view->contentsWidth() - kContextMenuMargin : kContext MenuMargin, 2843 rightAligned ? view->contentsWidth() - kContextMenuMargin : kContext MenuMargin,
2843 kContextMenuMargin); 2844 kContextMenuMargin);
2845 shouldTranslateToRootView = false;
2844 } 2846 }
2845 2847
2846 m_frame->view()->setCursor(pointerCursor()); 2848 m_frame->view()->setCursor(pointerCursor());
2847 2849
2848 IntPoint position = view->contentsToRootView(location); 2850 IntPoint position = shouldTranslateToRootView ? view->contentsToRootView(loc ation) : location;
2849 IntPoint globalPosition = view->hostWindow()->rootViewToScreen(IntRect(posit ion, IntSize())).location(); 2851 IntPoint globalPosition = view->hostWindow()->rootViewToScreen(IntRect(posit ion, IntSize())).location();
2850 2852
2851 Node* targetNode = doc->focusedElement(); 2853 Node* targetNode = doc->focusedElement();
2852 if (!targetNode) 2854 if (!targetNode)
2853 targetNode = doc; 2855 targetNode = doc;
2854 2856
2855 // Use the focused node as the target for hover and active. 2857 // Use the focused node as the target for hover and active.
2856 HitTestResult result(position); 2858 HitTestResult result(position);
2857 result.setInnerNode(targetNode); 2859 result.setInnerNode(targetNode);
2858 doc->updateHoverActiveState(HitTestRequest::Active | HitTestRequest::Confusi ngAndOftenMisusedDisallowShadowContent, result.innerElement()); 2860 doc->updateHoverActiveState(HitTestRequest::Active | HitTestRequest::Confusi ngAndOftenMisusedDisallowShadowContent, result.innerElement());
(...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after
4009 unsigned EventHandler::accessKeyModifiers() 4011 unsigned EventHandler::accessKeyModifiers()
4010 { 4012 {
4011 #if OS(MACOSX) 4013 #if OS(MACOSX)
4012 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 4014 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
4013 #else 4015 #else
4014 return PlatformEvent::AltKey; 4016 return PlatformEvent::AltKey;
4015 #endif 4017 #endif
4016 } 4018 }
4017 4019
4018 } // namespace WebCore 4020 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698