[webkit-changes] cvs commit: WebCore/khtml/xml dom_nodeimpl.cpp

David hyatt at opensource.apple.com
Thu Jul 28 19:40:41 PDT 2005


hyatt       05/07/28 19:40:41

  Modified:    khtml/html html_formimpl.cpp
               khtml/rendering render_layer.cpp render_theme.cpp
                        render_theme.h
               khtml/xml dom_nodeimpl.cpp
  Log:
  Test?
  
  Revision  Changes    Path
  1.179     +3 -7      WebCore/khtml/html/html_formimpl.cpp
  
  Index: html_formimpl.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/html/html_formimpl.cpp,v
  retrieving revision 1.178
  retrieving revision 1.179
  diff -u -r1.178 -r1.179
  --- html_formimpl.cpp	27 Jul 2005 18:55:39 -0000	1.178
  +++ html_formimpl.cpp	29 Jul 2005 02:40:40 -0000	1.179
  @@ -44,6 +44,7 @@
   #include "khtml_ext.h"
   
   #include "rendering/render_form.h"
  +#include "render_theme.h"
   
   #include <kcharsets.h>
   #include <kglobal.h>
  @@ -865,9 +866,7 @@
           if (oldDisabled != m_disabled) {
               setChanged();
               if (renderer() && renderer()->style()->hasAppearance())
  -                // FIXME: Let the theme decide whether a repaint is necessary.
  -                // Repaint the renderer when its disabled state changes so the theme will redraw properly.
  -                renderer()->repaint();
  +                theme()->stateChanged(renderer(), EnabledState);
           }
       } else if (attr->name() == HTMLAttributes::readonly()) {
           bool oldReadOnly = m_readOnly;
  @@ -2083,10 +2082,7 @@
       m_checked = _checked;
       setChanged();
       if (renderer() && renderer()->style()->hasAppearance())
  -        // FIXME: Let the theme decide whether a repaint is necessary.
  -        // Repaint the renderer when its checked state changes so the theme will redraw
  -        // properly.
  -        renderer()->repaint();
  +        theme()->stateChanged(renderer(), CheckedState);
   }
   
   
  
  
  
  1.100     +5 -0      WebCore/khtml/rendering/render_layer.cpp
  
  Index: render_layer.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_layer.cpp,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- render_layer.cpp	18 Jul 2005 21:52:32 -0000	1.99
  +++ render_layer.cpp	29 Jul 2005 02:40:40 -0000	1.100
  @@ -47,6 +47,7 @@
   #include "khtmlview.h"
   #include "render_canvas.h"
   #include "render_arena.h"
  +#include "render_theme.h"
   #include "xml/dom_docimpl.h"
   #include "xml/dom2_eventsimpl.h"
   #include "html/html_blockimpl.h"
  @@ -1274,6 +1275,8 @@
                   if (curr->style()->affectedByHoverRules() ||
                       (curr->style()->affectedByActiveRules() && oldActive))
                       curr->element()->setChanged();
  +                if (curr && curr->style()->hasAppearance())
  +                    theme()->stateChanged(renderer(), HoverState);
               }
           }
       }
  @@ -1288,6 +1291,8 @@
               if ((curr->style()->affectedByHoverRules() && !oldInside) ||
                   (curr->style()->affectedByActiveRules() && oldActive != info.active()))
                   curr->element()->setChanged();
  +            if (curr && curr->style()->hasAppearance() && !oldInside)
  +                theme()->stateChanged(renderer(), HoverState);
           }
       }
   }
  
  
  
  1.6       +14 -0     WebCore/khtml/rendering/render_theme.cpp
  
  Index: render_theme.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_theme.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- render_theme.cpp	28 Jul 2005 23:27:13 -0000	1.5
  +++ render_theme.cpp	29 Jul 2005 02:40:40 -0000	1.6
  @@ -82,6 +82,20 @@
       return appearance != CheckboxAppearance && appearance != RadioAppearance;
   }
   
  +void RenderTheme::stateChanged(RenderObject* o, ControlState state) const
  +{
  +    // Default implementation assumes the controls dont respond to changes in :hover state
  +    if (state == HoverState)
  +        return;
  +        
  +    // Assume pressed state is only responded to if the control is enabled.
  +    if (state == PressedState && !isEnabled(o))
  +        return;
  +    
  +    // Repaint the control.
  +    o->repaint();
  +}
  +
   bool RenderTheme::isChecked(const RenderObject* o) const
   {
       if (!o->element())
  
  
  
  1.6       +6 -0      WebCore/khtml/rendering/render_theme.h
  
  Index: render_theme.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_theme.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- render_theme.h	28 Jul 2005 21:28:00 -0000	1.5
  +++ render_theme.h	29 Jul 2005 02:40:40 -0000	1.6
  @@ -29,6 +29,8 @@
   
   class RenderStyle;
   
  +enum ControlState { HoverState, PressedState, FocusState, EnabledState, CheckedState };
  +
   class RenderTheme {
   public:
       RenderTheme() {}
  @@ -64,6 +66,10 @@
       // the theme needs to communicate this inflated rect to the engine so that it can invalidate the whole control.
       virtual void adjustRepaintRect(const RenderObject* o, QRect& r) { }
       
  +    // This method is called whenever a relevant state changes on a particular themed object, e.g., the mouse becomes pressed
  +    // or a control becomes disabled.
  +    virtual void stateChanged(RenderObject* o, ControlState state) const;
  +
       // This method is called whenever the theme changes on the system in order to flush cached resources from the
       // old theme.
       void themeChanged();
  
  
  
  1.162     +3 -3      WebCore/khtml/xml/dom_nodeimpl.cpp
  
  Index: dom_nodeimpl.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/xml/dom_nodeimpl.cpp,v
  retrieving revision 1.161
  retrieving revision 1.162
  diff -u -r1.161 -r1.162
  --- dom_nodeimpl.cpp	27 Jul 2005 01:12:29 -0000	1.161
  +++ dom_nodeimpl.cpp	29 Jul 2005 02:40:41 -0000	1.162
  @@ -42,6 +42,7 @@
   
   #include "rendering/render_object.h"
   #include "rendering/render_text.h"
  +#include "render_theme.h"
   
   #include "ecma/kjs_binding.h"
   #include "ecma/kjs_proxy.h"
  @@ -2306,9 +2307,8 @@
       if (m_render) {
           if (m_render->style()->affectedByActiveRules())
               setChanged();
  -        // FIXME: Let the theme decide if the repaint is necessary.
  -        if (m_render->style()->hasAppearance())
  -            m_render->repaint();
  +        if (renderer() && renderer()->style()->hasAppearance())
  +            theme()->stateChanged(renderer(), PressedState);
       }
   }
   
  
  
  



More information about the webkit-changes mailing list