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 27F68384A033 for ; Sat, 6 Mar 2021 17:35:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 27F68384A033 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052119; bh=izyc8yEqN5oyE3wfy+OuaI26Rik4ts8riM8mnvd21Da=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=OTyHyPjqirZzKl/cqa0xERHtNa5YKjDlNI+fcVWyWFHdLzgc3EzUq8w3GaGztU43+OQNt1SF6JBmBibUj33cVUeNQh07FuFiTXxmBCTVD/2rhDKqpVUzov5/se3jSMzExf3DIq78BF/moSKPldDl37NYfEh6LKiB95U9n/rlRBMRDmVxIS7xFauQnao+5txFY/dgBRBmdBUh3P/+2eHINsLdqtqPwNK849gmz6PY5nwAS16cr9cxAG0eQNVuAqqWiA/V1+Ow+CuZZGDSvDN2iTZNnj/hyefjtoe6z8xGGqYoCpGJFn5/zSCfKRb6Mn5uYJE1wkehLJEHwnr/rj94Uw== X-YMail-OSG: Hku1ax0VM1laN2bKiBu93sOCK5lghYw_pcczZlHVD0biqlDLq1HMBXn2eFXq9MY Z6dwhdrQklal.15gxhL7jOTeks3QevBGq6Qo9F_hTm9qgv1j7yteEt0QEsq9nywUD7c5KmCU.hGa nKL_wSFpswXZicZjRGiPt3M8jIE8vCX80Z1P3Tks3ig.SB18r1GkS.yKG4wG_NutnrYopWV5c579 iAtOQ9QfjhqprA5uHzXhSgx7UpXgPNwsGUH8lrwcdCENhsd6zA5BUVgrM3RNg3cXLQY.WGVbigQA 0D6t6Cd_Lp0TpIKAeZP0MpKNBX8NFtsP1ARgOJrFNX1AzK.pcTtni8YyxBxConqrDv6aUTx_gjy1 cKd71Wk4oRNXLtte4aw9Xl__MceHhreVS.0IYgl73FPHTbtcQZqlRCHStEBGYu_mVXSUpHVUFE4v vevQ4EarYE3phd67Kd6FBEHAfeVmlQ71pjq_of5Ou1w.6fbi_tj1MILUKA0IsPuS3GitKwg0.PMy aFADngc.qS9QM1krJJKCKsnnuX7u5__sEKUx2Pv8Bw_SQD0Gy5H9KClX9LgHWSvx1rxzYe7rboPK dpidYNWwFdfu5AFHa.uDMVuMSfBuNTKwYxlrEVGDCFx0cO82TdWUpOYSyZOxVcU.GTa7qCwMd3SF Fauk1sHdC.kVumY7oAwoAD5HoUmDik.8KHXwIwOP2jIQGzURrugIahiUdHDozs3vR1GtuatBVuvS Pzhi8CWw3SsFTPyltmxhOCZIYK.tI5kAHz_7D.phtGAFxFhaFUKuw_omq4SHvQTW5m76EuRcM_E9 j6IlnKYb5tpOqNUbTbiLiX.3X9aPJxDHtdlJI4CcxgdSSbsinsjGBqvcQGwGAYAOHh9umfHi0BMv 0vhsUAJ3uaaYYKJj4txWzwH7fTFcel7mnN6llHxlTplKS7gwLOZvdgjmfwFhlgkIxOElZVuE5QK4 YmbFagybhe.hRyWA_zUH3yDRaYaeXaqlhcSnXXhZ84eRwIWJQr.3W9dV8fAdbk9hItsunui9_WaY i6XagszoBHtWMD0SWvIfB9N1CRmYQddAHlQ7iJQZgdmrUrpFVYy972Sl55q2sIegdjykLEPFJxNr Xb5jk5GdgLI96FQiQoFGLoMxgeVQb63q_Uwoc.3NDsVCFNd43SP2nVYrfe111eM99YvlOL5Ha6W6 _ql14TNFDuIqkkvuS5sCUsmJPLnnBz3D3b_kmdt8gpcap2FYOPrDS47kSIYjSfRO4eQW9ml7Oanq 2dvHUtiYe50MV8kx6SDdlIfTjKvD2cnkkR.YFJe39ThQerhPrAKtopBagrtaFejxRdMP8L1I2aK6 fyxYv.vsrHfsS7LGiN8cya_gLv5uKcGykEJ8Aa39V2dzSzwXTclY9ilsx9XSH2z6.LQgswsCSUdZ ITyANYl5xCWBjdUWQ6OD1J7waj8K9aAZAszk9yHsY6QaBIzSz2VpaAWS2QnE0uZ0m2V86GOyItEB 0MLoRQRKjOdZAXrBBib7dnkmJswSmEDtph8h6F1g7G3KLlUHkAvraUnASR8ncH7SJnI0L6eAQUe. vDiXGRRz9j3d4AfkHRyPFDJkh2yTCw3S2dzkVS2TXseKf.gTCHm_EEhcwNFsXHbkiN0tleEhHZ6z 6d5sdjevz9HZmw.3etkvQHsBuT30O6u7qx6ozb94QL5aCa6TzenyyjLOZXpsDt1PYH_VgdMPjmC_ EXdbHeCY0mfKH8d2MDLsRFy9CkrVLwjyVwGb9EO29dEWzLSnrMNJUXn1pJKa58vStWxLYDfkyn81 QQnR6dWxhk.p1AUJ7g3mDuf2.Xs5X6Dqs5dOJOJr8T857Z7ib92FFaYgyMB5jKrjLYH2Dz9SUg8a xopwvmvnmkfRJipkpkzP1t3Tuo1UCqOsVNuaBs48xwymHTiq409LiaOnb4Q6itZdq0TztBrAbAG2 EEw8R6GqWI8Gn9L7OHVF9yn.v22J6lWbhj_W12IObahDzQygT3_wQmX7dyW8h_pn4zwbnMlsEv2N OQVCKlj41x.0a1BguFKiIOcHVfX.2YSCkQgPJw7di4_.itBJDAkDcW7QX7tW8ZpMafX.v9DHOMwu FISAztLPTwnc15jvllPmpYMdSfRTd7BdO8JXkOzNWPq1s1IgX.dmhbTDaBgLDBHRA7XwZ77glJaK quEMOHI9TqhdkAFcFFKYP2F2RmGPwcISTbX0z205kz3.yxJ8wRQ1V9kecUcYlJ1_yhxx6hIbgc5v Fqu23KFBAr7N3yionFsro8dfsQiO6DwsR3gCHVyNYXzZXlZIq0lq.62hNkfKHiMZYkan3IkblGv7 7bZpJo.exWpBQRejiBnhyqSQ_Z0uYbkmqBLQy2RPcAm8msyRrMiWeJgS4HLGV1.f_zzV81G4mzII j29ukahVWWwt0g9Us9WMfHNlsBa0obzf7YZnbcSCTJMFlBC0j91m8CjDaNotlNgUeE8vf9oxeIQd aYxk_xjZTUjbydPDw2usc3G9Tur7wwW_7Mt8KPhSZECVsPDuNqtIY7ZHSdQeXTQ-- 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:18 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 02/22] Create/disable/enable/delete breakpoints in TUI with mouse Date: Sat, 6 Mar 2021 18:33:57 +0100 Message-Id: <20210306173417.21528-3-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.4 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 Target area is the first 3 columns of the TUI source window, where the breakpoint status is shown. On a left click, this either creates a new breakpoint, or if one already exists, inverts the enabled state of it. And a middle click deletes the breakpoint. --- gdb/tui/tui-source.c | 71 ++++++++++++++++++++++++++++++++++++++++++++ gdb/tui/tui-source.h | 2 ++ 2 files changed, 73 insertions(+) diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 69f51ceb6f1..c70485f9612 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -29,6 +29,7 @@ #include "objfiles.h" #include "filenames.h" #include "source-cache.h" +#include "linespec.h" #include "tui/tui.h" #include "tui/tui-data.h" @@ -237,3 +238,73 @@ tui_source_window::show_line_number (int offset) const xsnprintf (text, sizeof (text), "%*d ", m_digits - 1, lineno); waddstr (handle.get (), text); } + +void +tui_source_window::click (int mouse_x, int mouse_y, int mouse_button) +{ + if ((mouse_button == 1 || mouse_button == 2) && mouse_x <= 2) + { + int line = m_start_line_or_addr.u.line_no + mouse_y; + gdb::unique_xmalloc_ptr bp_str; + bp_str.reset (xstrprintf ("%s:%d", m_fullname.get (), line)); + + struct linespec_sals lsal; + lsal.canonical = NULL; + try + { + lsal.sals = decode_line_with_current_source (bp_str.get (), 0); + } + catch (const gdb_exception_error &e) + { + } + + if (lsal.sals.size () == 1) + { + symtab_and_line &sal = lsal.sals[0]; + + breakpoint *bp; + bp = iterate_over_breakpoints ([&] (breakpoint *b) -> bool + { + struct bp_location *loc; + + for (loc = b->loc; loc != NULL; loc = loc->next) + { + if (loc->symtab != NULL + && loc->line_number == sal.line + && filename_cmp (m_fullname.get (), + symtab_to_fullname (loc->symtab)) == 0) + return true; + } + + return false; + }); + + if (mouse_button == 2) + { + if (bp) + delete_breakpoint (bp); + } + else if (mouse_button == 1 && bp) + { + if (bp->enable_state == bp_disabled) + enable_breakpoint (bp); + else + disable_breakpoint (bp); + } + else if (mouse_button == 1) + { + const char *loc_str = bp_str.get (); + event_location_up location = string_to_event_location_basic + (&loc_str, current_language, + symbol_name_match_type::WILD); + + reinitialize_more_filter (); + + create_breakpoint (m_gdbarch, location.get (), NULL, -1, + NULL, 0, 0, bp_breakpoint, 0, + AUTO_BOOLEAN_FALSE, + &bkpt_breakpoint_ops, 0, 1, 0, 0); + } + } + } +} diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h index 4c69b87e8e3..7a395d3eb9e 100644 --- a/gdb/tui/tui-source.h +++ b/gdb/tui/tui-source.h @@ -56,6 +56,8 @@ struct tui_source_window : public tui_source_window_base void display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) override; + void click (int mouse_x, int mouse_y, int mouse_button) override; + protected: void do_scroll_vertical (int num_to_scroll) override; -- 2.30.1