Subject: Bug #2309 fix

From: Neethu Mariya Joy <[email-masked]>
Date: Wed, 28 Feb 2018 00:17:31 +0530

Hi,
I am Neethu Mariya Joy, an undergraduate pursuing BE in Computer Science at
BITS Pilani.

I've attempted to fix https://redmine.postgresql.org/issues/2309.
Codemirrors catches all the keyboard and mouse events when 'readOnly'
option is set to 'noCursor' and does not allow copying.
So, I've set 'readOnly' option to true. In order to hide the cursor, I've
added a class 'hide-cursor-workaround' and applied css styles to hide the
cursor.

I'm attaching my patch as bug2309.diff below as per the contribution
guidelines.

Hope this helps. Thank you for your consideration!

Sincerely,
Neethu Mariya Joy
GitHub <https://github.com/Roboneet> | Linkedin
<https://www.linkedin.com/in/neethu-mariya-joy-653655128/>
diff --git a/web/pgadmin/tools/sqleditor/static/css/sqleditor.css b/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
index 1e29c3f..69381e5 100644
--- a/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
+++ b/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
@@ -601,4 +601,9 @@ input.editor-checkbox:focus {
 .ajs-body .warn-footer {
   font-size: 13px;
   line-height: 3em;
+}
+
+/* workaround for codemirrors 'readOnly' option which is set to true instead of 'noCursor' */
+.hide-cursor-workaround .CodeMirror-cursors{
+  display: none;
 }
\ No newline at end of file
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index 349c9a0..91dbe3a 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -2016,12 +2016,12 @@ define('tools.querytool', [
           }
         }
         else {
-          // Disable codemirror by setting cursor to nocursor and background to dark.
+          // Disable codemirror by setting readOnly option to true, background to dark, and cursor, hidden.
           self.init_events();
-          self.gridView.query_tool_obj.setOption('readOnly', 'nocursor');
+          self.gridView.query_tool_obj.setOption('readOnly', true);
           var cm = self.gridView.query_tool_obj.getWrapperElement();
           if (cm) {
-            cm.className += ' bg-gray-1 opacity-5';
+            cm.className += ' bg-gray-1 opacity-5 hide-cursor-workaround';
           }
           self.disable_tool_buttons(true);
           self.execute_data_query();

---

From: Joao De Almeida Pereira <[email-masked]>
Date: Thu, 01 Mar 2018 22:05:57 +0000

Hello Neethu,

We run the patch though our test pipeline and all tests are green.
Everything looks good with this patch

Thanks
Joao
On Thu, Mar 1, 2018 at 10:37 AM Neethu Mariya Joy <[email-masked]>
wrote:

> Hi,
> I am Neethu Mariya Joy, an undergraduate pursuing BE in Computer Science
> at BITS Pilani.
>

---

From: Murtuza Zabuawala <[email-masked]>
Date: Fri, 2 Mar 2018 09:45:20 +0530

Hi Neethu,

Patch looks good.

We are facing similar issue on dashboard as well where users are not able
to copy the sql from server activity table, I've attached screenshot for
your reference.
Bug: https://redmine.postgresql.org/issues/3137

--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On Fri, Mar 2, 2018 at 3:35 AM, Joao De Almeida Pereira <
[email-masked]> wrote:

> On Thu, Mar 1, 2018 at 10:37 AM Neethu Mariya Joy <
> [email-masked]> wrote:
>
>> Hi,

---

From: Neethu Mariya Joy <[email-masked]>
Date: Fri, 2 Mar 2018 14:35:10 +0530

Hi,

A similar workaround fixed #3137 too. I'm attaching the patch below.

Sincerely,
Neethu

On Fri, Mar 2, 2018 at 9:45 AM, Murtuza Zabuawala <
[email-masked]> wrote:

>>> So, I've set 'readOnly' option to true. In order to hide the cursor,
>>> I've added a class 'hide-cursor-workaround' and applied css styles to hide
>>> the cursor.
>>>

---

From: Dave Page <[email-masked]>
Date: Fri, 2 Mar 2018 13:47:30 +0000

Hi

Thank you both. I've committed this with a minor tweak to include a space
before the { in the CSS, to match the existing formatting.

Welcome to the project Neethu!

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Dave Page <[email-masked]>
Date: Fri, 2 Mar 2018 14:39:28 +0000

Thanks, applied.

On Fri, Mar 2, 2018 at 9:05 AM, Neethu Mariya Joy <[email-masked]

> On Fri, Mar 2, 2018 at 9:45 AM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> Hi Neethu,
>>
>> Patch looks good.
>>
>>>> I am Neethu Mariya Joy, an undergraduate pursuing BE in Computer
>>>> Science at BITS Pilani.
>>>>