From: Jon TURNEY <jon.turney@dronecode.org.uk>
To: cygwin-apps@cygwin.com
Cc: Jon TURNEY <jon.turney@dronecode.org.uk>
Subject: [PATCH setup 1/3] Fix selecting sites added to the download site list box
Date: Mon, 21 Apr 2014 11:16:00 -0000 [thread overview]
Message-ID: <1398078987-5116-2-git-send-email-jon.turney@dronecode.org.uk> (raw)
In-Reply-To: <1398078987-5116-1-git-send-email-jon.turney@dronecode.org.uk>
Fix selecting sites added to the download site list box which have the same
protocol and hostname as an offical cygwin mirror.
If I add the site http://mirrors.kernel.org/sources.redhat.com/cygwinports/ to
setup's mirror list, using the GUI or --site option, I get two indistinguishable
entries named http://mirrors.kernel.org in the mirror list box.
Because PopulateListBox() uses the displayed string in the list control to
locate the itesm to select, we end up with a random one of those two
indistinguishable entries selected (usually the previously existing one).
Even if you manually correct the selection, the same problem will re-occur when
the selected sites are saved and restored on the next setup run.
Fix this by selecting by the index in the all_site_list vector, instead of by
displayed text.
2014-04-19 Jon TURNEY <jon.turney@dronecode.org.uk>
* site.cc (PopulateListBox): Select listbox items by finding the
index of the item with a matching full URL, not by LB_FINDSTRING
which does an inexact match on the displayed URL.
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
---
site.cc | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/site.cc b/site.cc
index 2ed5d7b..e7d4113 100644
--- a/site.cc
+++ b/site.cc
@@ -637,10 +637,12 @@ SitePage::PopulateListBox ()
for (SiteList::const_iterator n = site_list.begin ();
n != site_list.end (); ++n)
{
- int index = SendMessage (listbox, LB_FINDSTRING, (WPARAM) - 1,
- (LPARAM) n->displayed_url.c_str());
- if (index != LB_ERR)
- {
+ SiteList::iterator i = find (all_site_list.begin(),
+ all_site_list.end(), *n);
+ if (i != all_site_list.end())
+ {
+ int index = i - all_site_list.begin();
+
// Highlight the selected item
SendMessage (listbox, LB_SELITEMRANGE, TRUE, (index << 16) | index);
// Make sure it's fully visible
--
1.8.5.5
next prev parent reply other threads:[~2014-04-21 11:16 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 11:16 [PATCH setup 0/3] Setup download site list fixes Jon TURNEY
2014-04-21 11:16 ` [PATCH setup 2/3] Correctly make displayed_url for non-FQDNs Jon TURNEY
2014-04-21 11:16 ` Jon TURNEY [this message]
2014-04-21 11:16 ` [PATCH setup 3/3] Add the last element of URL path to site chooser, if interesting Jon TURNEY
2014-04-21 14:10 ` Christopher Faylor
2014-04-21 18:12 ` Jon TURNEY
2014-04-22 7:53 ` Corinna Vinschen
2014-04-22 14:47 ` Christopher Faylor
2014-04-22 17:50 ` Jon TURNEY
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1398078987-5116-2-git-send-email-jon.turney@dronecode.org.uk \
--to=jon.turney@dronecode.org.uk \
--cc=cygwin-apps@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).