<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/105250/">http://git.reviewboard.kde.org/r/105250/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Calligra and Boudewijn Rempt.</div>
<div>By Arjen Hiemstra.</div>


<p style="color: grey;"><i>Updated June 14, 2012, 1:13 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Fix a compile issue with GCC < 4.7.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This patch is a squashed patch of all the current changes in the krita-canvasinteraction-ahiemstra branch. It implements the basics of my canvas interaction proposal. 

With these changes, the input to the canvas is now handled by the class KisInputManager. This class installs an event filter and uses the events to try and match certain shortcuts. When a match is found, an action associated with that shortcut gets activated and perfoms whatever the action is meant to do. These changes implement 7 different actions that cover most of what used to be performed by the canvas.

Known Issues:
- The recognition code is not yet very robust. Especially the shortcuts configured as Control + Some Button or Key seem hard to trigger.
- The "Alternate Invocation" action with the normal brush tool somehow does not get deactivated correctly.
- A KAction is added for setting up the mirror axis, but it fails. I do not know why since the code is, as far as I can see, the same as the old code.
- Due to the way recognition is currently done, a single click on the canvas will not paint.
- The Pan, Rotate and Zoom actions may be a little jumpy, due to them using incorrect mouse positions.

Still To Do:
- Loading shortcut configuration from a configuration file instead of hardcoding them.
- Create a configuration UI for shortcut configuration.
- Implement overlay widgets for the Pan, Rotate and Zoom actions.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I have performed quite some drawing using this code. The basic concept works very well and most of the actions are fairly intuitive, but the recognition code needs improvement.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>krita/ui/CMakeLists.txt <span style="color: grey">(212f515)</span></li>

 <li>krita/ui/canvas/kis_canvas2.cpp <span style="color: grey">(8f22f46)</span></li>

 <li>krita/ui/canvas/kis_canvas_widget_base.h <span style="color: grey">(d9a92fd)</span></li>

 <li>krita/ui/canvas/kis_canvas_widget_base.cpp <span style="color: grey">(4ee3bb6)</span></li>

 <li>krita/ui/canvas/kis_qpainter_canvas.h <span style="color: grey">(a70f463)</span></li>

 <li>krita/ui/canvas/kis_qpainter_canvas.cpp <span style="color: grey">(c2cd5f6)</span></li>

 <li>krita/ui/input/kis_abstract_input_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_abstract_input_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_alternate_invocation_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_alternate_invocation_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_change_primary_setting_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_change_primary_setting_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_input_manager.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_input_manager.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_pan_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_pan_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_rotate_canvas_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_rotate_canvas_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_shortcut.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_shortcut.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_show_palette_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_show_palette_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_tool_invocation_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_tool_invocation_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_zoom_action.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/input/kis_zoom_action.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>krita/ui/opengl/kis_opengl_canvas2.h <span style="color: grey">(7523e92)</span></li>

 <li>krita/ui/opengl/kis_opengl_canvas2.cpp <span style="color: grey">(d125f5a)</span></li>

 <li>krita/ui/tool/kis_tool.cc <span style="color: grey">(eca749a)</span></li>

 <li>krita/ui/tool/kis_tool_paint.cc <span style="color: grey">(61be742)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/105250/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>