Browse Source

fixes #5429

svn changeset:14590/svn branch:6.4
tags/6.7.0.beta1
Matti Tahvonen 14 years ago
parent
commit
d35ddf57ee
1 changed files with 53 additions and 21 deletions
  1. 53
    21
      src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

+ 53
- 21
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java View File

} }
} }


if (!isFocusable()) {
scrollBodyPanel.getElement().setTabIndex(-1);
} else {
scrollBodyPanel.getElement().setTabIndex(0);
}
setProperTabIndex();


rendering = false; rendering = false;
headerChangedDuringUpdate = false; headerChangedDuringUpdate = false;
} else { } else {
ev.createDragImage(getElement(), true); ev.createDragImage(getElement(), true);
} }
// because we are preventing the default (due to
// prevent text selection) we must ensure
// gaining the focus.
ensureFocus();
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} else if (event.getCtrlKey() } else if (event.getCtrlKey()
|| event.getMetaKey() || event.getMetaKey()
&& selectMode == SELECT_MODE_MULTI && selectMode == SELECT_MODE_MULTI
&& multiselectmode == MULTISELECT_MODE_DEFAULT) { && multiselectmode == MULTISELECT_MODE_DEFAULT) {

// because we are preventing the default (due to
// prevent text selection) we must ensure
// gaining the focus.
ensureFocus();
// Prevent default text selection in Firefox // Prevent default text selection in Firefox
event.preventDefault(); event.preventDefault();


event.stopPropagation(); event.stopPropagation();
} }


if (!isFocusable()) {
scrollBodyPanel.getElement().setTabIndex(-1);
} else {
scrollBodyPanel.getElement().setTabIndex(0);
}

break; break;
case Event.ONMOUSEOUT: case Event.ONMOUSEOUT:
mDown = false; mDown = false;
// render properly // render properly
} }
} }

/**
* Ensure the component has a focus.
*
* TODO the current implementation simply always calls focus for the
* component. In case the Table at some point implements focus/blur
* listeners, this method needs to be evolved to conditionally call
* focus only if not currently focused.
*/
protected void ensureFocus() {
focus();
}
} }


/** /**
super.setWidth(""); super.setWidth("");
} }


if (!isFocusable()) {
scrollBodyPanel.getElement().setTabIndex(-1);
} else {
scrollBodyPanel.getElement().setTabIndex(0);
}
/*
* setting width may affect wheter the component has scrollbars ->
* needs scrolling or not
*/
setProperTabIndex();
} }


private static final int LAZY_COLUMN_ADJUST_TIMEOUT = 300; private static final int LAZY_COLUMN_ADJUST_TIMEOUT = 300;
Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement()); Util.runWebkitOverflowAutoFix(scrollBodyPanel.getElement());
} }


if (!isFocusable()) {
scrollBodyPanel.getElement().setTabIndex(-1);
} else {
scrollBodyPanel.getElement().setTabIndex(0);
}
/*
* setting height may affect wheter the component has scrollbars ->
* needs scrolling or not
*/
setProperTabIndex();

} }


/* /*
public void focus() { public void focus() {
scrollBodyPanel.focus(); scrollBodyPanel.focus();
} }

/**
* Sets the proper tabIndex for scrollBodyPanel (the focusable elemen in the
* component).
*
* If the component has no explicit tabIndex a zero is given (default
* tabbing order based on dom hierarchy) or -1 if the component does not
* need to gain focus. The component needs no focus if it has no scrollabars
* (not scrollable) and not selectable. Note that in the future shortcut
* actions may need focus.
*
*/
private void setProperTabIndex() {
if (!isFocusable()) {
scrollBodyPanel.getElement().setTabIndex(-1);
} else {
// TODO tabindex from UIDL
scrollBodyPanel.getElement().setTabIndex(0);
}
}
} }

Loading…
Cancel
Save