#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
encoder->encode(editorRect);
encoder->encode(updateEditorRectOnly);
+ encoder->encode(isOnlyImageSelection);
#if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
encoder->encode(underlineState);
encoder->encode(italicState);
if (!decoder->decode(result.updateEditorRectOnly))
return false;
+ if (!decoder->decode(result.isOnlyImageSelection))
+ return false;
+
#if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
if (!decoder->decode(result.underlineState))
return false;
, cursorPosition(0)
#endif
#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
+ , isOnlyImageSelection(false)
, updateEditorRectOnly(false)
, underlineState(0)
, italicState(0)
#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
WebCore::IntRect editorRect;
bool updateEditorRectOnly;
+ bool isOnlyImageSelection;
#if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
int underlineState;
int italicState;
if (handle->isLeft()) {
basePosition.setX(leftRect.x());
- basePosition.setY(leftRect.y() + (leftRect.height()/2));
+ if(editorState.isOnlyImageSelection)
+ basePosition.setY(leftRect.y() + (leftRect.height()));
+ else
+ basePosition.setY(leftRect.y() + (leftRect.height()/2));
} else {
basePosition.setX(rightRect.x() + rightRect.width());
- basePosition.setY(rightRect.y() + (rightRect.height()/2));
+ if(editorState.isOnlyImageSelection)
+ basePosition.setY(leftRect.y() + (leftRect.height()));
+ else
+ basePosition.setY(rightRect.y() + (rightRect.height()/2));
}
handle->setBasePositionForMove(m_viewImpl->transformToScene().mapPoint(basePosition));
#endif
#if ENABLE(TIZEN_ISF_PORT)
+ result.isOnlyImageSelection = isSelectionOnlyImage();
Element* rootEditableElement = frame->selection()->rootEditableElement();
if (!rootEditableElement)
return result;
void selectClosestWord(const WebCore::IntPoint&, bool& result);
void setLeftSelection(const WebCore::IntPoint&, const int direction, int& result);
void setRightSelection(const WebCore::IntPoint&, const int direction, int& result);
+ bool isSelectionOnlyImage() const;
void getSelectionHandlers(WebCore::IntRect& leftRect, WebCore::IntRect& rightRect, WebCore::IntRect& updateEditorRect);
void getSelectionText(String& result);
void selectionRangeClear(bool& result);
}
}
+bool WebPage::isSelectionOnlyImage() const
+{
+ bool isImage = false;
+ Frame* focusedFrame = m_page->focusController()->focusedOrMainFrame();
+ if (!focusedFrame->selection()->isRange())
+ return isImage;
+
+ RefPtr<Range> selectedRange = focusedFrame->selection()->toNormalizedRange();
+ Vector<IntRect> rects;
+ selectedRange->boundingBoxEx(rects, true);
+ unsigned size = rects.size();
+ if(size == 1) {
+ Node* startNode = selectedRange->startContainer();
+ Node* endNode = selectedRange->endContainer();
+ if(startNode == endNode) {
+ if(endNode && endNode->isContainerNode() && !(endNode->hasTagName(HTMLNames::imgTag))) {
+ WebCore::Node *child = static_cast<const ContainerNode*>(endNode)->firstChild();
+ while(child) {
+ if(child->hasTagName(HTMLNames::imgTag)) {
+ isImage = true;
+ break;
+ }
+ child = child->traverseNextNode(endNode);
+ }
+ }
+ else {
+ if(endNode->hasTagName(HTMLNames::imgTag))
+ isImage = true;
+ }
+ }
+ }
+ return isImage;
+}
+
void WebPage::getSelectionHandlers(IntRect& leftRect, IntRect& rightRect, WebCore::IntRect& updatedEditorRect)
{
Frame* focusedFrame = m_page->focusController()->focusedOrMainFrame();