public inbox for cygwin-apps@cygwin.com
 help / color / mirror / Atom feed
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

  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).