picoe / Eto

Cross platform GUI framework for desktop and mobile applications in .NET
Other
3.55k stars 323 forks source link

[GTK] Incrementing ProgressBar one-by-one maxes out at 28. #2542

Open nvella opened 1 year ago

nvella commented 1 year ago

Expected Behavior

Progress bar value can be set arbitrarily.

Actual Behavior

On the GTK platform, incrementing progress bar Value, one-by-one, maxes out at 28. When incrementing Value by 2, it is able to make it to 100 successfully.

I was not able to reproduce via this method on the Mac64 platform, however I have observed similar behaviour with a Property binding. I think this could be down to an unrelated threading issue however.

image

Code that Demonstrates the Problem

using System;
using Eto;
using Eto.Forms;
using Eto.Drawing;

namespace EtoTest
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            Title = "My Eto Form";
            MinimumSize = new Size(200, 200);

            var progressBar = new ProgressBar();
            var button = new Button((_, _) =>
            {
                progressBar.Value += 1;
                Console.WriteLine($"{progressBar.Value} {progressBar.MinValue} {progressBar.MaxValue}");
            }) { Text = "Increment" };

            Content = new TableLayout(
                progressBar,
                button,
                null);

            var quitCommand = new Command { MenuText = "Quit", Shortcut = Application.Instance.CommonModifier | Keys.Q };
            quitCommand.Executed += (sender, e) => Application.Instance.Quit();

            var aboutCommand = new Command { MenuText = "About..." };
            aboutCommand.Executed += (sender, e) => new AboutDialog().ShowDialog(this);
        }
    }
}

Specifications