mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-04-02 12:32:55 +00:00
Bug 254755. deCOMtaminate nsIFormControlFrame. patch by jpl24, r+sr=roc
This commit is contained in:
parent
f40254bbd6
commit
b65c655ed9
@ -56,7 +56,7 @@
|
||||
#include "nsIDocument.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsUnicharUtils.h"
|
||||
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
class nsHTMLButtonElement : public nsGenericHTMLFormElement,
|
||||
public nsIDOMHTMLButtonElement,
|
||||
@ -250,7 +250,7 @@ nsHTMLButtonElement::SetFocus(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetFocus(PR_TRUE, PR_TRUE);
|
||||
formControlFrame->ScrollIntoView(aPresContext);
|
||||
nsLayoutUtils::ScrollIntoView(formControlFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,6 +84,7 @@
|
||||
#include "nsLinebreakConverter.h" //to strip out carriage returns
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsUnicharUtils.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
#include "nsIDOMMutationEvent.h"
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
@ -607,7 +608,7 @@ nsHTMLInputElement::GetValue(nsAString& aValue)
|
||||
}
|
||||
|
||||
if (frameOwnsValue) {
|
||||
formControlFrame->GetProperty(nsHTMLAtoms::value, aValue);
|
||||
formControlFrame->GetFormProperty(nsHTMLAtoms::value, aValue);
|
||||
} else {
|
||||
if (!GET_BOOLBIT(mBitField, BF_VALUE_CHANGED) || !mValue) {
|
||||
GetDefaultValue(aValue);
|
||||
@ -695,8 +696,7 @@ nsHTMLInputElement::SetValueInternal(const nsAString& aValue,
|
||||
}
|
||||
// If the frame owns the value, set the value in the frame
|
||||
if (frameOwnsValue) {
|
||||
nsCOMPtr<nsPresContext> presContext = GetPresContext();
|
||||
formControlFrame->SetProperty(presContext, nsHTMLAtoms::value, aValue);
|
||||
formControlFrame->SetFormProperty(nsHTMLAtoms::value, aValue);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -1075,7 +1075,7 @@ nsHTMLInputElement::SetFocus(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetFocus(PR_TRUE, PR_TRUE);
|
||||
formControlFrame->ScrollIntoView(aPresContext);
|
||||
nsLayoutUtils::ScrollIntoView(formControlFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1170,8 +1170,7 @@ nsHTMLInputElement::SelectAll(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetProperty(aPresContext, nsHTMLAtoms::select,
|
||||
EmptyString());
|
||||
formControlFrame->SetFormProperty(nsHTMLAtoms::select, EmptyString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2094,10 +2093,6 @@ nsHTMLInputElement::Reset()
|
||||
break;
|
||||
}
|
||||
|
||||
// Notify frame that it has been reset
|
||||
if (formControlFrame) {
|
||||
formControlFrame->OnContentReset();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,7 @@
|
||||
#include "nsHTMLAtoms.h"
|
||||
#include "nsStyleConsts.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "nsMappedAttributes.h"
|
||||
#include "nsIForm.h"
|
||||
#include "nsIFormSubmission.h"
|
||||
@ -77,6 +78,8 @@
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIFormControlFrame.h"
|
||||
#include "nsIComboboxControlFrame.h"
|
||||
#include "nsIListControlFrame.h"
|
||||
#include "nsIFrame.h"
|
||||
|
||||
#include "nsDOMError.h"
|
||||
@ -411,6 +414,12 @@ protected:
|
||||
return !isMultiple && size <= 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for dispatching ContentReset notifications to list
|
||||
* and combo box frames.
|
||||
*/
|
||||
void DispatchContentReset();
|
||||
|
||||
/** The options[] array */
|
||||
nsHTMLOptionCollection* mOptions;
|
||||
/** false if the parser is in the middle of adding children. */
|
||||
@ -1566,7 +1575,7 @@ nsHTMLSelectElement::SetFocus(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetFocus(PR_TRUE, PR_TRUE);
|
||||
formControlFrame->ScrollIntoView(aPresContext);
|
||||
nsLayoutUtils::ScrollIntoView(formControlFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1844,10 +1853,7 @@ nsHTMLSelectElement::RestoreState(nsPresState* aState)
|
||||
|
||||
// Don't flush, if the frame doesn't exist yet it doesn't care if
|
||||
// we're reset or not.
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_FALSE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->OnContentReset();
|
||||
}
|
||||
DispatchContentReset();
|
||||
}
|
||||
|
||||
return PR_FALSE;
|
||||
@ -1943,10 +1949,7 @@ nsHTMLSelectElement::Reset()
|
||||
// Don't flush, if there's no frame yet it won't care about us being
|
||||
// reset even if we forced it to be created now.
|
||||
//
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_FALSE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->OnContentReset();
|
||||
}
|
||||
DispatchContentReset();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@ -2026,6 +2029,27 @@ nsHTMLSelectElement::DispatchDOMEvent(const nsAString& aName)
|
||||
aName, PR_TRUE, PR_TRUE);
|
||||
}
|
||||
|
||||
void nsHTMLSelectElement::DispatchContentReset() {
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_FALSE);
|
||||
if (formControlFrame) {
|
||||
// Only dispatch content reset notification if this is a list control
|
||||
// frame or combo box control frame.
|
||||
if (IsCombobox()) {
|
||||
nsIComboboxControlFrame* comboFrame = nsnull;
|
||||
CallQueryInterface(formControlFrame, &comboFrame);
|
||||
if (comboFrame) {
|
||||
comboFrame->OnContentReset();
|
||||
}
|
||||
} else {
|
||||
nsIListControlFrame* listFrame = nsnull;
|
||||
CallQueryInterface(formControlFrame, &listFrame);
|
||||
if (listFrame) {
|
||||
listFrame->OnContentReset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
//
|
||||
// nsHTMLOptionCollection implementation
|
||||
|
@ -69,6 +69,7 @@
|
||||
#include "nsIDOMText.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsITextContent.h"
|
||||
#include "nsLayoutUtils.h"
|
||||
|
||||
static NS_DEFINE_CID(kXULControllersCID, NS_XULCONTROLLERS_CID);
|
||||
|
||||
@ -253,7 +254,7 @@ nsHTMLTextAreaElement::SetFocus(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetFocus(PR_TRUE, PR_TRUE);
|
||||
formControlFrame->ScrollIntoView(aPresContext);
|
||||
nsLayoutUtils::ScrollIntoView(formControlFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -311,8 +312,7 @@ nsHTMLTextAreaElement::SelectAll(nsPresContext* aPresContext)
|
||||
nsIFormControlFrame* formControlFrame = GetFormControlFrame(PR_TRUE);
|
||||
|
||||
if (formControlFrame) {
|
||||
formControlFrame->SetProperty(aPresContext, nsHTMLAtoms::select,
|
||||
EmptyString());
|
||||
formControlFrame->SetFormProperty(nsHTMLAtoms::select, EmptyString());
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
@ -404,8 +404,7 @@ nsHTMLTextAreaElement::SetValueInternal(const nsAString& aValue,
|
||||
textControlFrame->OwnsValue(&frameOwnsValue);
|
||||
}
|
||||
if (frameOwnsValue) {
|
||||
formControlFrame->SetProperty(GetPresContext(),
|
||||
nsHTMLAtoms::value, aValue);
|
||||
formControlFrame->SetFormProperty(nsHTMLAtoms::value, aValue);
|
||||
}
|
||||
else {
|
||||
if (mValue) {
|
||||
@ -766,7 +765,6 @@ nsHTMLTextAreaElement::Reset()
|
||||
GetDefaultValue(resetVal);
|
||||
rv = SetValue(resetVal);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
formControlFrame->OnContentReset();
|
||||
}
|
||||
SetValueChanged(PR_FALSE);
|
||||
return NS_OK;
|
||||
|
@ -37,6 +37,7 @@
|
||||
|
||||
#include "nsLayoutUtils.h"
|
||||
#include "nsIFrame.h"
|
||||
#include "nsIFormControlFrame.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsFrameList.h"
|
||||
@ -597,3 +598,20 @@ nsLayoutUtils::BinarySearchForPosition(nsIRenderingContext* aRendContext,
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
nsLayoutUtils::ScrollIntoView(nsIFormControlFrame* aFormFrame)
|
||||
{
|
||||
NS_ASSERTION(aFormFrame, "Null frame passed into ScrollIntoView");
|
||||
nsIFrame* frame = nsnull;
|
||||
CallQueryInterface(aFormFrame, &frame);
|
||||
NS_ASSERTION(frame, "Form frame did not implement nsIFrame.");
|
||||
if (frame) {
|
||||
nsIPresShell* presShell = frame->GetPresContext()->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(frame,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,7 @@
|
||||
#define nsLayoutUtils_h__
|
||||
|
||||
class nsIFrame;
|
||||
class nsIFormControlFrame;
|
||||
class nsPresContext;
|
||||
class nsIContent;
|
||||
class nsIAtom;
|
||||
@ -321,6 +322,12 @@ public:
|
||||
PRInt32 aCursorPos,
|
||||
PRInt32& aIndex,
|
||||
PRInt32& aTextWidth);
|
||||
|
||||
/**
|
||||
* Scroll the given form control frame into view.
|
||||
* @param aFormFrame Frame to scroll into view.
|
||||
*/
|
||||
static void ScrollIntoView(nsIFormControlFrame* aFormFrame);
|
||||
};
|
||||
|
||||
#endif // nsLayoutUtils_h__
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include "nsIDOMEventReceiver.h"
|
||||
#include "nsFrameManager.h"
|
||||
#include "nsFormControlFrame.h"
|
||||
#include "nsGfxButtonControlFrame.h"
|
||||
#include "nsHTMLAtoms.h"
|
||||
#include "nsCSSAnonBoxes.h"
|
||||
#include "nsHTMLParts.h"
|
||||
@ -418,64 +419,6 @@ nsComboboxControlFrame::Init(nsPresContext* aPresContext,
|
||||
return nsAreaFrame::Init(aPresContext, aContent, aParent, aContext, aPrevInFlow);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
void
|
||||
nsComboboxControlFrame::InitializeControl(nsPresContext* aPresContext)
|
||||
{
|
||||
nsFormControlHelper::Reset(this, aPresContext);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsComboboxControlFrame::GetFormControlType() const
|
||||
{
|
||||
return NS_FORM_SELECT;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
nscoord
|
||||
nsComboboxControlFrame::GetVerticalBorderWidth(float aPixToTwip) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
nscoord
|
||||
nsComboboxControlFrame::GetHorizontalBorderWidth(float aPixToTwip) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
nscoord
|
||||
nsComboboxControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
nscoord
|
||||
nsComboboxControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nsComboboxControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
@ -505,19 +448,6 @@ nsComboboxControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsComboboxControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nsComboboxControlFrame::ShowPopup(PRBool aShowPopup)
|
||||
{
|
||||
@ -627,17 +557,16 @@ nsComboboxControlFrame::ReflowComboChildFrame(nsIFrame* aFrame,
|
||||
return rv;
|
||||
}
|
||||
|
||||
// Suggest a size for the child frame.
|
||||
// Only frames which implement the nsIFormControlFrame interface and
|
||||
// honor the SetSuggestedSize method will be placed and sized correctly.
|
||||
|
||||
// Resize the child button frame to the specified size.
|
||||
void
|
||||
nsComboboxControlFrame::SetChildFrameSize(nsIFrame* aFrame, nscoord aWidth, nscoord aHeight)
|
||||
nsComboboxControlFrame::SetButtonFrameSize(const nsSize& aSize)
|
||||
{
|
||||
nsIFormControlFrame* fcFrame = nsnull;
|
||||
nsresult result = aFrame->QueryInterface(NS_GET_IID(nsIFormControlFrame), (void**)&fcFrame);
|
||||
if (NS_SUCCEEDED(result) && (nsnull != fcFrame)) {
|
||||
fcFrame->SetSuggestedSize(aWidth, aHeight);
|
||||
// Check that the child frame being resized is an nsGfxButtonControlFrame.
|
||||
if (mButtonFrame->GetType() == nsLayoutAtoms::gfxButtonControlFrame) {
|
||||
NS_STATIC_CAST(nsGfxButtonControlFrame*, mButtonFrame)->SetSuggestedSize(aSize);
|
||||
} else {
|
||||
// This function should never be called with another frame type.
|
||||
NS_NOTREACHED("Wrong type in SetButtonFrameSize");
|
||||
}
|
||||
}
|
||||
|
||||
@ -841,7 +770,6 @@ nsComboboxControlFrame::ReflowCombobox(nsPresContext * aPresContext,
|
||||
nsHTMLReflowMetrics& aDesiredSize,
|
||||
nsReflowStatus& aStatus,
|
||||
nsIFrame * aDisplayFrame,
|
||||
nsIFrame * aDropDownBtn,
|
||||
nscoord& aDisplayWidth,
|
||||
nscoord aBtnWidth,
|
||||
const nsMargin& aBorderPadding,
|
||||
@ -880,8 +808,8 @@ nsComboboxControlFrame::ReflowCombobox(nsPresContext * aPresContext,
|
||||
nsRect displayRect(0,0,0,0);
|
||||
aBtnWidth = 0;
|
||||
aDisplayFrame->SetRect(displayRect);
|
||||
aDropDownBtn->SetRect(buttonRect);
|
||||
SetChildFrameSize(aDropDownBtn, aBtnWidth, aDesiredSize.height);
|
||||
mButtonFrame->SetRect(buttonRect);
|
||||
SetButtonFrameSize(nsSize(aBtnWidth, aDesiredSize.height));
|
||||
aDesiredSize.width = 0;
|
||||
aDesiredSize.height = dispHeight + aBorderPadding.top + aBorderPadding.bottom;
|
||||
// XXX What about ascent and descent?
|
||||
@ -893,7 +821,7 @@ nsComboboxControlFrame::ReflowCombobox(nsPresContext * aPresContext,
|
||||
|
||||
// This sets the button to be a specific size
|
||||
// so no matter what it reflows at these values
|
||||
SetChildFrameSize(aDropDownBtn, aBtnWidth, dispHeight);
|
||||
SetButtonFrameSize(nsSize(aBtnWidth, dispHeight));
|
||||
|
||||
#ifdef FIX_FOR_BUG_53259
|
||||
// Make sure we obey min/max-width and min/max-height
|
||||
@ -1012,11 +940,11 @@ nsComboboxControlFrame::ReflowCombobox(nsPresContext * aPresContext,
|
||||
}
|
||||
}
|
||||
#endif // IBMBIDI
|
||||
aDropDownBtn->SetRect(buttonRect);
|
||||
mButtonFrame->SetRect(buttonRect);
|
||||
|
||||
// since we have changed the height of the button
|
||||
// make sure it has these new values
|
||||
SetChildFrameSize(aDropDownBtn, aBtnWidth, aDesiredSize.height);
|
||||
SetButtonFrameSize(nsSize(aBtnWidth, aDesiredSize.height));
|
||||
|
||||
// This is a last minute adjustment, if the CSS width was set and
|
||||
// we calculated it to be a little big, then make sure we are no bigger the computed size
|
||||
@ -1239,7 +1167,7 @@ nsComboboxControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
// so do a simple reflow and bail out
|
||||
REFLOW_DEBUG_MSG("------------Reflowing AreaFrame and bailing----\n\n");
|
||||
ReflowCombobox(aPresContext, firstPassState, aDesiredSize, aStatus,
|
||||
mDisplayFrame, mButtonFrame, mItemDisplayWidth,
|
||||
mDisplayFrame, mItemDisplayWidth,
|
||||
scrollbarWidth, aReflowState.mComputedBorderPadding);
|
||||
REFLOW_COUNTER();
|
||||
UNCONSTRAINED_CHECK();
|
||||
@ -1297,8 +1225,7 @@ nsComboboxControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
REFLOW_DEBUG_MSG("---- Doing AreaFrame Reflow and then bailing out\n");
|
||||
// Do simple reflow and bail out
|
||||
ReflowCombobox(aPresContext, firstPassState, aDesiredSize, aStatus,
|
||||
mDisplayFrame, mButtonFrame,
|
||||
mItemDisplayWidth, scrollbarWidth,
|
||||
mDisplayFrame, mItemDisplayWidth, scrollbarWidth,
|
||||
aReflowState.mComputedBorderPadding,
|
||||
kSizeNotSet, PR_TRUE);
|
||||
REFLOW_DEBUG_MSG3("+** Done nsCCF DW: %d DH: %d\n\n", PX(aDesiredSize.width), PX(aDesiredSize.height));
|
||||
@ -1529,7 +1456,7 @@ nsComboboxControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
|
||||
// this reflows and makes and last minute adjustments
|
||||
ReflowCombobox(aPresContext, firstPassState, aDesiredSize, aStatus,
|
||||
mDisplayFrame, mButtonFrame, mItemDisplayWidth, scrollbarWidth,
|
||||
mDisplayFrame, mItemDisplayWidth, scrollbarWidth,
|
||||
aReflowState.mComputedBorderPadding, size.height);
|
||||
|
||||
// The dropdown was reflowed UNCONSTRAINED before, now we need to reflow it
|
||||
@ -1607,13 +1534,6 @@ nsComboboxControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIFrame*
|
||||
nsComboboxControlFrame::GetFrameForPoint(const nsPoint& aPoint,
|
||||
@ -1935,26 +1855,32 @@ nsComboboxControlFrame::HandleEvent(nsPresContext* aPresContext,
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue)
|
||||
nsresult
|
||||
nsComboboxControlFrame::SetFormProperty(nsIAtom* aName, const nsAString& aValue)
|
||||
{
|
||||
nsIFormControlFrame* fcFrame = nsnull;
|
||||
nsresult result = CallQueryInterface(mDropdownFrame, &fcFrame);
|
||||
if ((NS_SUCCEEDED(result)) && (nsnull != fcFrame)) {
|
||||
return fcFrame->SetProperty(aPresContext, aName, aValue);
|
||||
if (NS_FAILED(result)) {
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
if (fcFrame) {
|
||||
return fcFrame->SetFormProperty(aName, aValue);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult
|
||||
nsComboboxControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
nsIFormControlFrame* fcFrame = nsnull;
|
||||
nsresult result = CallQueryInterface(mDropdownFrame, &fcFrame);
|
||||
if ((NS_SUCCEEDED(result)) && (nsnull != fcFrame)) {
|
||||
return fcFrame->GetProperty(aName, aValue);
|
||||
if(NS_FAILED(result)) {
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
if (fcFrame) {
|
||||
return fcFrame->GetFormProperty(aName, aValue);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsIFrame*
|
||||
@ -1974,10 +1900,8 @@ nsComboboxControlFrame::CreateAnonymousContent(nsPresContext* aPresContext,
|
||||
//
|
||||
// Note: The value attribute of the display content is set when an item is selected in the dropdown list.
|
||||
// If the content specified below does not honor the value attribute than nothing will be displayed.
|
||||
// In addition, if the frame created by content below for does not implement the nsIFormControlFrame
|
||||
// interface and honor the SetSuggestedSize method the placement and size of the display area will not
|
||||
// match what is normally desired for a combobox.
|
||||
|
||||
// In addition, if the frame created by content below for the button is not an nsGfxScrollFrame
|
||||
// things will go wrong ... see SetButtonFrameSize.
|
||||
|
||||
// For now the content that is created corresponds to two input buttons. It would be better to create the
|
||||
// tag as something other than input, but then there isn't any way to create a button frame since it
|
||||
@ -2105,17 +2029,6 @@ nsComboboxControlFrame::CreateFrameFor(nsPresContext* aPresContext,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsComboboxControlFrame::Destroy(nsPresContext* aPresContext)
|
||||
{
|
||||
@ -2178,9 +2091,8 @@ nsComboboxControlFrame::SetInitialChildList(nsPresContext* aPresContext,
|
||||
|
||||
for (nsIFrame * child = aChildList; child;
|
||||
child = child->GetNextSibling()) {
|
||||
nsIFormControlFrame* fcFrame = nsnull;
|
||||
CallQueryInterface(child, &fcFrame);
|
||||
if (fcFrame && fcFrame->GetFormControlType() == NS_FORM_INPUT_BUTTON) {
|
||||
nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(child->GetContent());
|
||||
if (formControl && formControl->GetType() == NS_FORM_INPUT_BUTTON) {
|
||||
mButtonFrame = child;
|
||||
break;
|
||||
}
|
||||
@ -2385,15 +2297,12 @@ void nsComboboxControlFrame::FireValueChangeEvent()
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
void
|
||||
nsComboboxControlFrame::OnContentReset()
|
||||
{
|
||||
if (mListControlFrame) {
|
||||
nsCOMPtr<nsIFormControlFrame> formControl =
|
||||
do_QueryInterface(mListControlFrame);
|
||||
formControl->OnContentReset();
|
||||
mListControlFrame->OnContentReset();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -143,26 +143,10 @@ public:
|
||||
|
||||
virtual nsIFrame* GetContentInsertionFrame();
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
void ScrollIntoView(nsPresContext* aPresContext);
|
||||
virtual void InitializeControl(nsPresContext* aPresContext);
|
||||
NS_IMETHOD OnContentReset();
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
virtual nscoord GetVerticalBorderWidth(float aPixToTwip) const;
|
||||
virtual nscoord GetHorizontalBorderWidth(float aPixToTwip) const;
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;
|
||||
// nsIFormControlFrame
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
virtual void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
|
||||
//nsIComboboxControlFrame
|
||||
NS_IMETHOD IsDroppedDown(PRBool * aDoDropDown) { *aDoDropDown = mDroppedDown; return NS_OK; }
|
||||
@ -175,6 +159,7 @@ public:
|
||||
NS_IMETHOD GetIndexOfDisplayArea(PRInt32* aSelectedIndex);
|
||||
NS_IMETHOD RedisplaySelectedText();
|
||||
NS_IMETHOD_(PRInt32) UpdateRecentIndex(PRInt32 aIndex);
|
||||
virtual void OnContentReset();
|
||||
|
||||
// nsISelectControlFrame
|
||||
NS_IMETHOD AddOption(nsPresContext* aPresContext, PRInt32 index);
|
||||
@ -237,7 +222,7 @@ public:
|
||||
protected:
|
||||
void ShowPopup(PRBool aShowPopup);
|
||||
void ShowList(nsPresContext* aPresContext, PRBool aShowList);
|
||||
void SetChildFrameSize(nsIFrame* aFrame, nscoord aWidth, nscoord aHeight);
|
||||
void SetButtonFrameSize(const nsSize& aSize);
|
||||
void CheckFireOnChange();
|
||||
void FireValueChangeEvent();
|
||||
nsresult RedisplayText(PRInt32 aIndex);
|
||||
@ -251,7 +236,6 @@ protected:
|
||||
nsHTMLReflowMetrics& aDesiredSize,
|
||||
nsReflowStatus& aStatus,
|
||||
nsIFrame * aDisplayFrame,
|
||||
nsIFrame * aDropDownBtn,
|
||||
nscoord& aDisplayWidth,
|
||||
nscoord aBtnWidth,
|
||||
const nsMargin& aBorderPadding,
|
||||
|
@ -254,13 +254,6 @@ nsFileControlFrame::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
return nsHTMLContainerFrame::QueryInterface(aIID, aInstancePtr);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsFileControlFrame::GetFormControlType() const
|
||||
{
|
||||
return NS_FORM_INPUT_FILE;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nsFileControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
@ -273,18 +266,6 @@ nsFileControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsFileControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called when our browse button is clicked
|
||||
*/
|
||||
@ -332,7 +313,7 @@ nsFileControlFrame::MouseClick(nsIDOMEvent* aMouseEvent)
|
||||
|
||||
// Set default directry and filename
|
||||
nsAutoString defaultName;
|
||||
GetProperty(nsHTMLAtoms::value, defaultName);
|
||||
GetFormProperty(nsHTMLAtoms::value, defaultName);
|
||||
|
||||
nsCOMPtr<nsILocalFile> currentFile = do_CreateInstance("@mozilla.org/file/local;1");
|
||||
if (currentFile && !defaultName.IsEmpty()) {
|
||||
@ -378,8 +359,7 @@ nsFileControlFrame::MouseClick(nsIDOMEvent* aMouseEvent)
|
||||
nsAutoString unicodePath;
|
||||
result = localFile->GetPath(unicodePath);
|
||||
if (!unicodePath.IsEmpty()) {
|
||||
mTextFrame->SetProperty(GetPresContext(), nsHTMLAtoms::value,
|
||||
unicodePath);
|
||||
mTextFrame->SetFormProperty(nsHTMLAtoms::value, unicodePath);
|
||||
// May need to fire an onchange here
|
||||
mTextFrame->CheckFireOnChange();
|
||||
return NS_OK;
|
||||
@ -402,9 +382,9 @@ NS_IMETHODIMP nsFileControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
|
||||
if (eReflowReason_Initial == aReflowState.reason) {
|
||||
mTextFrame = GetTextControlFrame(aPresContext, this);
|
||||
if (!mTextFrame) return NS_ERROR_UNEXPECTED;
|
||||
NS_ENSURE_TRUE(mTextFrame, NS_ERROR_UNEXPECTED);
|
||||
if (mCachedState) {
|
||||
mTextFrame->SetProperty(aPresContext, nsHTMLAtoms::value, *mCachedState);
|
||||
mTextFrame->SetFormProperty(nsHTMLAtoms::value, *mCachedState);
|
||||
delete mCachedState;
|
||||
mCachedState = nsnull;
|
||||
}
|
||||
@ -524,15 +504,6 @@ nsFileControlFrame::GetSkipSides() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFileControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsFileControlFrame::SyncAttr(PRInt32 aNameSpaceID, nsIAtom* aAttribute,
|
||||
PRInt32 aWhichControls)
|
||||
@ -604,49 +575,23 @@ nsFileControlFrame::GetFrameName(nsAString& aResult) const
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFileControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsFileControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsFileControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsFileControlFrame::SetProperty(nsPresContext* aPresContext,
|
||||
nsIAtom* aName,
|
||||
NS_IMETHODIMP nsFileControlFrame::SetFormProperty(nsIAtom* aName,
|
||||
const nsAString& aValue)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (nsHTMLAtoms::value == aName) {
|
||||
if (mTextFrame) {
|
||||
mTextFrame->SetValue(aValue);
|
||||
} else {
|
||||
if (mCachedState) delete mCachedState;
|
||||
mCachedState = new nsString(aValue);
|
||||
if (!mCachedState) rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ENSURE_TRUE(mCachedState, NS_ERROR_OUT_OF_MEMORY);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsFileControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult
|
||||
nsFileControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
aValue.Truncate(); // initialize out param
|
||||
|
||||
@ -681,8 +626,3 @@ nsFileControlFrame::Paint(nsPresContext* aPresContext,
|
||||
return nsFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFileControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -73,12 +73,12 @@ public:
|
||||
const nsRect& aDirtyRect,
|
||||
nsFramePaintLayer aWhichLayer,
|
||||
PRUint32 aFlags = 0);
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
NS_IMETHOD OnContentReset();
|
||||
|
||||
// nsIFormControlFrame
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
virtual void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
|
||||
NS_IMETHOD Reflow(nsPresContext* aCX,
|
||||
nsHTMLReflowMetrics& aDesiredSize,
|
||||
@ -92,7 +92,7 @@ public:
|
||||
#ifdef NS_DEBUG
|
||||
NS_IMETHOD GetFrameName(nsAString& aResult) const;
|
||||
#endif
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight) { return NS_OK; };
|
||||
|
||||
virtual nsIFrame* GetFrameForPoint(const nsPoint& aPoint,
|
||||
nsFramePaintLayer aWhichLayer);
|
||||
NS_IMETHOD AttributeChanged(PRInt32 aNameSpaceID,
|
||||
@ -100,19 +100,7 @@ public:
|
||||
PRInt32 aModType);
|
||||
virtual PRBool IsLeaf() const;
|
||||
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
void ScrollIntoView(nsPresContext* aPresContext);
|
||||
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;
|
||||
|
||||
// from nsIAnonymousContentCreator
|
||||
NS_IMETHOD CreateAnonymousContent(nsPresContext* aPresContext,
|
||||
|
@ -108,8 +108,6 @@ nsFormControlFrame::nsFormControlFrame()
|
||||
: nsLeafFrame()
|
||||
{
|
||||
mDidInit = PR_FALSE;
|
||||
mSuggestedWidth = NS_FORMSIZE_NOTSET;
|
||||
mSuggestedHeight = NS_FORMSIZE_NOTSET;
|
||||
|
||||
// Reflow Optimization
|
||||
mCacheSize.width = kSizeNotSet;
|
||||
@ -529,7 +527,7 @@ nsFormControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
DISPLAY_REFLOW(aPresContext, this, aReflowState, aDesiredSize, aStatus);
|
||||
|
||||
if (!mDidInit) {
|
||||
InitializeControl(aPresContext);
|
||||
RegUnRegAccessKey(aPresContext, NS_STATIC_CAST(nsIFrame*, this), PR_TRUE);
|
||||
mDidInit = PR_TRUE;
|
||||
}
|
||||
|
||||
@ -580,29 +578,11 @@ nsFormControlFrame::RegUnRegAccessKey(nsPresContext* aPresContext, nsIFrame * aF
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
void
|
||||
nsFormControlFrame::InitializeControl(nsPresContext* aPresContext)
|
||||
{
|
||||
RegUnRegAccessKey(aPresContext, NS_STATIC_CAST(nsIFrame*, this), PR_TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
nsFormControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nsFormControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: this ::GetIID() method has no meaning in life and should be
|
||||
* removed.
|
||||
@ -621,30 +601,6 @@ nsFormControlFrame::GetCID()
|
||||
return kButtonCID;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsFormControlFrame::GetFormControlType() const
|
||||
{
|
||||
return nsFormControlHelper::GetType(mContent);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::GetValue(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetValueAttr(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_METHOD
|
||||
nsFormControlFrame::HandleEvent(nsPresContext* aPresContext,
|
||||
nsGUIEvent* aEvent,
|
||||
@ -697,14 +653,6 @@ nsFormControlFrame::GetStyleSize(nsPresContext* aPresContext,
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsFormControlFrame::GetCurrentCheckState(PRBool *aState)
|
||||
{
|
||||
@ -714,27 +662,19 @@ nsFormControlFrame::GetCurrentCheckState(PRBool *aState)
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue)
|
||||
nsresult
|
||||
nsFormControlFrame::SetFormProperty(nsIAtom* aName, const nsAString& aValue)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult
|
||||
nsFormControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
aValue.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFormControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
mSuggestedWidth = aWidth;
|
||||
mSuggestedHeight = aHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsFormControlFrame::GetScreenHeight(nsPresContext* aPresContext,
|
||||
nscoord& aHeight)
|
||||
|
@ -150,10 +150,6 @@ public:
|
||||
*/
|
||||
virtual const nsIID& GetIID();
|
||||
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
NS_IMETHOD GetValue(nsAString* aName);
|
||||
|
||||
/**
|
||||
* Respond to a enter key being pressed
|
||||
*/
|
||||
@ -164,13 +160,7 @@ public:
|
||||
*/
|
||||
virtual void ControlChanged(nsPresContext* aPresContext) {}
|
||||
|
||||
/**
|
||||
* Chance to Initialize to a default value
|
||||
*/
|
||||
virtual void InitializeControl(nsPresContext* aPresContext);
|
||||
|
||||
virtual void SetFocus(PRBool aOn = PR_TRUE, PRBool aRepaint = PR_FALSE);
|
||||
virtual void ScrollIntoView(nsPresContext* aPresContext);
|
||||
|
||||
/**
|
||||
* Perform opertations before the widget associated with this frame has been
|
||||
@ -187,8 +177,6 @@ public:
|
||||
|
||||
virtual void SetClickPoint(nscoord aX, nscoord aY);
|
||||
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
|
||||
/**
|
||||
* Get the width and height of this control based on CSS
|
||||
* @param aPresContext the presentation context
|
||||
@ -199,11 +187,12 @@ public:
|
||||
const nsHTMLReflowState& aReflowState,
|
||||
nsSize& aSize);
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
// nsIFormControlFrame
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
// Resize Reflow Optimiaztion Methods
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
|
||||
// Resize Reflow Optimization Methods
|
||||
static void SetupCachedSizes(nsSize& aCacheSize,
|
||||
nscoord& aCachedAscent,
|
||||
nscoord& aCachedMaxElementWidth,
|
||||
@ -253,9 +242,6 @@ protected:
|
||||
const nsHTMLReflowState& aReflowState,
|
||||
nsHTMLReflowMetrics& aDesiredLayoutSize,
|
||||
nsSize& aDesiredWidgetSize);
|
||||
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
|
||||
//
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Utility methods for managing checkboxes and radiobuttons
|
||||
@ -268,12 +254,10 @@ protected:
|
||||
*/
|
||||
|
||||
void GetCurrentCheckState(PRBool* aState);
|
||||
|
||||
|
||||
nsSize mWidgetSize;
|
||||
PRBool mDidInit;
|
||||
nsPoint mLastClickPoint;
|
||||
nscoord mSuggestedWidth;
|
||||
nscoord mSuggestedHeight;
|
||||
|
||||
// Reflow Optimization
|
||||
nsSize mCacheSize;
|
||||
|
@ -118,7 +118,6 @@ void nsFormControlHelper::GetBoolString(const PRBool aValue,
|
||||
aResult.Assign(NS_STRING_FALSE);
|
||||
}
|
||||
|
||||
|
||||
nsresult nsFormControlHelper::GetFrameFontFM(nsIFrame* aFrame,
|
||||
nsIFontMetrics** aFontMet)
|
||||
{
|
||||
@ -319,26 +318,6 @@ nsFormControlHelper::PaintCheckMark(nsIRenderingContext& aRenderingContext,
|
||||
aRenderingContext.FillPolygon(checkedPolygon, checkpoints);
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsFormControlHelper::GetName(nsIContent* aContent, nsAString* aResult)
|
||||
{
|
||||
NS_PRECONDITION(aResult, "Null pointer bad!");
|
||||
return aContent->IsContentOfType(nsIContent::eHTML) &&
|
||||
aContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::name, *aResult);
|
||||
}
|
||||
|
||||
PRInt32
|
||||
nsFormControlHelper::GetType(nsIContent* aContent)
|
||||
{
|
||||
nsCOMPtr<nsIFormControl> formControl(do_QueryInterface(aContent));
|
||||
if (formControl) {
|
||||
return formControl->GetType();
|
||||
}
|
||||
|
||||
NS_ERROR("Form control not implementing nsIFormControl, assuming TEXT type");
|
||||
return NS_FORM_INPUT_TEXT;
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsFormControlHelper::GetValueAttr(nsIContent* aContent, nsAString* aResult)
|
||||
{
|
||||
|
@ -94,20 +94,7 @@ public:
|
||||
static PRBool GetDisabled(nsIContent* aContent) {
|
||||
return aContent->HasAttr(kNameSpaceID_None, nsHTMLAtoms::disabled);
|
||||
};
|
||||
/**
|
||||
* Get the name of the form control
|
||||
* @param aContent the content to get the name of
|
||||
* @param aResult the returned name of the form control [OUT]
|
||||
* @return PR_TRUE if things go well
|
||||
* PR_FALSE if the name attribute is undefined
|
||||
*/
|
||||
static PRBool GetName(nsIContent* aContent, nsAString* aResult);
|
||||
/**
|
||||
* Get the type of the form control (if it's not obvious from the frame type)
|
||||
* @param aContent the content to get the name of
|
||||
* @return the returned type of the form control [OUT]
|
||||
*/
|
||||
static PRInt32 GetType(nsIContent* aContent);
|
||||
|
||||
/**
|
||||
* Get the value of the form control (if it's just living in an attr)
|
||||
* @param aContent the content to get the name of
|
||||
@ -137,6 +124,7 @@ public:
|
||||
* if aValue equals PR_TRUE, "0" if aValue equals PR_FALSE.
|
||||
*/
|
||||
static void GetBoolString(const PRBool aValue, nsAString& aResult);
|
||||
|
||||
|
||||
static void GetRepChars(char& char1, char& char2) {
|
||||
char1 = 'W';
|
||||
|
@ -60,10 +60,9 @@
|
||||
|
||||
const nscoord kSuggestedNotSet = -1;
|
||||
|
||||
nsGfxButtonControlFrame::nsGfxButtonControlFrame()
|
||||
nsGfxButtonControlFrame::nsGfxButtonControlFrame():
|
||||
mSuggestedSize(kSuggestedNotSet, kSuggestedNotSet)
|
||||
{
|
||||
mSuggestedWidth = kSuggestedNotSet;
|
||||
mSuggestedHeight = kSuggestedNotSet;
|
||||
}
|
||||
|
||||
nsIFrame*
|
||||
@ -126,11 +125,11 @@ NS_IMETHODIMP
|
||||
nsGfxButtonControlFrame::AddComputedBorderPaddingToDesiredSize(nsHTMLReflowMetrics& aDesiredSize,
|
||||
const nsHTMLReflowState& aSuggestedReflowState)
|
||||
{
|
||||
if (kSuggestedNotSet == mSuggestedWidth) {
|
||||
if (kSuggestedNotSet == mSuggestedSize.width) {
|
||||
aDesiredSize.width += aSuggestedReflowState.mComputedBorderPadding.left + aSuggestedReflowState.mComputedBorderPadding.right;
|
||||
}
|
||||
|
||||
if (kSuggestedNotSet == mSuggestedHeight) {
|
||||
if (kSuggestedNotSet == mSuggestedSize.height) {
|
||||
aDesiredSize.height += aSuggestedReflowState.mComputedBorderPadding.top + aSuggestedReflowState.mComputedBorderPadding.bottom;
|
||||
}
|
||||
return NS_OK;
|
||||
@ -144,10 +143,10 @@ nsGfxButtonControlFrame::CreateAnonymousContent(nsPresContext* aPresContext,
|
||||
{
|
||||
// Get the text from the "value" attribute.
|
||||
// If it is zero length, set it to a default value (localized)
|
||||
nsAutoString initvalue;
|
||||
GetValue(&initvalue);
|
||||
nsAutoString initValue;
|
||||
nsFormControlHelper::GetValueAttr(mContent, &initValue);
|
||||
nsXPIDLString value;
|
||||
value.Assign(initvalue);
|
||||
value.Assign(initValue);
|
||||
if (value.IsEmpty()) {
|
||||
// Generate localized label.
|
||||
// We can't make any assumption as to what the default would be
|
||||
@ -274,8 +273,10 @@ else {
|
||||
nsresult
|
||||
nsGfxButtonControlFrame::GetDefaultLabel(nsXPIDLString& aString)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRInt32 type = GetFormControlType();
|
||||
nsCOMPtr<nsIFormControl> form = do_QueryInterface(mContent);
|
||||
NS_ENSURE_TRUE(form, NS_ERROR_UNEXPECTED);
|
||||
|
||||
PRInt32 type = form->GetType();
|
||||
const char *prop;
|
||||
if (type == NS_FORM_INPUT_RESET) {
|
||||
prop = "Reset";
|
||||
@ -334,17 +335,17 @@ nsGfxButtonControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
DO_GLOBAL_REFLOW_COUNT("nsGfxButtonControlFrame", aReflowState.reason);
|
||||
DISPLAY_REFLOW(aPresContext, this, aReflowState, aDesiredSize, aStatus);
|
||||
|
||||
if ((kSuggestedNotSet != mSuggestedWidth) ||
|
||||
(kSuggestedNotSet != mSuggestedHeight)) {
|
||||
if ((kSuggestedNotSet != mSuggestedSize.width) ||
|
||||
(kSuggestedNotSet != mSuggestedSize.height)) {
|
||||
nsHTMLReflowState suggestedReflowState(aReflowState);
|
||||
|
||||
// Honor the suggested width and/or height.
|
||||
if (kSuggestedNotSet != mSuggestedWidth) {
|
||||
suggestedReflowState.mComputedWidth = mSuggestedWidth;
|
||||
if (kSuggestedNotSet != mSuggestedSize.width) {
|
||||
suggestedReflowState.mComputedWidth = mSuggestedSize.width;
|
||||
}
|
||||
|
||||
if (kSuggestedNotSet != mSuggestedHeight) {
|
||||
suggestedReflowState.mComputedHeight = mSuggestedHeight;
|
||||
if (kSuggestedNotSet != mSuggestedSize.height) {
|
||||
suggestedReflowState.mComputedHeight = mSuggestedSize.height;
|
||||
}
|
||||
|
||||
return nsHTMLButtonControlFrame::Reflow(aPresContext, aDesiredSize, suggestedReflowState, aStatus);
|
||||
@ -356,13 +357,11 @@ nsGfxButtonControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
return nsHTMLButtonControlFrame::Reflow(aPresContext, aDesiredSize, aReflowState, aStatus);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGfxButtonControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
void
|
||||
nsGfxButtonControlFrame::SetSuggestedSize(const nsSize& aSize)
|
||||
{
|
||||
mSuggestedWidth = aWidth;
|
||||
mSuggestedHeight = aHeight;
|
||||
mSuggestedSize = aSize;
|
||||
//mState |= NS_FRAME_IS_DIRTY;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -78,8 +78,6 @@ public:
|
||||
|
||||
virtual nsIAtom* GetType() const;
|
||||
|
||||
// nsFormControlFrame
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
#ifdef DEBUG
|
||||
NS_IMETHOD GetFrameName(nsAString& aResult) const;
|
||||
#endif
|
||||
@ -98,6 +96,14 @@ public:
|
||||
PRInt32 aModType);
|
||||
|
||||
virtual PRBool IsLeaf() const;
|
||||
|
||||
/**
|
||||
* Set the suggested size of the button.
|
||||
* @note This is NOT a virtual function, it will be called
|
||||
* directly on an instance of this class.
|
||||
* @param aSize The suggested size.
|
||||
*/
|
||||
void SetSuggestedSize(const nsSize& aSize);
|
||||
|
||||
protected:
|
||||
NS_IMETHOD AddComputedBorderPaddingToDesiredSize(nsHTMLReflowMetrics& aDesiredSize,
|
||||
@ -110,8 +116,7 @@ private:
|
||||
NS_IMETHOD_(nsrefcnt) AddRef() { return NS_OK; }
|
||||
NS_IMETHOD_(nsrefcnt) Release() { return NS_OK; }
|
||||
|
||||
nscoord mSuggestedWidth;
|
||||
nscoord mSuggestedHeight;
|
||||
nsSize mSuggestedSize;
|
||||
nsCOMPtr<nsITextContent> mTextContent;
|
||||
};
|
||||
|
||||
|
@ -284,8 +284,3 @@ nsGfxCheckboxControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGfxCheckboxControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -84,9 +84,6 @@ public:
|
||||
virtual void SetAdditionalStyleContext(PRInt32 aIndex,
|
||||
nsStyleContext* aStyleContext);
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD OnContentReset();
|
||||
|
||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
||||
|
||||
#ifdef DEBUG_rodsXXX
|
||||
|
@ -260,8 +260,3 @@ nsGfxRadioControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGfxRadioControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -91,9 +91,6 @@ public:
|
||||
nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect);
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD OnContentReset();
|
||||
|
||||
///XXX: End o the temporary methods
|
||||
#ifdef DEBUG_rodsXXX
|
||||
NS_IMETHOD Reflow(nsPresContext* aCX,
|
||||
|
@ -169,29 +169,6 @@ NS_IMETHODIMP nsHTMLButtonControlFrame::GetAccessible(nsIAccessible** aAccessibl
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsHTMLButtonControlFrame::GetFormControlType() const
|
||||
{
|
||||
return nsFormControlHelper::GetType(mContent);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::GetValue(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetValueAttr(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsHTMLButtonControlFrame::ReParentFrameList(nsFrameManager* aFrameManager,
|
||||
nsIFrame* aFrameList)
|
||||
@ -236,19 +213,6 @@ nsHTMLButtonControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nsHTMLButtonControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::HandleEvent(nsPresContext* aPresContext,
|
||||
nsGUIEvent* aEvent,
|
||||
@ -555,33 +519,7 @@ nsHTMLButtonControlFrame::GetSkipSides() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsHTMLButtonControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsHTMLButtonControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLButtonControlFrame::SetProperty(nsPresContext* aPresContext,
|
||||
nsIAtom* aName, const nsAString& aValue)
|
||||
nsresult nsHTMLButtonControlFrame::SetFormProperty(nsIAtom* aName, const nsAString& aValue)
|
||||
{
|
||||
if (nsHTMLAtoms::value == aName) {
|
||||
return mContent->SetAttr(kNameSpaceID_None, nsHTMLAtoms::value,
|
||||
@ -590,7 +528,7 @@ NS_IMETHODIMP nsHTMLButtonControlFrame::SetProperty(nsPresContext* aPresContext,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLButtonControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult nsHTMLButtonControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
if (nsHTMLAtoms::value == aName)
|
||||
mContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::value, aValue);
|
||||
@ -611,16 +549,6 @@ nsHTMLButtonControlFrame::SetAdditionalStyleContext(PRInt32 aIndex,
|
||||
mRenderer.SetStyleContext(aIndex, aStyleContext);
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsHTMLButtonControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
// mSuggestedWidth = aWidth;
|
||||
// mSuggestedHeight = aHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::AppendFrames(nsIAtom* aListName,
|
||||
nsIFrame* aFrameList)
|
||||
@ -653,9 +581,3 @@ nsHTMLButtonControlFrame::ReplaceFrame(nsIAtom* aListName,
|
||||
ReParentFrameList(GetPresContext()->FrameManager(), aNewFrame);
|
||||
return mFrames.FirstChild()->ReplaceFrame(aListName, aOldFrame, aNewFrame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLButtonControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -126,27 +126,10 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
NS_IMETHOD GetValue(nsAString* aName);
|
||||
NS_IMETHOD OnContentReset();
|
||||
|
||||
void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
void ScrollIntoView(nsPresContext* aPresContext);
|
||||
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
|
||||
// Inserted child content gets its frames parented by our child block
|
||||
virtual nsIFrame* GetContentInsertionFrame() {
|
||||
|
@ -50,8 +50,8 @@ class nsCSSFrameConstructor;
|
||||
|
||||
// IID for the nsIComboboxControlFrame class
|
||||
#define NS_ICOMBOBOXCONTROLFRAME_IID \
|
||||
{ 0x6961f791, 0xa662, 0x11d2, \
|
||||
{ 0x8d, 0xcf, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
{ 0x23f75e9c, 0x6850, 0x11da, \
|
||||
{ 0x95, 0x2c, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f } }
|
||||
|
||||
/**
|
||||
* nsIComboboxControlFrame is the common interface for frames of form controls. It
|
||||
@ -108,6 +108,11 @@ public:
|
||||
*/
|
||||
NS_IMETHOD GetAbsoluteRect(nsRect* aRect) = 0;
|
||||
|
||||
/**
|
||||
* Notification that the content has been reset
|
||||
*/
|
||||
virtual void OnContentReset() = 0;
|
||||
|
||||
/**
|
||||
* This returns the index of the item that is currently being displayed
|
||||
* in the display area. It may differ from what the currently Selected index
|
||||
|
@ -39,17 +39,15 @@
|
||||
#define nsIFormControlFrame_h___
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsFont.h"
|
||||
class nsPresContext;
|
||||
class nsAString;
|
||||
class nsIContent;
|
||||
class nsIAtom;
|
||||
|
||||
struct nsSize;
|
||||
|
||||
// IID for the nsIFormControlFrame class
|
||||
#define NS_IFORMCONTROLFRAME_IID \
|
||||
{ 0xf1911a34, 0xcdf7, 0x4f10, \
|
||||
{ 0xbc, 0x2a, 0x77, 0x1f, 0x68, 0xce, 0xbc, 0x54 } }
|
||||
{ 0x189e1565, 0x44f, 0x11da, \
|
||||
{ 0x94, 0xfc, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f } }
|
||||
|
||||
/**
|
||||
* nsIFormControlFrame is the common interface for frames of form controls. It
|
||||
@ -61,33 +59,13 @@ class nsIFormControlFrame : public nsISupports {
|
||||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IFORMCONTROLFRAME_IID)
|
||||
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const = 0;
|
||||
|
||||
NS_IMETHOD GetName(nsAString* aName) = 0;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param aOn
|
||||
* @param aRepaint
|
||||
*/
|
||||
virtual void SetFocus(PRBool aOn = PR_TRUE, PRBool aRepaint = PR_FALSE) = 0;
|
||||
|
||||
virtual void ScrollIntoView(nsPresContext* aPresContext) = 0;
|
||||
|
||||
/**
|
||||
* Set the suggested size for the form element.
|
||||
* This is used to control the size of the element during reflow if it hasn't had its size
|
||||
* explicitly set.
|
||||
* @param aWidth width of the form element
|
||||
* @param aHeight height of the form element
|
||||
* @returns NS_OK
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight) = 0;
|
||||
|
||||
/**
|
||||
* Get the content object associated with this frame. Adds a reference to
|
||||
* the content object so the caller must do a release.
|
||||
*
|
||||
* @see nsISupports#Release()
|
||||
*/
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const = 0;
|
||||
|
||||
/**
|
||||
* Set a property on the form control frame.
|
||||
*
|
||||
@ -95,24 +73,17 @@ public:
|
||||
* @param aValue value of the property
|
||||
* @returns NS_OK if the property name is valid, otherwise an error code
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue) = 0;
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue) = 0;
|
||||
|
||||
/**
|
||||
* Get a property from the form control frame
|
||||
*
|
||||
* @param aName name of the property to get
|
||||
* @param aValue value of the property
|
||||
* @returns NS_OK if the property name is valid, otherwise an error code
|
||||
* @param aName name of the property to get.
|
||||
* @param aValue Value to set.
|
||||
* @returns NS_OK if the property name is valid, otherwise an error code.
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue) = 0;
|
||||
|
||||
/**
|
||||
* Notification that the content has been reset
|
||||
*/
|
||||
NS_IMETHOD OnContentReset() = 0;
|
||||
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsIFormControlFrame, NS_IFORMCONTROLFRAME_IID)
|
||||
|
@ -46,8 +46,8 @@ class nsIContent;
|
||||
|
||||
// IID for the nsIListControlFrame class
|
||||
#define NS_ILISTCONTROLFRAME_IID \
|
||||
{ 0xf44db101, 0xa73c, 0x11d2, \
|
||||
{ 0x8d, 0xcf, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
{ 0xa28ca6f, 0x6850, 0x11da, \
|
||||
{ 0x95, 0x2c, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f } }
|
||||
|
||||
/**
|
||||
* nsIListControlFrame is the interface for frame-based listboxes.
|
||||
@ -124,6 +124,11 @@ public:
|
||||
* @param aIndex the index to actually select
|
||||
*/
|
||||
NS_IMETHOD ComboboxFinish(PRInt32 aIndex) = 0;
|
||||
|
||||
/**
|
||||
* Notification that the content has been reset
|
||||
*/
|
||||
virtual void OnContentReset() = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsIListControlFrame, NS_ILISTCONTROLFRAME_IID)
|
||||
|
@ -45,9 +45,9 @@ class nsIDocShell;
|
||||
class nsISelectionController;
|
||||
|
||||
#define NS_IGFXTEXTCONTROLFRAME2_IID \
|
||||
{/* A744CFC9-2DA8-416d-A058-ADB1D4B3B534*/ \
|
||||
0xa744cfc9, 0x2da8, 0x416d, \
|
||||
{ 0xa0, 0x58, 0xad, 0xb1, 0xd4, 0xb3, 0xb5, 0x34 } }
|
||||
{/* 0c3b64da-4431-11da-94fd-00e08161165f*/ \
|
||||
0xc3b64da, 0x4431, 0x11da, \
|
||||
{ 0x94, 0xfd, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f } }
|
||||
|
||||
class nsITextControlFrame : public nsIFormControlFrame
|
||||
{
|
||||
@ -72,7 +72,7 @@ public:
|
||||
* value. If this is true, linebreaks will not be inserted even if
|
||||
* wrap=hard.
|
||||
*/
|
||||
NS_IMETHOD GetValue(nsAString& aValue, PRBool aIgnoreWrap) = 0;
|
||||
NS_IMETHOD GetValue(nsAString& aValue, PRBool aIgnoreWrap) const = 0;
|
||||
|
||||
NS_IMETHOD GetTextLength(PRInt32* aTextLength) = 0;
|
||||
|
||||
|
@ -98,29 +98,10 @@ public:
|
||||
|
||||
NS_IMETHOD GetCursor(const nsPoint& aPoint,
|
||||
nsIFrame::Cursor& aCursor);
|
||||
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
|
||||
void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
void ScrollIntoView(nsPresContext* aPresContext);
|
||||
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;
|
||||
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
NS_IMETHOD OnContentReset();
|
||||
// nsIFormContromFrame
|
||||
virtual void SetFocus(PRBool aOn, PRBool aRepaint);
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
|
||||
// nsIImageControlFrame
|
||||
NS_IMETHOD GetClickedX(PRInt32* aX);
|
||||
@ -269,32 +250,6 @@ nsImageControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nsImageControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsImageControlFrame::GetFormControlType() const
|
||||
{
|
||||
return NS_FORM_INPUT_IMAGE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageControlFrame::GetCursor(const nsPoint& aPoint,
|
||||
nsIFrame::Cursor& aCursor)
|
||||
@ -310,58 +265,21 @@ nsImageControlFrame::GetCursor(const nsPoint& aPoint,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsImageControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsImageControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageControlFrame::SetProperty(nsPresContext* aPresContext,
|
||||
nsIAtom* aName,
|
||||
const nsAString& aValue)
|
||||
nsresult
|
||||
nsImageControlFrame::SetFormProperty(nsIAtom* aName,
|
||||
const nsAString& aValue)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageControlFrame::GetProperty(nsIAtom* aName,
|
||||
nsAString& aValue)
|
||||
nsresult
|
||||
nsImageControlFrame::GetFormProperty(nsIAtom* aName,
|
||||
nsAString& aValue) const
|
||||
{
|
||||
aValue.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
// mSuggestedWidth = aWidth;
|
||||
// mSuggestedHeight = aHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageControlFrame::GetClickedX(PRInt32* aX)
|
||||
{
|
||||
|
@ -968,9 +968,7 @@ nsListControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
// We add in the height of optgroup labels (within the constraint above), bug 300474.
|
||||
visibleHeight = ::GetOptGroupLabelsHeight(GetPresContext(), mContent, heightOfARow);
|
||||
|
||||
PRBool multipleSelections = PR_FALSE;
|
||||
GetMultiple(&multipleSelections);
|
||||
if (multipleSelections) {
|
||||
if (GetMultiple()) {
|
||||
if (length < 2) {
|
||||
// Add in 1 heightOfARow also when length==0 to match how we calculate the desired size.
|
||||
visibleHeight = heightOfARow + PR_MAX(heightOfARow, visibleHeight);
|
||||
@ -1116,15 +1114,6 @@ nsListControlFrame::Reflow(nsPresContext* aPresContext,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsGfxScrollFrameInner::ScrollbarStyles
|
||||
nsListControlFrame::GetScrollbarStyles() const
|
||||
{
|
||||
@ -1285,11 +1274,9 @@ nsListControlFrame::PerformSelection(PRInt32 aClickedIndex,
|
||||
{
|
||||
PRBool wasChanged = PR_FALSE;
|
||||
|
||||
PRBool isMultiple;
|
||||
GetMultiple(&isMultiple);
|
||||
|
||||
if (aClickedIndex == kNothingSelected) {
|
||||
} else if (isMultiple) {
|
||||
}
|
||||
else if (GetMultiple()) {
|
||||
if (aIsShift) {
|
||||
// Make sure shift+click actually does something expected when
|
||||
// the user has never clicked on the select
|
||||
@ -1528,47 +1515,29 @@ nsListControlFrame::Init(nsPresContext* aPresContext,
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
nscoord
|
||||
nsListControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return NSIntPixelsToTwips(0, aPixToTwip);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
nscoord
|
||||
nsListControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return GetVerticalInsidePadding(aPresContext, aPixToTwip, aInnerWidth);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// Returns whether the nsIDOMHTMLSelectElement supports
|
||||
// mulitple selection
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::GetMultiple(PRBool* aMultiple, nsIDOMHTMLSelectElement* aSelect)
|
||||
PRBool
|
||||
nsListControlFrame::GetMultiple(nsIDOMHTMLSelectElement* aSelect) const
|
||||
{
|
||||
if (!aSelect) {
|
||||
nsIDOMHTMLSelectElement* selectElement = nsnull;
|
||||
nsresult result = mContent->QueryInterface(NS_GET_IID(nsIDOMHTMLSelectElement),
|
||||
(void**)&selectElement);
|
||||
if (NS_SUCCEEDED(result) && selectElement) {
|
||||
result = selectElement->GetMultiple(aMultiple);
|
||||
NS_RELEASE(selectElement);
|
||||
}
|
||||
return result;
|
||||
PRBool multiple = PR_FALSE;
|
||||
nsresult rv = NS_OK;
|
||||
if (aSelect) {
|
||||
rv = aSelect->GetMultiple(&multiple);
|
||||
} else {
|
||||
return aSelect->GetMultiple(aMultiple);
|
||||
nsCOMPtr<nsIDOMHTMLSelectElement> selectElement =
|
||||
do_QueryInterface(mContent);
|
||||
|
||||
if (selectElement) {
|
||||
rv = selectElement->GetMultiple(&multiple);
|
||||
}
|
||||
}
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
return multiple;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -1614,7 +1583,7 @@ nsListControlFrame::GetOptionAsContent(nsIDOMHTMLOptionsCollection* aCollection,
|
||||
// from the select
|
||||
//---------------------------------------------------------
|
||||
already_AddRefed<nsIContent>
|
||||
nsListControlFrame::GetOptionContent(PRInt32 aIndex)
|
||||
nsListControlFrame::GetOptionContent(PRInt32 aIndex) const
|
||||
|
||||
{
|
||||
nsCOMPtr<nsIDOMHTMLOptionsCollection> options =
|
||||
@ -1678,7 +1647,7 @@ nsListControlFrame::GetOption(nsIDOMHTMLOptionsCollection* aCollection,
|
||||
// return PR_TRUE if it is, PR_FALSE if it is NOT
|
||||
//---------------------------------------------------------
|
||||
PRBool
|
||||
nsListControlFrame::IsContentSelected(nsIContent* aContent)
|
||||
nsListControlFrame::IsContentSelected(nsIContent* aContent) const
|
||||
{
|
||||
PRBool isSelected = PR_FALSE;
|
||||
|
||||
@ -1694,7 +1663,7 @@ nsListControlFrame::IsContentSelected(nsIContent* aContent)
|
||||
// For a given index is return whether the content is selected
|
||||
//---------------------------------------------------------
|
||||
PRBool
|
||||
nsListControlFrame::IsContentSelectedByIndex(PRInt32 aIndex)
|
||||
nsListControlFrame::IsContentSelectedByIndex(PRInt32 aIndex) const
|
||||
{
|
||||
nsCOMPtr<nsIContent> content = GetOptionContent(aIndex);
|
||||
NS_ASSERTION(content, "Failed to retrieve option content");
|
||||
@ -1726,17 +1695,10 @@ nsListControlFrame::GetSkipSides() const
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsListControlFrame::GetFormControlType() const
|
||||
{
|
||||
return NS_FORM_SELECT;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
void
|
||||
nsListControlFrame::OnContentReset()
|
||||
{
|
||||
ResetList(PR_TRUE);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
@ -1773,17 +1735,7 @@ nsListControlFrame::ResetList(PRBool aAllowScrolling)
|
||||
|
||||
// Combobox will redisplay itself with the OnOptionSelected event
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
void
|
||||
nsListControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
@ -1806,20 +1758,6 @@ void nsListControlFrame::ComboboxFocusSet()
|
||||
gLastKeyTime = 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
void
|
||||
nsListControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::SetComboboxFrame(nsIFrame* aComboboxFrame)
|
||||
@ -2169,8 +2107,8 @@ nsListControlFrame::OnSetSelectedIndex(PRInt32 aOldIndex, PRInt32 aNewIndex)
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::SetProperty(nsPresContext* aPresContext, nsIAtom* aName,
|
||||
nsresult
|
||||
nsListControlFrame::SetFormProperty(nsIAtom* aName,
|
||||
const nsAString& aValue)
|
||||
{
|
||||
if (nsHTMLAtoms::selected == aName) {
|
||||
@ -2187,8 +2125,8 @@ nsListControlFrame::SetProperty(nsPresContext* aPresContext, nsIAtom* aName,
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult
|
||||
nsListControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
// Get the selected value of option from local cache (optimization vs. widget)
|
||||
if (nsHTMLAtoms::selected == aName) {
|
||||
@ -2321,14 +2259,6 @@ nsListControlFrame::GetMaximumSize(nsSize &aSize)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
nsListControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
nsresult
|
||||
nsListControlFrame::IsOptionDisabled(PRInt32 anIndex, PRBool &aIsDisabled)
|
||||
@ -3097,11 +3027,8 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent)
|
||||
keycode == nsIDOMKeyEvent::DOM_VK_LEFT ||
|
||||
keycode == nsIDOMKeyEvent::DOM_VK_DOWN ||
|
||||
keycode == nsIDOMKeyEvent::DOM_VK_RIGHT)) {
|
||||
PRBool isMultiple;
|
||||
GetMultiple(&isMultiple);
|
||||
// Don't go into multiple select mode unless this list can handle it
|
||||
mControlSelectMode = isMultiple;
|
||||
isControl = isMultiple;
|
||||
isControl = mControlSelectMode = GetMultiple();
|
||||
} else if (charcode != ' ') {
|
||||
mControlSelectMode = PR_FALSE;
|
||||
}
|
||||
|
@ -130,23 +130,9 @@ public:
|
||||
#endif
|
||||
|
||||
// nsIFormControlFrame
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const;
|
||||
NS_IMETHOD GetName(nsAString* aName);
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
NS_IMETHOD GetMultiple(PRBool* aResult, nsIDOMHTMLSelectElement* aSelect = nsnull);
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
NS_IMETHOD OnContentReset();
|
||||
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
virtual void SetFocus(PRBool aOn = PR_TRUE, PRBool aRepaint = PR_FALSE);
|
||||
virtual void ScrollIntoView(nsPresContext* aPresContext);
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;
|
||||
|
||||
virtual nsGfxScrollFrameInner::ScrollbarStyles GetScrollbarStyles() const;
|
||||
|
||||
@ -164,7 +150,6 @@ public:
|
||||
NS_IMETHOD GetOptionText(PRInt32 aIndex, nsAString & aStr);
|
||||
NS_IMETHOD CaptureMouseEvents(nsPresContext* aPresContext, PRBool aGrabMouseEvents);
|
||||
NS_IMETHOD GetMaximumSize(nsSize &aSize);
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
NS_IMETHOD GetNumberOfOptions(PRInt32* aNumOptions);
|
||||
NS_IMETHOD SyncViewWithFrame();
|
||||
NS_IMETHOD AboutToDropDown();
|
||||
@ -173,6 +158,7 @@ public:
|
||||
NS_IMETHOD SetOverrideReflowOptimization(PRBool aValue) { mOverrideReflowOpt = aValue; return NS_OK; }
|
||||
NS_IMETHOD FireOnChange();
|
||||
NS_IMETHOD ComboboxFinish(PRInt32 aIndex);
|
||||
virtual void OnContentReset();
|
||||
|
||||
// nsISelectControlFrame
|
||||
NS_IMETHOD AddOption(nsPresContext* aPresContext, PRInt32 index);
|
||||
@ -213,7 +199,7 @@ public:
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
PRBool GetMultiple(nsIDOMHTMLSelectElement* aSelect = nsnull) const;
|
||||
void DropDownToggleKey(nsIDOMEvent* aKeyEvent);
|
||||
nsresult IsOptionDisabled(PRInt32 anIndex, PRBool &aIsDisabled);
|
||||
nsresult ScrollToFrame(nsIContent * aOptElement);
|
||||
@ -231,9 +217,9 @@ protected:
|
||||
nsresult GetSizeAttribute(PRInt32 *aSize);
|
||||
nsIContent* GetOptionFromContent(nsIContent *aContent);
|
||||
nsresult GetIndexFromDOMEvent(nsIDOMEvent* aMouseEvent, PRInt32& aCurIndex);
|
||||
already_AddRefed<nsIContent> GetOptionContent(PRInt32 aIndex);
|
||||
PRBool IsContentSelected(nsIContent* aContent);
|
||||
PRBool IsContentSelectedByIndex(PRInt32 aIndex);
|
||||
already_AddRefed<nsIContent> GetOptionContent(PRInt32 aIndex) const;
|
||||
PRBool IsContentSelected(nsIContent* aContent) const;
|
||||
PRBool IsContentSelectedByIndex(PRInt32 aIndex) const;
|
||||
PRBool IsOptionElement(nsIContent* aContent);
|
||||
PRBool CheckIfAllFramesHere();
|
||||
PRInt32 GetIndexFromContent(nsIContent *aContent);
|
||||
|
@ -270,8 +270,7 @@ nsTextInputListener::NotifySelectionChanged(nsIDOMDocument* aDoc, nsISelection*
|
||||
nsISelectionListener::KEYPRESS_REASON |
|
||||
nsISelectionListener::SELECTALL_REASON)))
|
||||
{
|
||||
nsCOMPtr<nsIContent> content;
|
||||
mFrame->GetFormContent(*getter_AddRefs(content));
|
||||
nsIContent* content = mFrame->GetContent();
|
||||
if (content)
|
||||
{
|
||||
nsCOMPtr<nsIDocument> doc = content->GetDocument();
|
||||
@ -1275,8 +1274,6 @@ nsTextControlFrame::nsTextControlFrame(nsIPresShell* aShell)
|
||||
mUseEditor = PR_FALSE;
|
||||
mIsProcessing = PR_FALSE;
|
||||
mNotifyOnInput = PR_TRUE;
|
||||
mSuggestedWidth = NS_FORMSIZE_NOTSET;
|
||||
mSuggestedHeight = NS_FORMSIZE_NOTSET;
|
||||
mScrollableView = nsnull;
|
||||
mDidPreDestroy = PR_FALSE;
|
||||
}
|
||||
@ -1449,8 +1446,12 @@ nsTextControlFrame::GetType() const
|
||||
// XXX: wouldn't it be nice to get this from the style context!
|
||||
PRBool nsTextControlFrame::IsSingleLineTextControl() const
|
||||
{
|
||||
PRInt32 type = GetFormControlType();
|
||||
return (type == NS_FORM_INPUT_TEXT) || (type == NS_FORM_INPUT_PASSWORD);
|
||||
nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(mContent);
|
||||
if (formControl) {
|
||||
PRInt32 type = formControl->GetType();
|
||||
return (type == NS_FORM_INPUT_TEXT) || (type == NS_FORM_INPUT_PASSWORD);
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsTextControlFrame::IsTextArea() const
|
||||
@ -1467,7 +1468,8 @@ PRBool nsTextControlFrame::IsPlainTextControl() const
|
||||
|
||||
PRBool nsTextControlFrame::IsPasswordTextControl() const
|
||||
{
|
||||
return GetFormControlType() == NS_FORM_INPUT_PASSWORD;
|
||||
nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(mContent);
|
||||
return formControl && formControl->GetType() == NS_FORM_INPUT_PASSWORD;
|
||||
}
|
||||
|
||||
|
||||
@ -2243,20 +2245,7 @@ nsTextControlFrame::IsLeaf() const
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
//IMPLEMENTING NS_IFORMCONTROLFRAME
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::GetName(nsAString* aResult)
|
||||
{
|
||||
nsFormControlHelper::GetName(mContent, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
nsTextControlFrame::GetFormControlType() const
|
||||
{
|
||||
return nsFormControlHelper::GetType(mContent);
|
||||
}
|
||||
|
||||
static PRBool
|
||||
IsFocusedContent(nsPresContext* aPresContext, nsIContent* aContent)
|
||||
@ -2267,7 +2256,8 @@ IsFocusedContent(nsPresContext* aPresContext, nsIContent* aContent)
|
||||
return focusedContent == aContent;
|
||||
}
|
||||
|
||||
void nsTextControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
//IMPLEMENTING NS_IFORMCONTROLFRAME
|
||||
void nsTextControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
{
|
||||
if (!aOn || !mSelCon)
|
||||
return;
|
||||
@ -2307,54 +2297,7 @@ void nsTextControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
|
||||
docSel->RemoveAllRanges();
|
||||
}
|
||||
|
||||
void nsTextControlFrame::ScrollIntoView(nsPresContext* aPresContext)
|
||||
{
|
||||
if (aPresContext) {
|
||||
nsIPresShell *presShell = aPresContext->GetPresShell();
|
||||
if (presShell) {
|
||||
presShell->ScrollFrameIntoView(this,
|
||||
NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE,NS_PRESSHELL_SCROLL_IF_NOT_VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nscoord
|
||||
nsTextControlFrame::GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const
|
||||
{
|
||||
return NSIntPixelsToTwips(0, aPixToTwip);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
nscoord
|
||||
nsTextControlFrame::GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const
|
||||
{
|
||||
return GetVerticalInsidePadding(aPresContext, aPixToTwip, aInnerWidth);
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::SetSuggestedSize(nscoord aWidth, nscoord aHeight)
|
||||
{
|
||||
mSuggestedWidth = aWidth;
|
||||
mSuggestedHeight = aHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::GetFormContent(nsIContent*& aContent) const
|
||||
{
|
||||
aContent = GetContent();
|
||||
NS_IF_ADDREF(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTextControlFrame::SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue)
|
||||
nsresult nsTextControlFrame::SetFormProperty(nsIAtom* aName, const nsAString& aValue)
|
||||
{
|
||||
if (!mIsProcessing)//some kind of lock.
|
||||
{
|
||||
@ -2386,8 +2329,8 @@ NS_IMETHODIMP nsTextControlFrame::SetProperty(nsPresContext* aPresContext, nsIAt
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::GetProperty(nsIAtom* aName, nsAString& aValue)
|
||||
nsresult
|
||||
nsTextControlFrame::GetFormProperty(nsIAtom* aName, nsAString& aValue) const
|
||||
{
|
||||
// Return the value of the property from the widget it is not null.
|
||||
// If widget is null, assume the widget is GFX-rendered and return a member variable instead.
|
||||
@ -3022,8 +2965,8 @@ nsresult
|
||||
nsTextControlFrame::FireOnChange()
|
||||
{
|
||||
// Dispatch th1e change event
|
||||
nsCOMPtr<nsIContent> content;
|
||||
if (NS_SUCCEEDED(GetFormContent(*getter_AddRefs(content))))
|
||||
nsIContent* content = GetContent();
|
||||
if (content)
|
||||
{
|
||||
nsEventStatus status = nsEventStatus_eIgnore;
|
||||
nsInputEvent event(PR_TRUE, NS_FORM_CHANGE, nsnull);
|
||||
@ -3042,7 +2985,7 @@ nsTextControlFrame::FireOnChange()
|
||||
//privates
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::GetValue(nsAString& aValue, PRBool aIgnoreWrap)
|
||||
nsTextControlFrame::GetValue(nsAString& aValue, PRBool aIgnoreWrap) const
|
||||
{
|
||||
aValue.Truncate(); // initialize out param
|
||||
nsresult rv = NS_OK;
|
||||
@ -3330,12 +3273,6 @@ nsTextControlFrame::IsScrollable() const
|
||||
return !IsSingleLineTextControl();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsTextControlFrame::OnContentReset()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsTextControlFrame::SetValueChanged(PRBool aValueChanged)
|
||||
{
|
||||
|
@ -126,22 +126,9 @@ public:
|
||||
nsIFrame* aChildList);
|
||||
|
||||
//==== BEGIN NSIFORMCONTROLFRAME
|
||||
NS_IMETHOD_(PRInt32) GetFormControlType() const; //*
|
||||
NS_IMETHOD GetName(nsAString* aName);//*
|
||||
virtual void SetFocus(PRBool aOn , PRBool aRepaint);
|
||||
virtual void ScrollIntoView(nsPresContext* aPresContext);
|
||||
virtual nscoord GetVerticalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerHeight) const;
|
||||
virtual nscoord GetHorizontalInsidePadding(nsPresContext* aPresContext,
|
||||
float aPixToTwip,
|
||||
nscoord aInnerWidth,
|
||||
nscoord aCharWidth) const;/**/
|
||||
NS_IMETHOD SetSuggestedSize(nscoord aWidth, nscoord aHeight);
|
||||
NS_IMETHOD GetFormContent(nsIContent*& aContent) const;
|
||||
NS_IMETHOD SetProperty(nsPresContext* aPresContext, nsIAtom* aName, const nsAString& aValue);
|
||||
NS_IMETHOD GetProperty(nsIAtom* aName, nsAString& aValue);
|
||||
NS_IMETHOD OnContentReset();
|
||||
virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);
|
||||
virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const;
|
||||
|
||||
|
||||
//==== END NSIFORMCONTROLFRAME
|
||||
@ -150,7 +137,7 @@ public:
|
||||
|
||||
NS_IMETHOD GetEditor(nsIEditor **aEditor);
|
||||
NS_IMETHOD OwnsValue(PRBool* aOwnsValue);
|
||||
NS_IMETHOD GetValue(nsAString& aValue, PRBool aIgnoreWrap);
|
||||
NS_IMETHOD GetValue(nsAString& aValue, PRBool aIgnoreWrap) const;
|
||||
NS_IMETHOD GetTextLength(PRInt32* aTextLength);
|
||||
NS_IMETHOD CheckFireOnChange();
|
||||
NS_IMETHOD SetSelectionStart(PRInt32 aSelectionStart);
|
||||
@ -208,7 +195,6 @@ public: //for methods who access nsTextControlFrame directly
|
||||
static NS_HIDDEN_(void) ShutDown();
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Find out whether this control is scrollable (i.e. if it is not a single
|
||||
* line text control)
|
||||
@ -294,8 +280,6 @@ private:
|
||||
nsCOMPtr<nsISelectionController> mSelCon;
|
||||
|
||||
//cached sizes and states
|
||||
nscoord mSuggestedWidth;
|
||||
nscoord mSuggestedHeight;
|
||||
nsSize mSize;
|
||||
|
||||
// these packed bools could instead use the high order bits on mState, saving 4 bytes
|
||||
|
Loading…
x
Reference in New Issue
Block a user