author Dave Camp <>
Sat, 25 Aug 2012 11:04:46 -0700
changeset 103461 328402a45248dbcfebbcd2a5e96ce3e8a755234c
parent 103019 a16372ce30b5f6b747246b01fcd215a4bf3b6342
child 106753 c4f83d9d8243f3f853a5356188164a5fddee2b5a
permissions -rw-r--r--
Bug 785335 - Changing an elements tagName collapses the tree node with no way to expand the tree node. r=jwalker

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at */

#ifndef nsFormControlFrame_h___
#define nsFormControlFrame_h___

#include "nsIFormControlFrame.h"
#include "nsLeafFrame.h"

 * nsFormControlFrame is the base class for radio buttons and
 * checkboxes.  It also has two static methods (RegUnRegAccessKey and
 * GetScreenHeight) that are used by other form controls.
class nsFormControlFrame : public nsLeafFrame,
                           public nsIFormControlFrame
    * Main constructor
    * @param aContent the content representing this frame
    * @param aParentFrame the parent frame

  virtual nsIAtom* GetType() const;

  virtual bool IsFrameOfType(uint32_t aFlags) const
    return nsLeafFrame::IsFrameOfType(aFlags &
      ~(nsIFrame::eReplaced | nsIFrame::eReplacedContainsBlock));


    * Respond to a gui event
    * @see nsIFrame::HandleEvent
  NS_IMETHOD HandleEvent(nsPresContext* aPresContext, 
                         nsGUIEvent* aEvent,
                         nsEventStatus* aEventStatus);

  virtual nscoord GetBaseline() const;

    * Respond to the request to resize and/or reflow
    * @see nsIFrame::Reflow
  NS_IMETHOD Reflow(nsPresContext*      aCX,
                    nsHTMLReflowMetrics& aDesiredSize,
                    const nsHTMLReflowState& aReflowState,
                    nsReflowStatus&      aStatus);

  virtual void DestroyFrom(nsIFrame* aDestructRoot);

  // new behavior

  virtual void SetFocus(bool aOn = true, bool aRepaint = false);

  // nsIFormControlFrame
  virtual nsresult SetFormProperty(nsIAtom* aName, const nsAString& aValue);

  virtual nsresult GetFormProperty(nsIAtom* aName, nsAString& aValue) const; 
  // AccessKey Helper function
  static nsresult RegUnRegAccessKey(nsIFrame * aFrame, bool aDoReg);

   * Returns the usable screen rect in app units, eg the rect where we can
   * draw dropdowns.
  static nsRect GetUsableScreenRect(nsPresContext* aPresContext);


  virtual ~nsFormControlFrame();

  virtual nscoord GetIntrinsicWidth();
  virtual nscoord GetIntrinsicHeight();

//  Utility methods for managing checkboxes and radiobuttons
    * Get the state of the checked attribute.
    * @param aState set to true if the checked attribute is set,
    * false if the checked attribute has been removed

  void GetCurrentCheckState(bool* aState);