<div dir="ltr">Hello, Frederik! :)<div><br></div><div>Thank you for your reply!</div><div class="gmail_extra"><br></div><div class="gmail_extra">First of all I want to answer regarding the platform and the screen-reader. I'm curently working on Windows 7 and using NVDA for testing, but MuseScore is a crossplatform project that work on Windows, Linux and Mac, so the end goal is to provide accessibility for every platform. For the moment I would be happy if I can make everything work on Windows with NVDA and Linux with Orca. <div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><div class="">

<blockquote type="cite">
<div dir="ltr">Hello everyone!
<div><br>
</div>
<div>My name is Andrei Tuicu and I'm a GSOC student working on accessibility support for MuseScore. <a href="http://musescore.org/" target="_blank">http://musescore.org/</a></div>
<div><br>
</div>
<div>I hope this is the right place to ask this questions. :)</div>
</div>
</blockquote>
<div><br>
</div>
</div><div>That’s a great project, I’m happy to hear that more projects are taking accessibility serious :)</div>
Feel free to ask away and I’ll try to answer as much as I can.</div>
<div><div class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
<div>I have some problems with the Qt Accessibility API, maybe some of you can help me with them.</div>
<div><br>
</div>
<div>So first of all, my main problem is that I can't seem to be able to get any new feedback from the screen reader when calling the QAccessbile::updateAccessbility static method.</div>
<div><br>
</div>
<div>For example, I have a Custom class that inherits QSlider and I'm updating the value of the slider. Shouldn't this code make the screen-reader tell the new value of the slider?</div>
<div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(128,128,0)">this</span><span>-></span><span>setValue</span><span>(</span><span>value</span><span>()+</span><span style="color:rgb(0,0,128)">10</span><span>);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(128,0,128)">QAccessibleValueChangeEvent</span><span style="color:rgb(192,192,192)"> </span><span>event</span><span>(</span><span style="color:rgb(128,128,0)">this</span><span>,</span><span style="color:rgb(192,192,192)"> </span><span>value</span><span>());</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(128,0,128)">QAccessible</span><span>::</span><span>updateAccessibility</span><span>(&</span><span>event</span><span>);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span>Am I doing something wrong here?</span></pre>
</div>
</div>
</blockquote>
<div><br>
</div>
</div><div>The code looks good to me. The problem is more that there are so many norms and ways of using the different accessibility APIs. Qt aims to work on all platforms, but there has been a lot more usage and testing of these APIs in the last one or two years,
 so you might just hit bugs.</div>
<div>This really depends on the screen reader. Which platform/screen reader are you testing with and which Qt version?</div>
<div>There were a few fixes in Qt 5.4 for Windows and on Linux some fixes went into Orca because of bugs exposed by Qt.</div>
<div><br>
</div>
<div>If you can’t get it to work, file a bug on <a href="http://bugreports.qt-project.org" target="_blank">
bugreports.qt-project.org</a>.</div></div></div></div></blockquote><div> </div><div>I already sent a bug-report for this problem, you can find it here: <a href="https://bugreports.qt-project.org/browse/QTBUG-40313">https://bugreports.qt-project.org/browse/QTBUG-40313</a></div>
<div>I've also submited there my "crash dummy" project. Since MuseScore is a huge project, I've created this small one just for understanding Qt Accessibility API. <a href="https://bugreports.qt-project.org/secure/attachment/41860/untitled.zip">https://bugreports.qt-project.org/secure/attachment/41860/untitled.zip</a></div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><div class="">

<blockquote type="cite">
<div dir="ltr">
<div>
<pre style="margin-top:0px;margin-bottom:0px">Other questions:</pre>
<pre style="margin-top:0px;margin-bottom:0px">1. Must a widget have focus when <span style="font-family:arial;color:rgb(192,192,192)"> </span><span style="font-family:arial;color:rgb(128,0,128)">QAccessible</span><span style="font-family:arial">::</span><span style="font-family:arial">updateAccessibility method is called?</span></pre>

</div>
</div>
</blockquote>
<div><br>
</div>
</div><div>No, but again, the behavior is completely platform dependent, most screen readers try to not drown the user in useless messages, so often they won’t announce the value change. Doing the update is still important, for example Orca on Linux (or rather AT-SPI)
 caches a lot and then will read wrong values later on when the widget receives focus.</div></div></div></div></blockquote><div> </div><div>So the widget doesn't need to have focus when I'm calling the the updateAccessibility method, but the screen-reader will see this update only when receiving focus? (sorry, I got a bit confused here. :) ) </div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="">

<blockquote type="cite">
<div dir="ltr">
<div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="font-family:arial">2.   If the answer to the previous question is yes, how can I make the screen-reader see the informations for QObjets since they can't get focus?</span></pre>

</div>
</div>
</blockquote>
<div><br>
</div>
</div><div>It doesn’t have to be the real focus, but you’d have to implement a custom QAccessibleInterface subclass (and register a factory function for it). That interface can return true for the focus state, but it should of course be consistent with the application’s
 state in some way.</div>
<div>Sending updates for QObject subclasses is fine as long as they have a QAccessibleInterface representation.</div>
<div><br>
</div>
<div>Let me know if you need more info or if the docs are not complete enough.</div></div></blockquote><div><br></div><div>I would really apreciate more info here. Any informations that you can tell me, or more docs that I can read would be very helpfull. For the part that I'm working now (as I said in another email) I'm only working with QObjects and there is where I have problems. In the small project that I've sent to you above, I've also implemented the QAccessibleInteface for a QObject and I included it in a tree ierarchy, but I don't receive any  feedback for it.</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><div class="">

<blockquote type="cite">
<div dir="ltr">
<div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="font-family:arial">3. Is there a way to send a string to the screen-reader and say something like "read this". From what I read through the documentation, it doesn't seem to be, but I think it would be a nice addition for sending messages to the user. :)</span></pre>

</div>
</div>
</blockquote>
<div><br>
</div>
</div><div>There isn’t, but I’ve had a few situations where I wanted this as well. It really depends on the platforms again, but I think it makes sense. Please file a bug so we can discuss the API there and won’t forget about this. I know that it’s available on several
 platforms (iOS recently added this kind of feature) but haven’t looked into it for real.</div></div></div></div></blockquote><div><br></div><div>The reason why I'm asking this is because this would be the simplest solution to my problem. I have a lot of QObjects in one QWidget and a custom made selection/highlighting system. What I need is to provide real time feedback for the user, that's why I put so much accent on the updateAccessibility method and how it works. When the user selects a score element (for example note) I need the screen-reader to tell him the informations that I'm providing in that moment (using the same example "Note, Pitch A#, etc") without involving any focus changes.</div>
<div>I'm filling a bug report for this now, as you suggested. </div><div><br></div><div>One more question: I've tried looking myself in the source code of Qt to see how are things done, but I've found more than one place for same things. Where should I look? In qt/qt or qt/qtbase?</div>
<div><br></div><div><br></div><div> Thank you very much!</div><div>Andrei Tuicu</div></div></div></div>