Mon, 17 Oct 2016 19:51:51 +0200
Optimized the QtHelp handling.
--- a/APIs/Python3/eric6.api Mon Oct 17 18:57:24 2016 +0200 +++ b/APIs/Python3/eric6.api Mon Oct 17 19:51:51 2016 +0200 @@ -2484,7 +2484,6 @@ eric6.Helpviewer.HelpLanguagesDialog.HelpLanguagesDialog?1(parent=None) eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.contextMenuEvent?4(evt) eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.escapePressed?7 -eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.eventFilter?4(watched, event) eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.keyPressEvent?4(evt) eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.linkActivated?7 eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget?1(engine, mainWindow, parent=None) @@ -2524,7 +2523,6 @@ eric6.Helpviewer.HelpTabWidget.HelpTabWidget.titleChanged?7 eric6.Helpviewer.HelpTabWidget.HelpTabWidget?1(parent) eric6.Helpviewer.HelpTocWidget.HelpTocWidget.escapePressed?7 -eric6.Helpviewer.HelpTocWidget.HelpTocWidget.eventFilter?4(watched, event) eric6.Helpviewer.HelpTocWidget.HelpTocWidget.expandToDepth?4(depth) eric6.Helpviewer.HelpTocWidget.HelpTocWidget.focusInEvent?4(evt) eric6.Helpviewer.HelpTocWidget.HelpTocWidget.itemClicked?4(index) @@ -10203,7 +10201,6 @@ eric6.WebBrowser.QtHelp.HelpIndexWidget.HelpIndexWidget?1(engine, parent=None) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.contextMenuEvent?4(evt) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.escapePressed?7 -eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.eventFilter?4(watched, event) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.keyPressEvent?4(evt) eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.newBackgroundTab?7 eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.newTab?7 @@ -10211,7 +10208,6 @@ eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget.openUrl?7 eric6.WebBrowser.QtHelp.HelpSearchWidget.HelpSearchWidget?1(engine, parent=None) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.escapePressed?7 -eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.eventFilter?4(watched, event) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.expandToDepth?4(depth) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.focusInEvent?4(evt) eric6.WebBrowser.QtHelp.HelpTocWidget.HelpTocWidget.keyPressEvent?4(evt)
--- a/Documentation/Help/source.qhp Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Help/source.qhp Mon Oct 17 19:51:51 2016 +0200 @@ -6383,15 +6383,19 @@ <keyword name="HelpIndexWidget (Constructor)" id="HelpIndexWidget (Constructor)" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__init__" /> <keyword name="HelpIndexWidget (Module)" id="HelpIndexWidget (Module)" ref="eric6.Helpviewer.HelpIndexWidget.html" /> <keyword name="HelpIndexWidget (Module)" id="HelpIndexWidget (Module)" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html" /> - <keyword name="HelpIndexWidget.__activated" id="HelpIndexWidget.__activated" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__activated" /> - <keyword name="HelpIndexWidget.__activated" id="HelpIndexWidget.__activated" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__activated" /> <keyword name="HelpIndexWidget.__disableSearchEdit" id="HelpIndexWidget.__disableSearchEdit" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__disableSearchEdit" /> <keyword name="HelpIndexWidget.__disableSearchEdit" id="HelpIndexWidget.__disableSearchEdit" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__disableSearchEdit" /> <keyword name="HelpIndexWidget.__enableSearchEdit" id="HelpIndexWidget.__enableSearchEdit" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__enableSearchEdit" /> <keyword name="HelpIndexWidget.__enableSearchEdit" id="HelpIndexWidget.__enableSearchEdit" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__enableSearchEdit" /> <keyword name="HelpIndexWidget.__filterIndices" id="HelpIndexWidget.__filterIndices" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__filterIndices" /> <keyword name="HelpIndexWidget.__filterIndices" id="HelpIndexWidget.__filterIndices" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__filterIndices" /> + <keyword name="HelpIndexWidget.__linkActivated" id="HelpIndexWidget.__linkActivated" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__linkActivated" /> + <keyword name="HelpIndexWidget.__linkActivated" id="HelpIndexWidget.__linkActivated" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__linkActivated" /> + <keyword name="HelpIndexWidget.__linksActivated" id="HelpIndexWidget.__linksActivated" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__linksActivated" /> + <keyword name="HelpIndexWidget.__linksActivated" id="HelpIndexWidget.__linksActivated" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__linksActivated" /> + <keyword name="HelpIndexWidget.__selectLink" id="HelpIndexWidget.__selectLink" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__selectLink" /> <keyword name="HelpIndexWidget.__selectLink" id="HelpIndexWidget.__selectLink" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__selectLink" /> + <keyword name="HelpIndexWidget.__showContextMenu" id="HelpIndexWidget.__showContextMenu" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.__showContextMenu" /> <keyword name="HelpIndexWidget.__showContextMenu" id="HelpIndexWidget.__showContextMenu" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.__showContextMenu" /> <keyword name="HelpIndexWidget.eventFilter" id="HelpIndexWidget.eventFilter" ref="eric6.Helpviewer.HelpIndexWidget.html#HelpIndexWidget.eventFilter" /> <keyword name="HelpIndexWidget.eventFilter" id="HelpIndexWidget.eventFilter" ref="eric6.WebBrowser.QtHelp.HelpIndexWidget.html#HelpIndexWidget.eventFilter" /> @@ -6425,6 +6429,8 @@ <keyword name="HelpSearchWidget (Constructor)" id="HelpSearchWidget (Constructor)" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.__init__" /> <keyword name="HelpSearchWidget (Module)" id="HelpSearchWidget (Module)" ref="eric6.Helpviewer.HelpSearchWidget.html" /> <keyword name="HelpSearchWidget (Module)" id="HelpSearchWidget (Module)" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html" /> + <keyword name="HelpSearchWidget.__linkActivated" id="HelpSearchWidget.__linkActivated" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.__linkActivated" /> + <keyword name="HelpSearchWidget.__linkActivated" id="HelpSearchWidget.__linkActivated" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.__linkActivated" /> <keyword name="HelpSearchWidget.__search" id="HelpSearchWidget.__search" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.__search" /> <keyword name="HelpSearchWidget.__search" id="HelpSearchWidget.__search" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.__search" /> <keyword name="HelpSearchWidget.__searchingFinished" id="HelpSearchWidget.__searchingFinished" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.__searchingFinished" /> @@ -6433,8 +6439,6 @@ <keyword name="HelpSearchWidget.__searchingStarted" id="HelpSearchWidget.__searchingStarted" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.__searchingStarted" /> <keyword name="HelpSearchWidget.contextMenuEvent" id="HelpSearchWidget.contextMenuEvent" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.contextMenuEvent" /> <keyword name="HelpSearchWidget.contextMenuEvent" id="HelpSearchWidget.contextMenuEvent" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.contextMenuEvent" /> - <keyword name="HelpSearchWidget.eventFilter" id="HelpSearchWidget.eventFilter" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.eventFilter" /> - <keyword name="HelpSearchWidget.eventFilter" id="HelpSearchWidget.eventFilter" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.eventFilter" /> <keyword name="HelpSearchWidget.keyPressEvent" id="HelpSearchWidget.keyPressEvent" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.keyPressEvent" /> <keyword name="HelpSearchWidget.keyPressEvent" id="HelpSearchWidget.keyPressEvent" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.keyPressEvent" /> <keyword name="HelpSnap (Module)" id="HelpSnap (Module)" ref="eric6.Helpviewer.HelpSnap.html" /> @@ -6510,10 +6514,10 @@ <keyword name="HelpTocWidget.__contentsCreated" id="HelpTocWidget.__contentsCreated" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.__contentsCreated" /> <keyword name="HelpTocWidget.__expandTOC" id="HelpTocWidget.__expandTOC" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.__expandTOC" /> <keyword name="HelpTocWidget.__expandTOC" id="HelpTocWidget.__expandTOC" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.__expandTOC" /> + <keyword name="HelpTocWidget.__linkActivated" id="HelpTocWidget.__linkActivated" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.__linkActivated" /> + <keyword name="HelpTocWidget.__linkActivated" id="HelpTocWidget.__linkActivated" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.__linkActivated" /> <keyword name="HelpTocWidget.__showContextMenu" id="HelpTocWidget.__showContextMenu" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.__showContextMenu" /> <keyword name="HelpTocWidget.__showContextMenu" id="HelpTocWidget.__showContextMenu" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.__showContextMenu" /> - <keyword name="HelpTocWidget.eventFilter" id="HelpTocWidget.eventFilter" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.eventFilter" /> - <keyword name="HelpTocWidget.eventFilter" id="HelpTocWidget.eventFilter" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.eventFilter" /> <keyword name="HelpTocWidget.expandToDepth" id="HelpTocWidget.expandToDepth" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.expandToDepth" /> <keyword name="HelpTocWidget.expandToDepth" id="HelpTocWidget.expandToDepth" ref="eric6.WebBrowser.QtHelp.HelpTocWidget.html#HelpTocWidget.expandToDepth" /> <keyword name="HelpTocWidget.focusInEvent" id="HelpTocWidget.focusInEvent" ref="eric6.Helpviewer.HelpTocWidget.html#HelpTocWidget.focusInEvent" /> @@ -16699,36 +16703,6 @@ <file>eric6.DebugClients.Python.ThreadExtension.html</file> <file>eric6.DebugClients.Python.eric6dbgstub.html</file> <file>eric6.DebugClients.Python.getpass.html</file> - <file>eric6.DebugClients.Python2.AsyncFile.html</file> - <file>eric6.DebugClients.Python2.DCTestResult.html</file> - <file>eric6.DebugClients.Python2.DebugBase.html</file> - <file>eric6.DebugClients.Python2.DebugClient.html</file> - <file>eric6.DebugClients.Python2.DebugClientBase.html</file> - <file>eric6.DebugClients.Python2.DebugClientCapabilities.html</file> - <file>eric6.DebugClients.Python2.DebugClientThreads.html</file> - <file>eric6.DebugClients.Python2.DebugConfig.html</file> - <file>eric6.DebugClients.Python2.DebugThread.html</file> - <file>eric6.DebugClients.Python2.DebugUtilities.html</file> - <file>eric6.DebugClients.Python2.DebugVariables.html</file> - <file>eric6.DebugClients.Python2.FlexCompleter.html</file> - <file>eric6.DebugClients.Python2.PyProfile.html</file> - <file>eric6.DebugClients.Python2.eric6dbgstub.html</file> - <file>eric6.DebugClients.Python2.getpass.html</file> - <file>eric6.DebugClients.Python3.AsyncFile.html</file> - <file>eric6.DebugClients.Python3.DCTestResult.html</file> - <file>eric6.DebugClients.Python3.DebugBase.html</file> - <file>eric6.DebugClients.Python3.DebugClient.html</file> - <file>eric6.DebugClients.Python3.DebugClientBase.html</file> - <file>eric6.DebugClients.Python3.DebugClientCapabilities.html</file> - <file>eric6.DebugClients.Python3.DebugClientThreads.html</file> - <file>eric6.DebugClients.Python3.DebugConfig.html</file> - <file>eric6.DebugClients.Python3.DebugThread.html</file> - <file>eric6.DebugClients.Python3.DebugUtilities.html</file> - <file>eric6.DebugClients.Python3.DebugVariables.html</file> - <file>eric6.DebugClients.Python3.FlexCompleter.html</file> - <file>eric6.DebugClients.Python3.PyProfile.html</file> - <file>eric6.DebugClients.Python3.eric6dbgstub.html</file> - <file>eric6.DebugClients.Python3.getpass.html</file> <file>eric6.Debugger.BreakPointModel.html</file> <file>eric6.Debugger.BreakPointViewer.html</file> <file>eric6.Debugger.CallStackViewer.html</file> @@ -17731,8 +17705,6 @@ <file>index-eric6.Cooperation.html</file> <file>index-eric6.DataViews.html</file> <file>index-eric6.DebugClients.Python.html</file> - <file>index-eric6.DebugClients.Python2.html</file> - <file>index-eric6.DebugClients.Python3.html</file> <file>index-eric6.DebugClients.html</file> <file>index-eric6.Debugger.html</file> <file>index-eric6.DocumentationTools.html</file>
--- a/Documentation/Source/eric6.Helpviewer.HelpIndexWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.Helpviewer.HelpIndexWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -73,9 +73,6 @@ <td><a href="#HelpIndexWidget.__init__">HelpIndexWidget</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#HelpIndexWidget.__activated">__activated</a></td> -<td>Private slot to handle the activation of a keyword entry.</td> -</tr><tr> <td><a href="#HelpIndexWidget.__disableSearchEdit">__disableSearchEdit</a></td> <td>Private slot to enable the search edit.</td> </tr><tr> @@ -85,6 +82,18 @@ <td><a href="#HelpIndexWidget.__filterIndices">__filterIndices</a></td> <td>Private slot to filter the indices according to the given filter.</td> </tr><tr> +<td><a href="#HelpIndexWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot to handle the activation of a keyword entry.</td> +</tr><tr> +<td><a href="#HelpIndexWidget.__linksActivated">__linksActivated</a></td> +<td>Private slot to handle the activation of an entry with multiple links.</td> +</tr><tr> +<td><a href="#HelpIndexWidget.__selectLink">__selectLink</a></td> +<td>Private method to give the user a chance to select among the returned links.</td> +</tr><tr> +<td><a href="#HelpIndexWidget.__showContextMenu">__showContextMenu</a></td> +<td>Private slot showing the context menu.</td> +</tr><tr> <td><a href="#HelpIndexWidget.eventFilter">eventFilter</a></td> <td>Public method called to filter the event queue.</td> </tr><tr> @@ -112,16 +121,6 @@ <dd> reference to the parent widget (QWidget) </dd> -</dl><a NAME="HelpIndexWidget.__activated" ID="HelpIndexWidget.__activated"></a> -<h4>HelpIndexWidget.__activated</h4> -<b>__activated</b>(<i>idx</i>) -<p> - Private slot to handle the activation of a keyword entry. -</p><dl> -<dt><i>idx</i></dt> -<dd> -index of the activated entry (QModelIndex) -</dd> </dl><a NAME="HelpIndexWidget.__disableSearchEdit" ID="HelpIndexWidget.__disableSearchEdit"></a> <h4>HelpIndexWidget.__disableSearchEdit</h4> <b>__disableSearchEdit</b>(<i></i>) @@ -142,6 +141,69 @@ <dd> filter to be used (string) </dd> +</dl><a NAME="HelpIndexWidget.__linkActivated" ID="HelpIndexWidget.__linkActivated"></a> +<h4>HelpIndexWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url, keyword, modifiers=None</i>) +<p> + Private slot to handle the activation of a keyword entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the selected entry +</dd><dt><i>keyword</i> (str)</dt> +<dd> +keyword for the URL +</dd><dt><i>modifiers=</i> (Qt.KeyboardModifiers or None)</dt> +<dd> +keyboard modifiers +</dd> +</dl><a NAME="HelpIndexWidget.__linksActivated" ID="HelpIndexWidget.__linksActivated"></a> +<h4>HelpIndexWidget.__linksActivated</h4> +<b>__linksActivated</b>(<i>links, keyword</i>) +<p> + Private slot to handle the activation of an entry with multiple links. +</p><dl> +<dt><i>links</i> (dict of key:str and value:QUrl)</dt> +<dd> +dictionary containing the links +</dd><dt><i>keyword</i> (str)</dt> +<dd> +keyword for the entry +</dd> +</dl><a NAME="HelpIndexWidget.__selectLink" ID="HelpIndexWidget.__selectLink"></a> +<h4>HelpIndexWidget.__selectLink</h4> +<b>__selectLink</b>(<i>links, keyword</i>) +<p> + Private method to give the user a chance to select among the + returned links. +</p><dl> +<dt><i>links</i> (dictionary of str (key) and QUrl (value))</dt> +<dd> +dictionary of document title and URL to select from +</dd><dt><i>keyword</i> (str)</dt> +<dd> +keyword for the link set +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +selected link +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QUrl +</dd> +</dl><a NAME="HelpIndexWidget.__showContextMenu" ID="HelpIndexWidget.__showContextMenu"></a> +<h4>HelpIndexWidget.__showContextMenu</h4> +<b>__showContextMenu</b>(<i>pos</i>) +<p> + Private slot showing the context menu. +</p><dl> +<dt><i>pos</i></dt> +<dd> +position to show the menu at (QPoint) +</dd> </dl><a NAME="HelpIndexWidget.eventFilter" ID="HelpIndexWidget.eventFilter"></a> <h4>HelpIndexWidget.eventFilter</h4> <b>eventFilter</b>(<i>watched, event</i>)
--- a/Documentation/Source/eric6.Helpviewer.HelpSearchWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.Helpviewer.HelpSearchWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -69,6 +69,9 @@ <td><a href="#HelpSearchWidget.__init__">HelpSearchWidget</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#HelpSearchWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot handling the activation of an entry.</td> +</tr><tr> <td><a href="#HelpSearchWidget.__search">__search</a></td> <td>Private slot to perform a search of the database.</td> </tr><tr> @@ -81,9 +84,6 @@ <td><a href="#HelpSearchWidget.contextMenuEvent">contextMenuEvent</a></td> <td>Protected method handling context menu events.</td> </tr><tr> -<td><a href="#HelpSearchWidget.eventFilter">eventFilter</a></td> -<td>Public method called to filter the event queue.</td> -</tr><tr> <td><a href="#HelpSearchWidget.keyPressEvent">keyPressEvent</a></td> <td>Protected method handling key press events.</td> </tr> @@ -108,6 +108,16 @@ <dd> reference to the parent widget (QWidget) </dd> +</dl><a NAME="HelpSearchWidget.__linkActivated" ID="HelpSearchWidget.__linkActivated"></a> +<h4>HelpSearchWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url</i>) +<p> + Private slot handling the activation of an entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the activated entry +</dd> </dl><a NAME="HelpSearchWidget.__search" ID="HelpSearchWidget.__search"></a> <h4>HelpSearchWidget.__search</h4> <b>__search</b>(<i></i>) @@ -138,24 +148,6 @@ <dd> reference to the context menu event (QContextMenuEvent) </dd> -</dl><a NAME="HelpSearchWidget.eventFilter" ID="HelpSearchWidget.eventFilter"></a> -<h4>HelpSearchWidget.eventFilter</h4> -<b>eventFilter</b>(<i>watched, event</i>) -<p> - Public method called to filter the event queue. -</p><dl> -<dt><i>watched</i></dt> -<dd> -the QObject being watched (QObject) -</dd><dt><i>event</i></dt> -<dd> -the event that occurred (QEvent) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -flag indicating whether the event was handled (boolean) -</dd> </dl><a NAME="HelpSearchWidget.keyPressEvent" ID="HelpSearchWidget.keyPressEvent"></a> <h4>HelpSearchWidget.keyPressEvent</h4> <b>keyPressEvent</b>(<i>evt</i>)
--- a/Documentation/Source/eric6.Helpviewer.HelpTocWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.Helpviewer.HelpTocWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -72,12 +72,12 @@ <td><a href="#HelpTocWidget.__expandTOC">__expandTOC</a></td> <td>Private slot to expand the table of contents.</td> </tr><tr> +<td><a href="#HelpTocWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot handling the activation of an entry.</td> +</tr><tr> <td><a href="#HelpTocWidget.__showContextMenu">__showContextMenu</a></td> <td>Private slot showing the context menu.</td> </tr><tr> -<td><a href="#HelpTocWidget.eventFilter">eventFilter</a></td> -<td>Public method called to filter the event queue.</td> -</tr><tr> <td><a href="#HelpTocWidget.expandToDepth">expandToDepth</a></td> <td>Public slot to expand the table of contents to a specific depth.</td> </tr><tr> @@ -119,7 +119,17 @@ <b>__expandTOC</b>(<i></i>) <p> Private slot to expand the table of contents. -</p><a NAME="HelpTocWidget.__showContextMenu" ID="HelpTocWidget.__showContextMenu"></a> +</p><a NAME="HelpTocWidget.__linkActivated" ID="HelpTocWidget.__linkActivated"></a> +<h4>HelpTocWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url</i>) +<p> + Private slot handling the activation of an entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the activated entry +</dd> +</dl><a NAME="HelpTocWidget.__showContextMenu" ID="HelpTocWidget.__showContextMenu"></a> <h4>HelpTocWidget.__showContextMenu</h4> <b>__showContextMenu</b>(<i>pos</i>) <p> @@ -129,24 +139,6 @@ <dd> position to show the menu at (QPoint) </dd> -</dl><a NAME="HelpTocWidget.eventFilter" ID="HelpTocWidget.eventFilter"></a> -<h4>HelpTocWidget.eventFilter</h4> -<b>eventFilter</b>(<i>watched, event</i>) -<p> - Public method called to filter the event queue. -</p><dl> -<dt><i>watched</i></dt> -<dd> -the QObject being watched (QObject) -</dd><dt><i>event</i></dt> -<dd> -the event that occurred (QEvent) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -flag indicating whether the event was handled (boolean) -</dd> </dl><a NAME="HelpTocWidget.expandToDepth" ID="HelpTocWidget.expandToDepth"></a> <h4>HelpTocWidget.expandToDepth</h4> <b>expandToDepth</b>(<i>depth</i>)
--- a/Documentation/Source/eric6.WebBrowser.QtHelp.HelpIndexWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.QtHelp.HelpIndexWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -79,9 +79,6 @@ <td><a href="#HelpIndexWidget.__init__">HelpIndexWidget</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#HelpIndexWidget.__activated">__activated</a></td> -<td>Private slot to handle the activation of a keyword entry.</td> -</tr><tr> <td><a href="#HelpIndexWidget.__disableSearchEdit">__disableSearchEdit</a></td> <td>Private slot to enable the search edit.</td> </tr><tr> @@ -91,6 +88,12 @@ <td><a href="#HelpIndexWidget.__filterIndices">__filterIndices</a></td> <td>Private slot to filter the indices according to the given filter.</td> </tr><tr> +<td><a href="#HelpIndexWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot to handle the activation of a keyword entry.</td> +</tr><tr> +<td><a href="#HelpIndexWidget.__linksActivated">__linksActivated</a></td> +<td>Private slot to handle the activation of an entry with multiple links.</td> +</tr><tr> <td><a href="#HelpIndexWidget.__selectLink">__selectLink</a></td> <td>Private method to give the user a chance to select among the returned links.</td> </tr><tr> @@ -121,19 +124,6 @@ <dd> reference to the parent widget (QWidget) </dd> -</dl><a NAME="HelpIndexWidget.__activated" ID="HelpIndexWidget.__activated"></a> -<h4>HelpIndexWidget.__activated</h4> -<b>__activated</b>(<i>idx, midButton=False</i>) -<p> - Private slot to handle the activation of a keyword entry. -</p><dl> -<dt><i>idx</i> (QModelIndex)</dt> -<dd> -index of the activated entry -</dd><dt><i>midButton</i> (bool)</dt> -<dd> -flag indicating a middle mouse button release -</dd> </dl><a NAME="HelpIndexWidget.__disableSearchEdit" ID="HelpIndexWidget.__disableSearchEdit"></a> <h4>HelpIndexWidget.__disableSearchEdit</h4> <b>__disableSearchEdit</b>(<i></i>) @@ -154,6 +144,35 @@ <dd> filter to be used (string) </dd> +</dl><a NAME="HelpIndexWidget.__linkActivated" ID="HelpIndexWidget.__linkActivated"></a> +<h4>HelpIndexWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url, keyword, modifiers=None</i>) +<p> + Private slot to handle the activation of a keyword entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the selected entry +</dd><dt><i>keyword</i> (str)</dt> +<dd> +keyword for the URL +</dd><dt><i>modifiers=</i> (Qt.KeyboardModifiers or None)</dt> +<dd> +keyboard modifiers +</dd> +</dl><a NAME="HelpIndexWidget.__linksActivated" ID="HelpIndexWidget.__linksActivated"></a> +<h4>HelpIndexWidget.__linksActivated</h4> +<b>__linksActivated</b>(<i>links, keyword</i>) +<p> + Private slot to handle the activation of an entry with multiple links. +</p><dl> +<dt><i>links</i> (dict of key:str and value:QUrl)</dt> +<dd> +dictionary containing the links +</dd><dt><i>keyword</i> (str)</dt> +<dd> +keyword for the entry +</dd> </dl><a NAME="HelpIndexWidget.__selectLink" ID="HelpIndexWidget.__selectLink"></a> <h4>HelpIndexWidget.__selectLink</h4> <b>__selectLink</b>(<i>links, keyword</i>)
--- a/Documentation/Source/eric6.WebBrowser.QtHelp.HelpSearchWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.QtHelp.HelpSearchWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -82,6 +82,9 @@ <td><a href="#HelpSearchWidget.__init__">HelpSearchWidget</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#HelpSearchWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot handling the activation of an entry.</td> +</tr><tr> <td><a href="#HelpSearchWidget.__search">__search</a></td> <td>Private slot to perform a search of the database.</td> </tr><tr> @@ -94,9 +97,6 @@ <td><a href="#HelpSearchWidget.contextMenuEvent">contextMenuEvent</a></td> <td>Protected method handling context menu events.</td> </tr><tr> -<td><a href="#HelpSearchWidget.eventFilter">eventFilter</a></td> -<td>Public method called to filter the event queue.</td> -</tr><tr> <td><a href="#HelpSearchWidget.keyPressEvent">keyPressEvent</a></td> <td>Protected method handling key press events.</td> </tr> @@ -118,6 +118,16 @@ <dd> reference to the parent widget (QWidget) </dd> +</dl><a NAME="HelpSearchWidget.__linkActivated" ID="HelpSearchWidget.__linkActivated"></a> +<h4>HelpSearchWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url</i>) +<p> + Private slot handling the activation of an entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the activated entry +</dd> </dl><a NAME="HelpSearchWidget.__search" ID="HelpSearchWidget.__search"></a> <h4>HelpSearchWidget.__search</h4> <b>__search</b>(<i></i>) @@ -148,24 +158,6 @@ <dd> reference to the context menu event (QContextMenuEvent) </dd> -</dl><a NAME="HelpSearchWidget.eventFilter" ID="HelpSearchWidget.eventFilter"></a> -<h4>HelpSearchWidget.eventFilter</h4> -<b>eventFilter</b>(<i>watched, event</i>) -<p> - Public method called to filter the event queue. -</p><dl> -<dt><i>watched</i></dt> -<dd> -the QObject being watched (QObject) -</dd><dt><i>event</i></dt> -<dd> -the event that occurred (QEvent) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -flag indicating whether the event was handled (boolean) -</dd> </dl><a NAME="HelpSearchWidget.keyPressEvent" ID="HelpSearchWidget.keyPressEvent"></a> <h4>HelpSearchWidget.keyPressEvent</h4> <b>keyPressEvent</b>(<i>evt</i>)
--- a/Documentation/Source/eric6.WebBrowser.QtHelp.HelpTocWidget.html Mon Oct 17 18:57:24 2016 +0200 +++ b/Documentation/Source/eric6.WebBrowser.QtHelp.HelpTocWidget.html Mon Oct 17 19:51:51 2016 +0200 @@ -85,12 +85,12 @@ <td><a href="#HelpTocWidget.__expandTOC">__expandTOC</a></td> <td>Private slot to expand the table of contents.</td> </tr><tr> +<td><a href="#HelpTocWidget.__linkActivated">__linkActivated</a></td> +<td>Private slot handling the activation of an entry.</td> +</tr><tr> <td><a href="#HelpTocWidget.__showContextMenu">__showContextMenu</a></td> <td>Private slot showing the context menu.</td> </tr><tr> -<td><a href="#HelpTocWidget.eventFilter">eventFilter</a></td> -<td>Public method called to filter the event queue.</td> -</tr><tr> <td><a href="#HelpTocWidget.expandToDepth">expandToDepth</a></td> <td>Public slot to expand the table of contents to a specific depth.</td> </tr><tr> @@ -131,7 +131,17 @@ <b>__expandTOC</b>(<i></i>) <p> Private slot to expand the table of contents. -</p><a NAME="HelpTocWidget.__showContextMenu" ID="HelpTocWidget.__showContextMenu"></a> +</p><a NAME="HelpTocWidget.__linkActivated" ID="HelpTocWidget.__linkActivated"></a> +<h4>HelpTocWidget.__linkActivated</h4> +<b>__linkActivated</b>(<i>url</i>) +<p> + Private slot handling the activation of an entry. +</p><dl> +<dt><i>url</i> (QUrl)</dt> +<dd> +URL of the activated entry +</dd> +</dl><a NAME="HelpTocWidget.__showContextMenu" ID="HelpTocWidget.__showContextMenu"></a> <h4>HelpTocWidget.__showContextMenu</h4> <b>__showContextMenu</b>(<i>pos</i>) <p> @@ -141,24 +151,6 @@ <dd> position to show the menu at (QPoint) </dd> -</dl><a NAME="HelpTocWidget.eventFilter" ID="HelpTocWidget.eventFilter"></a> -<h4>HelpTocWidget.eventFilter</h4> -<b>eventFilter</b>(<i>watched, event</i>) -<p> - Public method called to filter the event queue. -</p><dl> -<dt><i>watched</i></dt> -<dd> -the QObject being watched (QObject) -</dd><dt><i>event</i></dt> -<dd> -the event that occurred (QEvent) -</dd> -</dl><dl> -<dt>Returns:</dt> -<dd> -flag indicating whether the event was handled (boolean) -</dd> </dl><a NAME="HelpTocWidget.expandToDepth" ID="HelpTocWidget.expandToDepth"></a> <h4>HelpTocWidget.expandToDepth</h4> <b>expandToDepth</b>(<i>depth</i>)
--- a/Helpviewer/HelpIndexWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/Helpviewer/HelpIndexWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,9 +9,9 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QUrl, QEvent +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QEvent from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit, QMenu, \ - QDialog + QDialog, QApplication class HelpIndexWidget(QWidget): @@ -54,32 +54,73 @@ self.__layout.addWidget(self.__searchEdit) self.__index = self.__engine.indexWidget() - self.__index.installEventFilter(self) + self.__index.setContextMenuPolicy(Qt.CustomContextMenu) self.__engine.indexModel().indexCreationStarted.connect( self.__disableSearchEdit) self.__engine.indexModel().indexCreated.connect( self.__enableSearchEdit) - self.__index.activated.connect(self.__activated) + self.__index.linkActivated.connect(self.__linkActivated) + self.__index.linksActivated.connect(self.__linksActivated) + self.__index.customContextMenuRequested.connect( + self.__showContextMenu) self.__searchEdit.returnPressed.connect( self.__index.activateCurrentItem) self.__layout.addWidget(self.__index) - - self.__index.viewport().installEventFilter(self) - def __activated(self, idx): + @pyqtSlot(QUrl, str) + def __linkActivated(self, url, keyword, modifiers=None): """ Private slot to handle the activation of a keyword entry. - @param idx index of the activated entry (QModelIndex) + @param url URL of the selected entry + @type QUrl + @param keyword keyword for the URL + @type str + @keyparam modifiers keyboard modifiers + @type Qt.KeyboardModifiers or None + """ + if modifiers is None: + modifiers = QApplication.keyboardModifiers() + if not url.isEmpty() and url.isValid(): + if modifiers & Qt.ControlModifier: + self.__mw.newTab(url) + else: + self.linkActivated.emit(url) + + def __linksActivated(self, links, keyword): + """ + Private slot to handle the activation of an entry with multiple links. + + @param links dictionary containing the links + @type dict of key:str and value:QUrl + @param keyword keyword for the entry + @type str """ - model = self.__index.model() - if model is not None: - keyword = model.data(idx, Qt.DisplayRole) - links = model.linksForKeyword(keyword) - if len(links) == 1: - self.linkActivated.emit(QUrl(links[list(links.keys())[0]])) - else: - self.linksActivated.emit(links, keyword) + modifiers = QApplication.keyboardModifiers() + if len(links) == 1: + url = QUrl(links[list(links.keys())[0]]) + else: + url = self.__selectLink(links, keyword) + self.__linkActivated(url, keyword, modifiers) + + def __selectLink(self, links, keyword): + """ + Private method to give the user a chance to select among the + returned links. + + @param links dictionary of document title and URL to select from + @type dictionary of str (key) and QUrl (value) + @param keyword keyword for the link set + @type str + @return selected link + @rtype QUrl + """ + link = QUrl() + from .HelpTopicDialog import HelpTopicDialog + dlg = HelpTopicDialog(self, keyword, links) + if dlg.exec_() == QDialog.Accepted: + link = dlg.link() + return link def __filterIndices(self, filter): """ @@ -138,44 +179,34 @@ self.__index.setCurrentIndex(idx) elif event.key() == Qt.Key_Escape: self.escapePressed.emit() - elif self.__index and watched == self.__index and \ - event.type() == QEvent.ContextMenu: - idx = self.__index.indexAt(event.pos()) - if idx.isValid(): - menu = QMenu() - curTab = menu.addAction(self.tr("Open Link")) - newTab = menu.addAction(self.tr("Open Link in New Tab")) - menu.move(self.__index.mapToGlobal(event.pos())) - - act = menu.exec_() - if act == curTab: - self.__activated(idx) - elif act == newTab: - model = self.__index.model() - if model is not None: - keyword = model.data(idx, Qt.DisplayRole) - links = model.linksForKeyword(keyword) - if len(links) == 1: - self.__mw.newTab(list(links.values())[0]) - elif len(links) > 1: - from .HelpTopicDialog import HelpTopicDialog - dlg = HelpTopicDialog(self, keyword, links) - if dlg.exec_() == QDialog.Accepted: - self.__mw.newTab(dlg.link()) - elif self.__index and watched == self.__index.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - idx = self.__index.indexAt(event.pos()) - if idx.isValid() and event.button() == Qt.MidButton: - model = self.__index.model() - if model is not None: - keyword = model.data(idx, Qt.DisplayRole) - links = model.linksForKeyword(keyword) - if len(links) == 1: - self.__mw.newTab(list(links.values())[0]) - elif len(links) > 1: - from .HelpTopicDialog import HelpTopicDialog - dlg = HelpTopicDialog(self, keyword, links) - if dlg.exec_() == QDialog.Accepted: - self.__mw.newTab(dlg.link()) return QWidget.eventFilter(self, watched, event) + + def __showContextMenu(self, pos): + """ + Private slot showing the context menu. + + @param pos position to show the menu at (QPoint) + """ + idx = self.__index.indexAt(pos) + if idx.isValid(): + menu = QMenu() + curTab = menu.addAction(self.tr("Open Link")) + newTab = menu.addAction(self.tr("Open Link in New Tab")) + menu.move(self.__index.mapToGlobal(pos)) + + act = menu.exec_() + model = self.__index.model() + if model is not None: + keyword = model.data(idx, Qt.DisplayRole) + links = model.linksForKeyword(keyword) + if len(links) == 1: + link = QUrl(links[list(links.keys())[0]]) + else: + link = self.__selectLink(links, keyword) + + if not link.isEmpty() and link.isValid(): + if act == curTab: + self.linkActivated.emit(link) + elif act == newTab: + self.__mw.newTab(link)
--- a/Helpviewer/HelpSearchWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/Helpviewer/HelpSearchWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,7 +9,7 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QEvent, QUrl +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl from PyQt5.QtWidgets import QWidget, QVBoxLayout, QTextBrowser, QApplication, \ QMenu @@ -48,14 +48,12 @@ self.setFocusProxy(self.__query) self.__query.search.connect(self.__search) - self.__result.requestShowLink.connect(self.linkActivated) + self.__result.requestShowLink.connect(self.__linkActivated) self.__engine.searchingStarted.connect(self.__searchingStarted) self.__engine.searchingFinished.connect(self.__searchingFinished) self.__browser = self.__result.findChildren(QTextBrowser)[0] - if self.__browser: - self.__browser.viewport().installEventFilter(self) def __search(self): """ @@ -78,24 +76,25 @@ """ QApplication.restoreOverrideCursor() - def eventFilter(self, watched, event): + @pyqtSlot(QUrl) + def __linkActivated(self, url): """ - Public method called to filter the event queue. + Private slot handling the activation of an entry. - @param watched the QObject being watched (QObject) - @param event the event that occurred (QEvent) - @return flag indicating whether the event was handled (boolean) + @param url URL of the activated entry + @type QUrl """ - if self.__browser and watched == self.__browser.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - link = self.__result.linkAt(event.pos()) - if not link.isEmpty() and link.isValid(): - ctrl = event.modifiers() & Qt.ControlModifier - if (event.button() == Qt.LeftButton and ctrl) or \ - event.button() == Qt.MidButton: - self.__mw.newTab(link) - - return QWidget.eventFilter(self, watched, event) + if not url.isEmpty() and url.isValid(): + buttons = QApplication.mouseButtons() + modifiers = QApplication.keyboardModifiers() + + if buttons & Qt.MidButton: + self.__mw.newTab(url) + else: + if modifiers & Qt.ControlModifier: + self.__mw.newTab(url) + else: + self.linkActivated.emit(url) def keyPressEvent(self, evt): """
--- a/Helpviewer/HelpTocWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/Helpviewer/HelpTocWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,8 +9,8 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QEvent, QUrl -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QMenu +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QMenu, QApplication class HelpTocWidget(QWidget): @@ -38,7 +38,6 @@ self.__expandDepth = -2 self.__tocWidget = self.__engine.contentWidget() - self.__tocWidget.viewport().installEventFilter(self) self.__tocWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.__layout = QVBoxLayout(self) @@ -46,11 +45,31 @@ self.__tocWidget.customContextMenuRequested.connect( self.__showContextMenu) - self.__tocWidget.linkActivated.connect(self.linkActivated) + self.__tocWidget.linkActivated.connect(self.__linkActivated) model = self.__tocWidget.model() model.contentsCreated.connect(self.__expandTOC) + @pyqtSlot(QUrl) + def __linkActivated(self, url): + """ + Private slot handling the activation of an entry. + + @param url URL of the activated entry + @type QUrl + """ + if not url.isEmpty() and url.isValid(): + buttons = QApplication.mouseButtons() + modifiers = QApplication.keyboardModifiers() + + if buttons & Qt.MidButton: + self.__mw.newTab(url) + else: + if modifiers & Qt.ControlModifier: + self.__mw.newTab(url) + else: + self.linkActivated.emit(url) + def __expandTOC(self): """ Private slot to expand the table of contents. @@ -89,27 +108,6 @@ if evt.key() == Qt.Key_Escape: self.escapePressed.emit() - def eventFilter(self, watched, event): - """ - Public method called to filter the event queue. - - @param watched the QObject being watched (QObject) - @param event the event that occurred (QEvent) - @return flag indicating whether the event was handled (boolean) - """ - if self.__tocWidget and watched == self.__tocWidget.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - if self.__tocWidget.indexAt(event.pos()).isValid() and \ - event.button() == Qt.LeftButton: - self.itemClicked(self.__tocWidget.currentIndex()) - elif self.__tocWidget.indexAt(event.pos()).isValid() and \ - event.button() == Qt.MidButton: - model = self.__tocWidget.model() - itm = model.contentItemAt(self.__tocWidget.currentIndex()) - self.__mw.newTab(itm.url()) - - return QWidget.eventFilter(self, watched, event) - def itemClicked(self, index): """ Public slot handling a click of a TOC entry.
--- a/WebBrowser/QtHelp/HelpIndexWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/WebBrowser/QtHelp/HelpIndexWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,7 +9,7 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QUrl, QEvent +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QEvent from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit, QMenu, \ QDialog, QApplication @@ -56,47 +56,60 @@ self.__layout.addWidget(self.__searchEdit) self.__index = self.__engine.indexWidget() - self.__index.installEventFilter(self) self.__index.setContextMenuPolicy(Qt.CustomContextMenu) self.__engine.indexModel().indexCreationStarted.connect( self.__disableSearchEdit) self.__engine.indexModel().indexCreated.connect( self.__enableSearchEdit) - self.__index.activated.connect(self.__activated) + self.__index.linkActivated.connect(self.__linkActivated) + self.__index.linksActivated.connect(self.__linksActivated) self.__index.customContextMenuRequested.connect( self.__showContextMenu) self.__searchEdit.returnPressed.connect( self.__index.activateCurrentItem) self.__layout.addWidget(self.__index) - - self.__index.viewport().installEventFilter(self) - def __activated(self, idx, midButton=False): + @pyqtSlot(QUrl, str) + def __linkActivated(self, url, keyword, modifiers=None): """ Private slot to handle the activation of a keyword entry. - @param idx index of the activated entry - @type QModelIndex - @param midButton flag indicating a middle mouse button release - @type bool + @param url URL of the selected entry + @type QUrl + @param keyword keyword for the URL + @type str + @keyparam modifiers keyboard modifiers + @type Qt.KeyboardModifiers or None """ - model = self.__index.model() - if model is not None: + if modifiers is None: modifiers = QApplication.keyboardModifiers() - keyword = model.data(idx, Qt.DisplayRole) - links = model.linksForKeyword(keyword) - if len(links) == 1: - link = QUrl(links[list(links.keys())[0]]) + if not url.isEmpty() and url.isValid(): + if modifiers & (Qt.ControlModifier | Qt.ShiftModifier) == \ + (Qt.ControlModifier | Qt.ShiftModifier): + self.newBackgroundTab.emit(url) + elif modifiers & Qt.ControlModifier: + self.newTab.emit(url) + elif modifiers & Qt.ShiftModifier: + self.newWindow.emit(url) else: - link = self.__selectLink(links, keyword) - if not link.isEmpty() and link.isValid(): - if modifiers & Qt.ControlModifier or midButton: - self.newTab.emit(link) - elif modifiers & Qt.ShiftModifier: - self.newWindow.emit(link) - else: - self.openUrl.emit(link) + self.openUrl.emit(url) + + def __linksActivated(self, links, keyword): + """ + Private slot to handle the activation of an entry with multiple links. + + @param links dictionary containing the links + @type dict of key:str and value:QUrl + @param keyword keyword for the entry + @type str + """ + modifiers = QApplication.keyboardModifiers() + if len(links) == 1: + url = QUrl(links[list(links.keys())[0]]) + else: + url = self.__selectLink(links, keyword) + self.__linkActivated(url, keyword, modifiers) def __selectLink(self, links, keyword): """ @@ -174,11 +187,6 @@ self.__index.setCurrentIndex(idx) elif event.key() == Qt.Key_Escape: self.escapePressed.emit() - elif self.__index and watched == self.__index.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - idx = self.__index.indexAt(event.pos()) - if idx.isValid(): - self.__activated(idx, midButton=event.button() == Qt.MidButton) return QWidget.eventFilter(self, watched, event) @@ -208,11 +216,12 @@ else: link = self.__selectLink(links, keyword) - if act == curTab: - self.openUrl.emit(link) - elif act == newTab: - self.newTab.emit(link) - elif act == newBackgroundTab: - self.newBackgroundTab.emit(link) - elif act == newWindow: - self.newWindow.emit(link) + if not link.isEmpty() and link.isValid(): + if act == curTab: + self.openUrl.emit(link) + elif act == newTab: + self.newTab.emit(link) + elif act == newBackgroundTab: + self.newBackgroundTab.emit(link) + elif act == newWindow: + self.newWindow.emit(link)
--- a/WebBrowser/QtHelp/HelpSearchWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/WebBrowser/QtHelp/HelpSearchWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,7 +9,7 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QEvent, QUrl +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl from PyQt5.QtWidgets import QWidget, QVBoxLayout, QTextBrowser, QApplication, \ QMenu @@ -56,14 +56,12 @@ self.setFocusProxy(self.__query) self.__query.search.connect(self.__search) - self.__result.requestShowLink.connect(self.openUrl) + self.__result.requestShowLink.connect(self.__linkActivated) self.__engine.searchingStarted.connect(self.__searchingStarted) self.__engine.searchingFinished.connect(self.__searchingFinished) self.__browser = self.__result.findChildren(QTextBrowser)[0] - if self.__browser: - self.__browser.viewport().installEventFilter(self) def __search(self): """ @@ -86,29 +84,30 @@ """ QApplication.restoreOverrideCursor() - def eventFilter(self, watched, event): + @pyqtSlot(QUrl) + def __linkActivated(self, url): """ - Public method called to filter the event queue. + Private slot handling the activation of an entry. - @param watched the QObject being watched (QObject) - @param event the event that occurred (QEvent) - @return flag indicating whether the event was handled (boolean) + @param url URL of the activated entry + @type QUrl """ - if self.__browser and watched == self.__browser.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - link = self.__result.linkAt(event.pos()) - if not link.isEmpty() and link.isValid(): - if event.button() == Qt.LeftButton: - if event.modifiers() & Qt.ControlModifier: - self.newTab.emit(link) - elif event.modifiers() & Qt.ShiftModifier: - self.newWindow.emit(link) - else: - self.openUrl.emit(link) - elif event.button() == Qt.MidButton: - self.newTab.emit(link) - - return QWidget.eventFilter(self, watched, event) + if not url.isEmpty() and url.isValid(): + buttons = QApplication.mouseButtons() + modifiers = QApplication.keyboardModifiers() + + if buttons & Qt.MidButton: + self.newTab.emit(url) + else: + if modifiers & (Qt.ControlModifier | Qt.ShiftModifier) == \ + (Qt.ControlModifier | Qt.ShiftModifier): + self.newBackgroundTab.emit(url) + elif modifiers & Qt.ControlModifier: + self.newTab.emit(url) + elif modifiers & Qt.ShiftModifier: + self.newWindow.emit(url) + else: + self.openUrl.emit(url) def keyPressEvent(self, evt): """
--- a/WebBrowser/QtHelp/HelpTocWidget.py Mon Oct 17 18:57:24 2016 +0200 +++ b/WebBrowser/QtHelp/HelpTocWidget.py Mon Oct 17 19:51:51 2016 +0200 @@ -9,8 +9,8 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSignal, Qt, QEvent, QUrl -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QMenu +from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QMenu, QApplication class HelpTocWidget(QWidget): @@ -43,7 +43,6 @@ self.__expandDepth = -2 self.__tocWidget = self.__engine.contentWidget() - self.__tocWidget.viewport().installEventFilter(self) self.__tocWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.__tocWidget.setSortingEnabled(True) @@ -52,11 +51,36 @@ self.__tocWidget.customContextMenuRequested.connect( self.__showContextMenu) - self.__tocWidget.linkActivated.connect(self.openUrl) + self.__tocWidget.linkActivated.connect(self.__linkActivated) model = self.__tocWidget.model() model.contentsCreated.connect(self.__contentsCreated) + @pyqtSlot(QUrl) + def __linkActivated(self, url): + """ + Private slot handling the activation of an entry. + + @param url URL of the activated entry + @type QUrl + """ + if not url.isEmpty() and url.isValid(): + buttons = QApplication.mouseButtons() + modifiers = QApplication.keyboardModifiers() + + if buttons & Qt.MidButton: + self.newTab.emit(url) + else: + if modifiers & (Qt.ControlModifier | Qt.ShiftModifier) == \ + (Qt.ControlModifier | Qt.ShiftModifier): + self.newBackgroundTab.emit(url) + elif modifiers & Qt.ControlModifier: + self.newTab.emit(url) + elif modifiers & Qt.ShiftModifier: + self.newWindow.emit(url) + else: + self.openUrl.emit(url) + def __contentsCreated(self): """ Private slot to be run after the contents was generated. @@ -102,34 +126,6 @@ if evt.key() == Qt.Key_Escape: self.escapePressed.emit() - def eventFilter(self, watched, event): - """ - Public method called to filter the event queue. - - @param watched the QObject being watched (QObject) - @param event the event that occurred (QEvent) - @return flag indicating whether the event was handled (boolean) - """ - if self.__tocWidget and watched == self.__tocWidget.viewport() and \ - event.type() == QEvent.MouseButtonRelease: - if self.__tocWidget.indexAt(event.pos()).isValid(): - model = self.__tocWidget.model() - itm = model.contentItemAt(self.__tocWidget.currentIndex()) - if itm: - link = itm.url() - if not link.isEmpty() and link.isValid(): - if event.button() == Qt.LeftButton: - if event.modifiers() & Qt.ControlModifier: - self.newTab.emit(link) - elif event.modifiers() & Qt.ShiftModifier: - self.newWindow.emit(link) - else: - self.openUrl.emit(link) - elif event.button() == Qt.MidButton: - self.newTab.emit(link) - - return QWidget.eventFilter(self, watched, event) - def syncToContent(self, url): """ Public method to sync the TOC to the displayed page.