summaryrefslogtreecommitdiffstats
path: root/win/CS
diff options
context:
space:
mode:
authorsr55 <[email protected]>2018-06-14 19:56:44 +0100
committersr55 <[email protected]>2018-06-14 19:56:44 +0100
commit0c377e599c899845712c22da2d3470df98ab14a7 (patch)
tree8543e3612e7ec5db154af415c8db7b9490234363 /win/CS
parentcd533d4ae47317ffef69bcea6ec69d2a711b7798 (diff)
WinGui: Fix an integer overflow in the UI layer for the start/stop controls. Fixes #1327
Diffstat (limited to 'win/CS')
-rw-r--r--win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs10
-rw-r--r--win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs34
-rw-r--r--win/CS/HandBrakeWPF/HandBrakeWPF.csproj1
-rw-r--r--win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs4
-rw-r--r--win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs2
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs12
-rw-r--r--win/CS/HandBrakeWPF/Views/MainView.xaml5
7 files changed, 53 insertions, 15 deletions
diff --git a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
index 5f983a699..a8277ec3b 100644
--- a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
+++ b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
@@ -67,7 +67,7 @@ namespace HandBrakeWPF.Controls
/// The number property.
/// </summary>
public static readonly DependencyProperty NumberProperty = DependencyProperty.Register(
- "Number", typeof(int), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));
+ "Number", typeof(long), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));
/// <summary>
/// The show time span property.
@@ -225,11 +225,11 @@ namespace HandBrakeWPF.Controls
/// <summary>
/// Gets or sets the number.
/// </summary>
- public int Number
+ public long Number
{
get
{
- return (int)this.GetValue(NumberProperty);
+ return (long)this.GetValue(NumberProperty);
}
set
@@ -337,7 +337,7 @@ namespace HandBrakeWPF.Controls
/// </summary>
private void DecrementNumber()
{
- int newNumber;
+ long newNumber;
if (this.AllowEmpty && this.Number == 0)
{
newNumber = Math.Min(this.Maximum, -this.Increment);
@@ -416,7 +416,7 @@ namespace HandBrakeWPF.Controls
/// </summary>
private void IncrementNumber()
{
- int newNumber;
+ long newNumber;
if (this.AllowEmpty && this.Number == 0)
{
newNumber = Math.Max(this.Minimum, this.Increment);
diff --git a/win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs b/win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs
new file mode 100644
index 000000000..97b44338e
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs
@@ -0,0 +1,34 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="LongToIntConverter.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the FullPathToFileNameConverter type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Converters
+{
+ using System;
+ using System.Globalization;
+ using System.Windows.Data;
+
+ public class LongToIntConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (value != null && value is long && (long)value <= int.MaxValue)
+ {
+ long result = (long)value;
+ return (int)result;
+ }
+
+ return (int)0;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
index bbd1fb88d..3fe2ab917 100644
--- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
+++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
@@ -132,6 +132,7 @@
<Compile Include="Converters\Filters\DenoisePresetConverter.cs" />
<Compile Include="Converters\Filters\SharpenTuneConverter.cs" />
<Compile Include="Converters\Filters\SharpenPresetConverter.cs" />
+ <Compile Include="Converters\LongToIntConverter.cs" />
<Compile Include="Converters\Options\FileSizeConverter.cs" />
<Compile Include="Converters\Options\LogLevelConverter.cs" />
<Compile Include="Converters\OptionTabConverter.cs" />
diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs
index e1f18fd22..c40c6c0b9 100644
--- a/win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs
+++ b/win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs
@@ -184,12 +184,12 @@ namespace HandBrakeWPF.Services.Encode.Model
/// <summary>
/// Gets or sets StartPoint.
/// </summary>
- public int StartPoint { get; set; }
+ public long StartPoint { get; set; }
/// <summary>
/// Gets or sets EndPoint.
/// </summary>
- public int EndPoint { get; set; }
+ public long EndPoint { get; set; }
#endregion
diff --git a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
index 31b6a1fe7..144a1ed26 100644
--- a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
+++ b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
@@ -181,7 +181,7 @@ namespace HandBrakeWPF.Services.Scan.Model
/// <param name="startPoint">The Start Point (Chapters)</param>
/// <param name="endPoint">The End Point (Chapters)</param>
/// <returns>A Timespan</returns>
- public TimeSpan CalculateDuration(int startPoint, int endPoint)
+ public TimeSpan CalculateDuration(long startPoint, long endPoint)
{
IEnumerable<Chapter> chapers =
this.Chapters.Where(c => c.ChapterNumber >= startPoint && c.ChapterNumber <= endPoint);
diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
index 9548fb573..11960ec39 100644
--- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
@@ -811,7 +811,7 @@ namespace HandBrakeWPF.ViewModels
{
get
{
- return this.CurrentTask.StartPoint;
+ return this.CurrentTask.Angle;
}
set
@@ -829,12 +829,13 @@ namespace HandBrakeWPF.ViewModels
/// <summary>
/// Gets or sets SelectedStartPoint.
/// </summary>
- public int SelectedStartPoint
+ public long SelectedStartPoint
{
get
{
return this.CurrentTask.StartPoint;
}
+
set
{
this.CurrentTask.StartPoint = value;
@@ -860,12 +861,13 @@ namespace HandBrakeWPF.ViewModels
/// <summary>
/// Gets or sets SelectedEndPoint.
/// </summary>
- public int SelectedEndPoint
+ public long SelectedEndPoint
{
get
{
return this.CurrentTask.EndPoint;
}
+
set
{
this.CurrentTask.EndPoint = value;
@@ -2306,8 +2308,8 @@ namespace HandBrakeWPF.ViewModels
// Update the Main Window
this.NotifyOfPropertyChange(() => this.Destination);
this.SelectedAngle = this.CurrentTask.Angle;
- int start = this.CurrentTask.StartPoint;
- int end = this.CurrentTask.EndPoint;
+ long start = this.CurrentTask.StartPoint;
+ long end = this.CurrentTask.EndPoint;
this.SelectedPointToPoint = this.CurrentTask.PointToPointMode; // Force reset.
this.SelectedStartPoint = start;
this.SelectedEndPoint = end;
diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml b/win/CS/HandBrakeWPF/Views/MainView.xaml
index 9a45bfdd5..2bc3929cc 100644
--- a/win/CS/HandBrakeWPF/Views/MainView.xaml
+++ b/win/CS/HandBrakeWPF/Views/MainView.xaml
@@ -19,6 +19,7 @@
<UserControl.Resources>
<Converters:BooleanConverter x:Key="booleanConverter" />
<Converters:PresetsMenuConverter x:Key="presetsMenuConverter"/>
+ <Converters:LongToIntConverter x:Key="longToIntConverter" />
<Style TargetType="Button">
<Setter Property="Padding" Value="8,2" />
@@ -359,7 +360,7 @@
MinWidth="60"
Margin="5,0,0,0"
ItemsSource="{Binding StartEndRangeItems}"
- SelectedItem="{Binding SelectedStartPoint}"
+ SelectedItem="{Binding SelectedStartPoint, Converter={StaticResource longToIntConverter}}"
ToolTip="{x:Static Properties:ResourcesTooltips.MainView_StartPoint}"
Visibility="{Binding ShowTextEntryForPointToPointMode,
Converter={StaticResource boolToVisConverter},
@@ -376,7 +377,7 @@
MinWidth="60"
Margin="4,0,0,0"
ItemsSource="{Binding StartEndRangeItems}"
- SelectedItem="{Binding SelectedEndPoint}"
+ SelectedItem="{Binding SelectedEndPoint, Converter={StaticResource longToIntConverter}}"
ToolTip="{x:Static Properties:ResourcesTooltips.MainView_EndPoint}"
Visibility="{Binding ShowTextEntryForPointToPointMode,
Converter={StaticResource boolToVisConverter},