зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1005937 - Make the 'touch-action' CSS property apply to all elements except non-replaced inline elements and table rows, columns, and row/column-groups. r=dbaron
This commit is contained in:
Родитель
54b86897a5
Коммит
da58719217
|
@ -18,18 +18,27 @@ namespace widget {
|
||||||
uint32_t
|
uint32_t
|
||||||
ContentHelper::GetTouchActionFromFrame(nsIFrame* aFrame)
|
ContentHelper::GetTouchActionFromFrame(nsIFrame* aFrame)
|
||||||
{
|
{
|
||||||
if (!aFrame || !aFrame->GetContent() || !aFrame->GetContent()->GetPrimaryFrame()) {
|
// If aFrame is null then return default value
|
||||||
// If frame is invalid or null then return default value.
|
if (!aFrame) {
|
||||||
return NS_STYLE_TOUCH_ACTION_AUTO;
|
return NS_STYLE_TOUCH_ACTION_AUTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!aFrame->IsFrameOfType(nsIFrame::eSVG) && !aFrame->IsFrameOfType(nsIFrame::eBlockFrame)) {
|
// The touch-action CSS property applies to: all elements except:
|
||||||
// Since touch-action property can be applied to only svg and block-level
|
// non-replaced inline elements, table rows, row groups, table columns, and column groups
|
||||||
// elements we ignore frames of other types.
|
bool isNonReplacedInlineElement = aFrame->IsFrameOfType(nsIFrame::eLineParticipant);
|
||||||
|
if (isNonReplacedInlineElement) {
|
||||||
return NS_STYLE_TOUCH_ACTION_AUTO;
|
return NS_STYLE_TOUCH_ACTION_AUTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (aFrame->GetContent()->GetPrimaryFrame()->StyleDisplay()->mTouchAction);
|
const nsStyleDisplay* disp = aFrame->StyleDisplay();
|
||||||
|
bool isTableElement = disp->IsInnerTableStyle() &&
|
||||||
|
disp->mDisplay != NS_STYLE_DISPLAY_TABLE_CELL &&
|
||||||
|
disp->mDisplay != NS_STYLE_DISPLAY_TABLE_CAPTION;
|
||||||
|
if (isTableElement) {
|
||||||
|
return NS_STYLE_TOUCH_ACTION_AUTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
return disp->mTouchAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Загрузка…
Ссылка в новой задаче