Exemplo n.º 1
0
        private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListBoxArticle selectedListBox = ActiveControl as ListBoxArticle;

            if (selectedListBox != null)
            {
                selectedListBox.BeginUpdate();

                // workaround for Wine issue: use of {HOME} then +{END} leads to 100% CPU and locked application
                // so use slower SetSelected if on Linux
                if (Globals.UsingLinux)
                {
                    for (int i = 0; i < selectedListBox.Items.Count; i++)
                    {
                        selectedListBox.SetSelected(i, true);
                    }
                }
                else
                {
                    SendKeys.SendWait("{HOME}");
                    SendKeys.SendWait("+{END}");
                }

                selectedListBox.EndUpdate();
            }
        }
Exemplo n.º 2
0
        public void RemoveSelected()
        {
            ListBoxArticle lbArticles = new ListBoxArticle();

            const int big = 70000, sel = 5000;

            // sequential block deletion performance
            for (int i = 0; i < big; i++)
                lbArticles.Items.Add(new Article(i.ToString()));

            for (int j = sel; j > 0; j--)
                lbArticles.SetSelected(big-j, true);

            lbArticles.RemoveSelected(true);

            if (Globals.UsingMono) // Mono implementation of SetSelected does not seem to honour second input to multi-select
                Assert.AreEqual(lbArticles.Items.Count, big-1);
            else
                Assert.AreEqual(lbArticles.Items.Count, big-sel);

            // single selected item deletion performance
            lbArticles.Items.Clear();
            for (int i = 0; i < big*3; i++)
                lbArticles.Items.Add(new Article(i.ToString()));
            lbArticles.SetSelected((int)big/2, true);
            lbArticles.RemoveSelected(true);
            Assert.AreEqual(lbArticles.Items.Count, big*3-1);

            // non-sequential deletion
            lbArticles.Items.Clear();
            for (int i = 0; i < 10; i++)
                lbArticles.Items.Add(new Article(i.ToString()));
            lbArticles.SetSelected(1, true);
            lbArticles.SetSelected(3, true);
            lbArticles.RemoveSelected(true);
            if (Globals.UsingMono)
            {
                lbArticles.SetSelected(1, true);
                lbArticles.RemoveSelected(true);
            }
            Assert.IsFalse(lbArticles.Items.Contains(new Article("1")));
            Assert.IsFalse(lbArticles.Items.Contains(new Article("3")));
            Assert.IsTrue(lbArticles.Items.Contains(new Article("2")));

            lbArticles.Items.Clear();
            for (int i = 0; i < 10; i++)
                lbArticles.Items.Add(new Article(i.ToString()));
            lbArticles.SetSelected(1, true);
            lbArticles.SetSelected(5, true);
            lbArticles.RemoveSelected(true);
            if (Globals.UsingMono)
            {
                lbArticles.SetSelected(1, true);
                lbArticles.RemoveSelected(true);
            }

            Assert.IsFalse(lbArticles.Items.Contains(new Article("1")));
            Assert.IsFalse(lbArticles.Items.Contains(new Article("5")));
            Assert.IsTrue(lbArticles.Items.Contains(new Article("2")));

            lbArticles.Items.Clear();
            lbArticles.Items.Add(new Article("A"));
            lbArticles.Items.Add(new Article("A"));
            lbArticles.Items.Add(new Article("B"));
            lbArticles.SetSelected(2, true);
            lbArticles.RemoveSelected(false);
            Assert.AreEqual(lbArticles.Items.Count, 2, "Duplicates not removed if not in duplicate mode");

            lbArticles.Items.Clear();
            lbArticles.Items.Add(new Article("A"));
            lbArticles.Items.Add(new Article("B"));
            lbArticles.Items.Add(new Article("C"));
            lbArticles.SetSelected(0, true);
            lbArticles.SetSelected(1, true);
            lbArticles.SetSelected(2, true);
            lbArticles.RemoveSelected(false);
            Assert.AreEqual(lbArticles.Items.Count, 0, "List cleared if all items selected and removed");
        }