From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic301-22.consmr.mail.ir2.yahoo.com (sonic301-22.consmr.mail.ir2.yahoo.com [77.238.176.99]) by sourceware.org (Postfix) with ESMTPS id 2A0E13844051 for ; Sat, 6 Mar 2021 17:35:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2A0E13844051 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052119; bh=chn1PQJqCJuhFeBWY6uVIkSl45eZWrS0kfodlhktUfq=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=QgrnSv4FfNww2O1TBD9oco4utWyiKkyh8W94yXZ6rov5F1uPBbo4wHcN3AqKuJtjcsuB1MjaTlIH55MC6x+vHOKonqe5QiHLJ5oy4E5EcSQTX29gqjM4RIZbITk33t1muU4VYq6qt0XSBXJiCFz9K2xn489CeGf8+rCbbV9uSUVz/pdwJRlWVgQrAtkMmnnHySfdBa1FdVwjmdK1QFrPfl+KdmM7t/5MCrQJF5gc1RoqdGpVwmievInAlyNRNFHx8ZbJ+o1cWJfD/SXQpau1ZfLEVcVAGE10TuyCehENO3vnMVEml1//A0D5fOECd1X0ELvDWzcebECsDDCrtsqX1w== X-YMail-OSG: Zznq6TkVM1kQ1Ow1.oga8UpZhfzX1HsUpwDJNagXbqeog2XovIJRu7SgYrkMMcY Ox5Mfe5PVBQeCcy804xZ1Gf2VGssGKBe1ae96VprPPrzd4MpVwr76HRLvcgxKajaH3IfZGfofrHC jMBRZI3oApIgR4w6A0OzhR3kaxN8dMjIf2M75BzfmKXk.vEGLvW73uAL1Ae3CfzJQ5xqYk_pO19U 9p2VjH3dEbKgtlTzlBFOcLrlV0lhII0p1EajNexkdscU9TGVk2.GhJYZUR98Kj9zBYzGyv9umEuk NbI1KrE5EaadN8XMPGRGNOWoNYbU44e2Wfr1jzVFmtld5D_bfpwCEACCL4qmd7RdupeqKs7_BOBL gpYbsUGAudvx2bO5S_GnQe1L2QDQ5IYFRGEDTQGwH5.SXlh2ZfJTzt2aK915FAdsJt_B_grTg2o3 lCntoJIwa9ovLkcOCntYt8PAS2KulkCNpih_.W03JpwyZW1e9ddW7rGSHhzRgS5ryLlimn2ih1.W mnzcV9kVQAZsn7XemZu5Ijj.NT2JrUcdSKvC24ihfPAEkjASj7Duzw9LF4KVJ.JP3wsi_IfzhcaH dIrWSC2Aqp.Sme0Vu6QUSEt3C.BvYj_QktX6dQ3M8GlUUcwmtngX0arR.KhOHOwFdbBV7Fw1WNZz aj6Hh59ezDn5tG1uGJmW_MyneFL84IpATrPNDTUieYJJSQB6.wy7U4Don2nl.qzklIcWyDdUJrO4 Lyn_xP8KqLTO9RuXyLXhdePuFs12oAj544FMRWV2QsfJTwSobQ.lALFIHRWR2oYhQTX.P7Hi8n8N z_av6JL6FPnRJ7MCNIVnBQti2c7lgG4cx8d_KXu0lNxBT9wkr5pOPY0lIzDCHFjxw6o7WALpFU0s kPvPx2QiS8VaaZyh73oCttax5pnKcuPNCAKwBhy6UcbZNKiIRUUFtb7SbFtP5JRuhQ049D95buV2 RMSLyy1Dw4LIflZN26_rfMgOmt_sbuQ7rIhlhE7pJIvoeOtXGHqAYSFKA_PpNonTUZsXfWOFM2xS 2KCLK9wFZKHE.WtmTfGcFDUdNsS32EtEdoh9u5PS4dzddcPGG8tCw6M6SIa3Xcy5NpgZMmPDgi5w .WD1mvNBKjP4Rmw6Tqi3r8TNVzIL1uCqFyaUHts_xrHazEGQGLfew_RViNifvRwUqF0pH_tOyAqE fe.9cUcgLAcrzw8OFSn3eK.hqozPF4HdKPnSmx3tIw3gwC4pily22vWc2s39Msmw2StAfgh9lHDp LSK9eiQYd9H5EIlrmQKWTS6gCkCWrZWyQL3qgq.ZDPyGDBX_NR7weLW9NlOyjSEl22XMSwITRuCU DBccmRQjeJX8x3AiOpiVn2w4rhHKjQmbo8xNLKljTGH0Qr9oZ1OSg_RAIEYHU6v_KLluDTnWvW9N 9gLLgjl18wCzfBvYEbOmTT7qQ_oacC34co8nTaFmoR07ePcWEudWR4z1fHU2ldx8AXoX_rgS5iSc AbvlvEWn7Y3Fxo1C92txKBya1nXgV88wuZPZ0Bnf7D55qQKx_9KRyCB9e0Bf0o_AyCicSLPYygiT eQUlRQ7Zxn7fs_ZgurmTO5gpRuvHs5MK0.vtrochK160i2LwdUDQ74uSgGL9AYpSQlLGNjS.q32e F3jmK2rxLNQyQoshkbWavBzHBp0zwlsoTyTh.X077mWgbzZAL1WuJyheEeXeu3FXJB.fF9OetIhm 44wsSU_qrYC._t2.zGfMi8ryxsqK6b2oNNdNER.HTCm0n7NsbgnXJFtTh3hqwwZnEE.CPrUwd6ad GQK7DxJXnD3MexoGBpA0ttQejQGQQEWkdH.cIq_sSZ7p_Zki.6w53iLofjwM9tFSatgZTwstdFK6 SJnasXIrCfzW0NiJu.nI8oEwE5ff5qinpHqJfiJEtbFPshtvSa1P9fL6aTTXLHH.FS.KcIWONOj0 TmegOzbehaC7pEk5WAZXpMK9mE4Fue5VOpaSy4O.k_D5rrInTfZZB_MZABSTIAAw.uPdJe9Qy5EO 0u4WRza1dJkPPh6G7NOKAB63laiQdAChkhSbXMMLDVCTAttn8DUo130Yvt3wVGMX3NDzsFO5hOl_ m5hF.2hGJ6_LqIqCvJ.cc50rQ7iQLhbk7wyA6gmCAjHoHo9dhq_Jjcy4Puspr1SlsnwuGro3dY9S R9NcelZkrTfzkWSQ0pzl6QxVHHNa57Ms3telw5AP1uraeawFyY1IUchfT5X14WHVEIFjoMXIbzhI B7VQ0bidhCawlEj1LZvAh1BF0GGakeZTGoNGVzw2_ydajpxYXozM5RL7xnQFzbqGFU2VZjnQscTk jv_wQtG4F472.rP42Phb3_y4xweAKXoy6ZwTHtHWUHagt9IIWga5mpeSXjlfzzWW1ghWHEqYXKMD 7e4vzdO71uH9HLiX2hKPd6ew16ZBvj2iKl0X9x1cnGfscwoH3xZTKtQ2W_IhhxvHBqiv269CyaoO ft2fASaY9ld1u233b X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ir2.yahoo.com with HTTP; Sat, 6 Mar 2021 17:35:19 +0000 Received: by smtp401.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 6a363949cca5081319e57edf8d5c0acc; Sat, 06 Mar 2021 17:35:17 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 01/22] Initial TUI mouse support Date: Sat, 6 Mar 2021 18:33:56 +0100 Message-Id: <20210306173417.21528-2-ssbssa@yahoo.de> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210306173417.21528-1-ssbssa@yahoo.de> References: <20210306173417.21528-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 210306-0, 03/06/2021), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Mar 2021 17:35:21 -0000 Implements an overridable tui_win_info::click method whose arguments are the mouse coordinates inside the specific window, and the mouse button clicked. And if the curses implementation supports 5 buttons, the 4th and 5th buttons are used for scrolling. --- gdb/ser-mingw.c | 5 +++++ gdb/tui/tui-data.h | 4 ++++ gdb/tui/tui-io.c | 32 ++++++++++++++++++++++++++++++++ gdb/tui/tui.c | 2 ++ 4 files changed, 43 insertions(+) diff --git a/gdb/ser-mingw.c b/gdb/ser-mingw.c index 043bb50b577..2bad51310f6 100644 --- a/gdb/ser-mingw.c +++ b/gdb/ser-mingw.c @@ -599,6 +599,11 @@ console_select_thread (void *arg) break; } } + else if (record.EventType == MOUSE_EVENT) + { + SetEvent (state->read_event); + break; + } /* Otherwise discard it and wait again. */ ReadConsoleInput (h, &record, 1, &n_records); diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index b4d788dd0a4..46ccb72b97c 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -137,6 +137,10 @@ struct tui_win_info return true; } + virtual void click (int mouse_x, int mouse_y, int mouse_button) + { + } + void check_and_display_highlight_if_needed (); /* Window handle. */ diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c index a2be4d4353e..7787789f0c7 100644 --- a/gdb/tui/tui-io.c +++ b/gdb/tui/tui-io.c @@ -33,6 +33,7 @@ #include "tui/tui-wingeneral.h" #include "tui/tui-file.h" #include "tui/tui-out.h" +#include "tui/tui-source.h" #include "ui-out.h" #include "cli-out.h" #include @@ -639,6 +640,7 @@ tui_redisplay_readline (void) static void tui_prep_terminal (int notused1) { + mousemask (ALL_MOUSE_EVENTS, NULL); } /* Readline callback to restore the terminal. It is called once each @@ -646,6 +648,7 @@ tui_prep_terminal (int notused1) static void tui_deprep_terminal (void) { + mousemask (0, NULL); } #ifdef TUI_USE_PIPE_FOR_READLINE @@ -978,6 +981,35 @@ tui_dispatch_ctrl_char (unsigned int ch) case KEY_LEFT: win_info->right_scroll (1); break; + case KEY_MOUSE: + { + MEVENT mev; + if (getmouse (&mev) != OK) + break; + + for (tui_win_info *wi : all_tui_windows ()) + if (mev.x > wi->x && mev.x < wi->x + wi->width - 1 + && mev.y > wi->y && mev.y < wi->y + wi->height - 1) + { + if ((mev.bstate & BUTTON1_CLICKED) + || (mev.bstate & BUTTON2_CLICKED) + || (mev.bstate & BUTTON3_CLICKED)) + { + int button = (mev.bstate & BUTTON1_CLICKED) ? 1 + : (mev.bstate & BUTTON2_CLICKED) ? 2 + : 3; + wi->click (mev.x - wi->x - 1, mev.y - wi->y - 1, button); + } +#ifdef BUTTON5_PRESSED + else if (mev.bstate & BUTTON4_PRESSED) + wi->backward_scroll (3); + else if (mev.bstate & BUTTON5_PRESSED) + wi->forward_scroll (3); +#endif + break; + } + } + break; case '\f': break; default: diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c index af92b2a8042..a2654a2e5a4 100644 --- a/gdb/tui/tui.c +++ b/gdb/tui/tui.c @@ -508,6 +508,8 @@ tui_disable (void) rl_startup_hook = 0; rl_already_prompted = 0; + mousemask (0, NULL); + /* Leave curses and restore previous gdb terminal setting. */ endwin (); -- 2.30.1