GithubHelp home page GithubHelp logo

microsoft / calculator Goto Github PK

View Code? Open in Web Editor NEW
28.9K 587.0 5.2K 36.79 MB

Windows Calculator: A simple yet powerful calculator that ships with Windows

License: MIT License

PowerShell 0.30% C# 25.72% C++ 72.53% C 1.40% Shell 0.05%
uwp windows windows-10 xaml cpp csharp windows-11

calculator's Introduction

Calculator

The Windows Calculator app is a modern Windows app written in C++ and C# that ships pre-installed with Windows. The app provides standard, scientific, and programmer calculator functionality, as well as a set of converters between various units of measurement and currencies.

Calculator ships regularly with new features and bug fixes. You can get the latest version of Calculator in the Microsoft Store.

Build Status

Calculator Screenshot

Features

  • Standard Calculator functionality which offers basic operations and evaluates commands immediately as they are entered.
  • Scientific Calculator functionality which offers expanded operations and evaluates commands using order of operations.
  • Programmer Calculator functionality which offers common mathematical operations for developers including conversion between common bases.
  • Date Calculation functionality which offers the difference between two dates, as well as the ability to add/subtract years, months and/or days to/from a given input date.
  • Calculation history and memory capabilities.
  • Conversion between many units of measurement.
  • Currency conversion based on data retrieved from Bing.
  • Infinite precision for basic arithmetic operations (addition, subtraction, multiplication, division) so that calculations never lose precision.

Getting started

Prerequisites:

  • Your computer must be running Windows 11, build 22000 or newer.

  • Install the latest version of Visual Studio (the free community edition is sufficient).

    • Install the "Universal Windows Platform Development" workload.
    • Install the optional "C++ Universal Windows Platform tools" component.
    • Install the latest Windows 11 SDK.

    Visual Studio Installation Screenshot

  • Install the XAML Styler Visual Studio extension.

  • Get the code:

    git clone https://github.com/Microsoft/calculator.git
    
  • Open src\Calculator.sln in Visual Studio to build and run the Calculator app.

  • For a general description of the Calculator project architecture see ApplicationArchitecture.md.

  • To run the UI Tests, you need to make sure that Windows Application Driver (WinAppDriver) is installed.

Contributing

Want to contribute? The team encourages community feedback and contributions. Please follow our contributing guidelines.

If Calculator is not working properly, please file a report in the Feedback Hub. We also welcome issues submitted on GitHub.

Roadmap

For information regarding Windows Calculator plans and release schedule, please see the Windows Calculator Roadmap.

Graphing Mode

Adding graphing calculator functionality is on the project roadmap and we hope that this project can create a great end-user experience around graphing. To that end, the UI from the official in-box Windows Calculator is currently part of this repository, although the proprietary Microsoft-built graphing engine, which also drives graphing in Microsoft Mathematics and OneNote, is not. Community members can still be involved in the creation of the UI, however developer builds will not have graphing functionality due to the use of a mock implementation of the engine built on top of a common graphing API.

Diagnostic Data

This project collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. Diagnostic data is disabled in development builds by default, and can be enabled with the SEND_DIAGNOSTICS build flag.

Currency Converter

Windows Calculator includes a currency converter feature that uses mock data in developer builds. The data that Microsoft uses for the currency converter feature (e.g., in the retail version of the application) is not licensed for your use. The mock data will be clearly identifiable as it references planets instead of countries, and remains static regardless of selected inputs.

Reporting Security Issues

Please refer to SECURITY.md.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT License.

calculator's People

Contributors

ataridreams avatar bwaldbaum avatar davidshoe avatar dovisutu avatar eriwong avatar greedyai avatar grochocki avatar gsfreema avatar guominrui avatar hanzhang54 avatar hassanuz avatar howardwolosky avatar janisozaur avatar joseartrivera avatar joshkoon avatar jsoref avatar lee-wonjun avatar maharramoff avatar mcooley avatar oneonezhang avatar quentin987 avatar rudyhuyn avatar sanderl avatar tian-lt avatar turtleship avatar vishegn avatar volkcor avatar xuhongxu96 avatar yaira2 avatar zherman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

calculator's Issues

[Watson Failure] caused by MOAPPLICATION_HANG_cfffffff_Microsoft.WindowsCalculator!HANG_ACTIVATION

symbol offset filename line
0 Microsoft.WindowsCalculator!HANG_ACTIVATION 0x0000000000000000 0
1 unknown![.ecxr] 0x0000000000000000 0
2 ntdll!ZwCreateSection 0x0000000000000000 usrstubs.asm 771
3 ntdll!LdrpMapDllNtFileName 0x0000000000000000 ldrmap.c 1238
4 ntdll!LdrpMapDllFullPath 0x0000000000000000 ldrmap.c 2094
5 ntdll!LdrpProcessWork 0x0000000000000000 ldrmap.c 1748
6 ntdll!LdrpLoadDllInternal 0x0000000000000000 ldrapi.c 536
7 ntdll!LdrpLoadDll 0x0000000000000000 ldrapi.c 743
8 ntdll!LdrLoadDll 0x0000000000000000 ldrapi.c 199
9 KERNELBASE!LoadLibraryExW 0x0000000000000000 module.c 1207
10 combase!LoadLibraryWithLogging 0x0000000000000000 loadfree.cxx 160
11 combase!CClassCache::CDllPathEntry::LoadDll 0x0000000000000000 dllcache.cxx 2394
12 combase!CClassCache::CDllPathEntry::Create 0x0000000000000000 dllcache.cxx 2235
13 combase!CClassCache::GetOrLoadWinRTInprocClass 0x0000000000000000 dllcache.cxx 4880
14 combase!_RoGetActivationFactory 0x0000000000000000 winrtbase.cpp 915
15 vccorlib140_app!__getActivationFactoryByHSTRING 0x0000000000000000 vcwinrt.cpp 70
16 vccorlib140_app!FactoryCache::GetFactory 0x0000000000000000 vcwinrt.cpp 341
17 vccorlib140_app!GetActivationFactoryByPCWSTR 0x0000000000000000 vcwinrt.cpp 419
18 Calculator!Windows::Globalization::Fonts::LanguageFontGroup::LanguageFontGroup 0x0000000000000000 0
19 Calculator!CalculatorApp::Common::LocalizationService::LocalizationService 0x0000000000000000 localizationservice.cpp 87
20 Calculator!CalculatorApp::Common::LocalizationService::GetInstance 0x0000000000000000 localizationservice.cpp 53
21 Calculator!CalculatorApp::App::CreateFrame 0x0000000000000000 app.xaml.cpp 206
22 Calculator!CalculatorApp::App::OnAppLaunch 0x0000000000000000 app.xaml.cpp 287
23 Calculator!CalculatorApp::App::[Windows::UI::Xaml::IApplicationOverrides]::OnLaunched 0x0000000000000000 app.xaml.cpp 226
24 Calculator!CalculatorApp::App::[Windows::UI::Xaml::IApplicationOverrides]::__abi_Windows_UI_Xaml_IApplicationOverrides____abi_OnLaunched 0x0000000000000000 vccorlib.h 16707566
25 Windows_UI_Xaml!DirectUI::FrameworkApplicationGenerated::OnLaunchedProtected 0x0000000000000000 frameworkapplication.g.cpp 465
26 Windows_UI_Xaml!DirectUI::FrameworkView::OnActivated 0x0000000000000000 frameworkview_partial.cpp 258
27 Windows_UI_Xaml!Microsoft::WRL::Details::DelegateArgTraits_long (__cdecl Windows::Foundation::ITypedEventHandler_impl_Windows::Foundation::Internal::AggregateType_Windows::UI::Core::CoreWindow * __ptr64,Windows::UI::Core::ICoreWindow * _ptr64,IInspectable * 0x0000000000000000 event.h 245
28 twinapi_appcore!Microsoft::WRL::InvokeTraits_-2_::InvokeDelegates__lambda_17db5d4faa6f74e41d4a86845c05084f_,Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationView * __ptr64,Windows::ApplicationModel::Activation::IActivate 0x0000000000000000 internalevent.h 119
29 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::Activate 0x0000000000000000 coreapplicationview.cpp 1782
30 rpcrt4!Invoke 0x0000000000000000 invoke.asm 172
31 rpcrt4!Ndr64StubWorker 0x0000000000000000 srvcall.cxx 392
32 rpcrt4!NdrStubCall3 0x0000000000000000 srvwrap.cxx 166
33 combase!CStdStubBuffer_Invoke 0x0000000000000000 stub.cxx 1446
34 rpcrt4!CStdStubBuffer_Invoke 0x0000000000000000 ndrfwds.cxx 182
35 combase!ObjectMethodExceptionHandlingAction__lambda_76d9e92c799d246a4afbe64a2bf5673d_ _ 0x0000000000000000 excepn.hxx 91
36 combase!DefaultStubInvoke 0x0000000000000000 channelb.cxx 1974
37 combase!ServerCall::ContextInvoke 0x0000000000000000 ctxchnl.cxx 1542
38 combase!ASTAInvokeInApartment 0x0000000000000000 applicationsta.cpp 3045
39 combase!AppInvoke 0x0000000000000000 channelb.cxx 1688
40 combase!ComInvokeWithLockAndIPID 0x0000000000000000 channelb.cxx 2804
41 combase!ThreadDispatch 0x0000000000000000 chancont.cxx 422
42 combase!CComApartment::ASTAHandleMessage 0x0000000000000000 applicationsta.cpp 2786
43 combase!ASTAWaitContext::Wait 0x0000000000000000 applicationsta.cpp 1146
44 combase!CoMsgWaitInProcessEvents 0x0000000000000000 applicationsta.cpp 2246
45 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal 0x0000000000000000 dispatcher.cpp 2007
46 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessages 0x0000000000000000 dispatcher.cpp 461
47 twinapi_appcore!lambda_476a253d60a149be58fa202b506b2c7b::operator 0x0000000000000000 coreapplicationview.cpp 1201
48 SHCore!_WrapperThreadProc 0x0000000000000000 thread.cpp 321
49 kernel32!BaseThreadInitThunk 0x0000000000000000 thread.c 64
50 ntdll!RtlUserThreadStart 0x0000000000000000 rtlstrt.c 998

Centralize BiDirectional string code in the CalcViewModel

BiDi code is spread out - Memory panel sets BiDi in the view model, while History sets it in the CalcManager. The UnitTests also do their own thing. We should centralize the code into utility functions in the VM and then have unit tests for their functionality.

[Watson Failure] caused by MOAPPLICATION_HANG_dfffffff_Microsoft.WindowsCalculator!HANG_NAVIGATION

symbol offset filename line
0 Microsoft.WindowsCalculator!HANG_NAVIGATION 0x0000000000000000 0
1 unknown![.ecxr] 0x0000000000000000 0
2 win32u!ZwUserMsgWaitForMultipleObjectsEx 0x0000000000000000 usrstubs.asm 8894
3 user32!RealMsgWaitForMultipleObjectsEx 0x0000000000000000 client.cxx 1896
4 combase!ModernSTAWaitContext::KernelWait 0x0000000000000000 modernsta.cpp 1935
5 combase!ModernSTAWaitContext::Wait 0x0000000000000000 modernsta.cpp 1258
6 combase!ModernSTAWaitInExistingContext 0x0000000000000000 modernsta.cpp 2750
7 combase!ModernSTAThreadWaitForCall 0x0000000000000000 modernsta.cpp 2812
8 combase!ThreadSendReceive 0x0000000000000000 channelb.cxx 7562
9 combase!CSyncClientCall::SendReceive2 0x0000000000000000 channelb.cxx 5722
10 combase!SyncClientCallRetryContext::SendReceiveWithRetry 0x0000000000000000 callctrl.cxx 1649
11 combase!CSyncClientCall::SendReceiveInRetryContext 0x0000000000000000 callctrl.cxx 571
12 combase!ModernSTAThreadSendReceive 0x0000000000000000 modernsta.cpp 3182
13 combase!CSyncClientCall::SendReceive 0x0000000000000000 ctxchnl.cxx 822
14 combase!CClientChannel::SendReceive 0x0000000000000000 ctxchnl.cxx 696
15 combase!NdrExtpProxySendReceive 0x0000000000000000 proxy.cxx 1965
16 rpcrt4!NdrpClientCall3 0x0000000000000000 cltcall.cxx 322
17 combase!ObjectStublessClient 0x0000000000000000 stblsclt.cxx 369
18 combase!ObjectStubless 0x0000000000000000 stubless.asm 176
19 twinapi_appcore!lambda_aa88a3994e892957b35265abe79573c7::operator 0x0000000000000000 applicationviewclient.cpp 931
20 twinapi_appcore!DoRetryableBrokerOperation_IFullScreenBroker,lambda_aa88a3994e892957b35265abe79573c7 _ 0x0000000000000000 applicationviewclient.cpp 179
21 twinapi_appcore!CApplicationView::get_IsFullScreenMode 0x0000000000000000 applicationviewclient.cpp 945
22 Microsoft_UI_Xaml!winrt::impl::consume_Windows_UI_ViewManagement_IApplicationView3_winrt::Windows::UI::ViewManagement::ApplicationView_::IsFullScreenMode 0x0000000000000000 windows.ui.viewmanagement.h 582
23 Microsoft_UI_Xaml!NavigationView::IsFullScreenOrTabletMode 0x0000000000000000 navigationview.cpp 3634
24 Microsoft_UI_Xaml!NavigationView::UpdateTitleBarPadding 0x0000000000000000 navigationview.cpp 3511
25 Microsoft_UI_Xaml!winrt::impl::delegate_winrt::Windows::Foundation::TypedEventHandler_winrt::Windows::UI::ViewManagement::UISettings,winrt::Windows::Foundation::IInspectable_ ::type__lambda_20228b2c537d1858756d91f224e34dca _::Invoke 0x0000000000000000 base.h 8715
26 twinapi_appcore!Microsoft::WRL::InvokeTraits_-2_::InvokeDelegates__lambda_8f34cdef0ffb73a9ba4459cb0fce1765_,Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationViewTitleBar * __ptr64,IInspectable * _ptr64 _ 0x0000000000000000 internalevent.h 119
27 twinapi_appcore!Microsoft::WRL::EventSource_Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationViewTitleBar * _ptr64,IInspectable * ptr64,Microsoft::WRL::InvokeModeOptions-2 _::DoInvoke__lambda_8f34cdef0ffb73a9ba4459 0x0000000000000000 event.h 810
28 twinapi_appcore!Microsoft::WRL::EventSource_Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationViewTitleBar * _ptr64,IInspectable * ptr64,Microsoft::WRL::InvokeModeOptions-2 _::InvokeAll_Windows::ApplicationModel::Co 0x0000000000000000 event.h 821
29 rpcrt4!Invoke 0x0000000000000000 invoke.asm 183
30 rpcrt4!Ndr64StubWorker 0x0000000000000000 srvcall.cxx 392
31 rpcrt4!NdrStubCall3 0x0000000000000000 srvwrap.cxx 166
32 combase!CStdStubBuffer_Invoke 0x0000000000000000 stub.cxx 1446
33 rpcrt4!CStdStubBuffer_Invoke 0x0000000000000000 ndrfwds.cxx 182
34 combase!ObjectMethodExceptionHandlingAction__lambda_76d9e92c799d246a4afbe64a2bf5673d_ _ 0x0000000000000000 excepn.hxx 91
35 combase!DefaultStubInvoke 0x0000000000000000 channelb.cxx 1769
36 combase!SyncServerCall::StubInvoke 0x0000000000000000 servercall.hpp 825
37 combase!ServerCall::ContextInvoke 0x0000000000000000 ctxchnl.cxx 1532
38 combase!ASTAInvokeInApartment 0x0000000000000000 applicationsta.cpp 468
39 combase!AppInvoke 0x0000000000000000 channelb.cxx 1499
40 combase!ComInvokeWithLockAndIPID 0x0000000000000000 channelb.cxx 2601
41 combase!ThreadDispatch 0x0000000000000000 chancont.cxx 422
42 combase!ModernSTAState::HandleMessage 0x0000000000000000 modernsta.cpp 479
43 combase!ModernSTAWaitContext::Wait 0x0000000000000000 modernsta.cpp 1439
44 combase!CoMsgWaitInProcessEvents 0x0000000000000000 modernsta.cpp 2534
45 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal 0x0000000000000000 dispatcher.cpp 2001
46 Windows_UI!Windows::UI::Core::CDispatcher::ProcessEvents 0x0000000000000000 dispatcher.cpp 599
47 Windows_UI_Xaml!CJupiterWindow::RunCoreWindowMessageLoop 0x0000000000000000 jupiterwindow.cpp 1246
48 Windows_UI_Xaml!DirectUI::DXamlCore::RunMessageLoop 0x0000000000000000 dxamlcore.cpp 2452
49 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::Run 0x0000000000000000 coreapplicationview.cpp 422
50 twinapi_appcore!lambda_02cef69f8ae13d771fa47a74be974b8f::operator 0x0000000000000000 coreapplicationviewagilecontainer.cpp 1079
51 SHCore!_WrapperThreadProc 0x0000000000000000 thread.cpp 321
52 kernel32!BaseThreadInitThunk 0x0000000000000000 thread.c 64
53 ntdll!RtlUserThreadStart 0x0000000000000000 rtlstrt.c 1163

Currency symbol precedence is opposite of system setting in RTL languages

In RtL languages, the currency symbol precedence is opposite of the system setting. See attached screenshots.

To repro:

  1. Go to Settings > Time & Language > Region & Language > Add a language > Hebrew
  2. In the languages list, set Hebrew as default.
  3. Open the Run dialog (WIN + R). Enter 'intl.cpl'. The Region settings should open
  4. Change the Format to Hebrew.
  5. Click 'Additional Settings'.
  6. Switch to the 'Currency' tab.
  7. Open 'Calculator' in Hebrew.
  8. Navigate to Currency Converter.
  9. Observe that the currency symbol precedence is opposite of the system setting.

image

Programmer mode on Calculator supports unsigned values

Problem Statement
Programmers need to work with both signed and unsigned values. Calculator is currently optimized for signed values only.

Evidence or User Insights
For example, while calculator will works on INT64 numbers, if I try to paste in a UINT64 value, e.g. 18403114778001080163, it shows as invalid input. Also, currently, the Bit Flip pane only supports signed numbers (the most significant bit is the Sign bit). Unsigned number support is a gap in our programmer mode.

For example, "256" does not fit into a single byte (requires a word):
image

Proposal
Add support for unsigned values in programmer mode.

Goals

  • Support both signed and unsigned values in programmer mode.
  • Support the option to switch between working with signed and unsigned values.
  • All applicable operations should adapt to signed/unsigned status.
  • Ensure that terminology is consistent with standards when referring to types like QWORD, DQORD, WORD, and BYTE (these terms generally refer to the unsigned versions).

Non-Goals

  • None

Low-Fidelity Concept
image

Requested Assignment
I'm just suggesting this idea. I don't want to implement it.

Calculator.exe is setting selected index to an invalid value

We're seeing from crash dumps that Calculator is setting selected index on a selector-derived type to a value that is outside the valid range.

The actual failure occurs in the XAML code, where the call stack looks like this:
0 Windows_UI_Xaml!DirectUI::Selector::OnSelectedIndexChanged
1 Windows_UI_Xaml!DirectUI::Selector::OnPropertyChanged2
2 Windows_UI_Xaml!DirectUI::ComboBox::OnPropertyChanged2
3 Windows_UI_Xaml!DirectUI::DependencyObject::NotifyPropertyChanged
4 Windows_UI_Xaml!CDependencyObject::NotifyPropertyChanged
5 Windows_UI_Xaml!CDependencyObject::SetEffectiveValue
6 Windows_UI_Xaml!CDependencyObject::UpdateEffectiveValue
7 Windows_UI_Xaml!CDependencyObject::SetValue
8 Windows_UI_Xaml!CUIElement::SetValue
9 Windows_UI_Xaml!CFrameworkElement::SetValue
10 Windows_UI_Xaml!CControl::SetValue
11 Windows_UI_Xaml!CItemsControl::SetValue
12 Windows_UI_Xaml!DirectUI::DependencyObject::SetValueCore
13 Windows_UI_Xaml!DirectUI::DependencyObject::SetValueCore
14 Windows_UI_Xaml!DirectUI::DependencyObject::SetValueByKnownIndex_int_
15 Windows_UI_Xaml!DirectUI::ComboBox::OnClose
16 Windows_UI_Xaml!DirectUI::ComboBox::OnIsDropDownOpenChanged
17 Windows_UI_Xaml!DirectUI::ComboBox::OnPropertyChanged2
18 Windows_UI_Xaml!DirectUI::DependencyObject::NotifyPropertyChanged
19 Windows_UI_Xaml!CDependencyObject::NotifyPropertyChanged
20 Windows_UI_Xaml!CDependencyObject::SetEffectiveValue
21 Windows_UI_Xaml!CDependencyObject::UpdateEffectiveValue
22 Windows_UI_Xaml!CDependencyObject::SetValue
23 Windows_UI_Xaml!CUIElement::SetValue
24 Windows_UI_Xaml!CFrameworkElement::SetValue
25 Windows_UI_Xaml!CControl::SetValue
26 Windows_UI_Xaml!CItemsControl::SetValue
27 Windows_UI_Xaml!DirectUI::DependencyObject::SetValueCore
28 Windows_UI_Xaml!DirectUI::DependencyObject::SetValueByKnownIndex_unsigned char_
29 Windows_UI_Xaml!DirectUI::ComboBox::FocusChanged
30 Windows_UI_Xaml!DirectUI::ComboBox::OnElementPopupChildLostFocus

Add inking support to calculator for basic calculations/conversions or other math needs

Problem Statement

The calculator app currently supports different input mechanisms (keyboard, mouse, touch, pen), and while the app interface has been tailored in some way for for the rest of them, pen input has received less attention: the pen is treated like a regular mouse pointer with no special consideration. This is less than ideal when trying to input long numbers in a device where pen is one of the primaty input methods (e.g. Surface Studio in canvas mode, Surface Go with no keyboard attached), where many users would find easier to just write down the numbers.

Evidence or User Insights

Many Windows surfaces have benefited lately from tighter ink integration, from the new inline text input canvas to the integration of ink in apps like the Mail client, the Office suite and Microsoft To-Do. Users of pen enabled devices have come to expect more intuitive ways to interact with their computer, with the pen allowing rich ink input rather than just behaving like a simple pointer. The community response to this suggestion has been very positive suggesting that at least high-confidence users would find it a welcome addition (no pun intended).

Proposal

The proposal is to allow user to enter calculations in handwriten form, which will be recognized, parsed and calculated as any other user input.

Goals

  • Allow active pen (e.g. Surface Pen) users to enter handwritten calculations, recognize them and display the result
  • Understand mathematical expressions that can be expressed in one line using the same limited expression format the calculator already recognizes for pasted strings. E.g.:
    • VALID: 1+ 2 * 3
    • NOT VALID: sin(1)

Non-goals

  • Provide handwriten input for touch users
    • Accuracy wouldn't be satisfactory and it would conflict with the current touch usage patterns
  • Provide feature parity with the Math Input Panel
    • It would be a nice follow-up but it would require additional work on the recognition logic
  • Replace the current numeric pad. It should remain available so the user is free to use the pen as a pointer if they prefer it.

Low-Fidelity Concept:

I was playing around with the code and I added support for entering expressions using ink:

calculatorink

It works by overlaying a InkCanvas on top of the calculation result, and leveraging the existing OnPaste method to process the recognized string.

Is this a feature you would be interested in adding? If you do I can polish it and send a PR 😊

Note: A team member edited this comment for clarity based on conversation below.

List items of the combo box in "Currency converter" window are not adapting under 200 and 300 percent text scaling.

Test Environment:
OS Version: Windows 10 Build 17668.rs_onecore_dep_uxp_dev.180515-1610
App Name: Calculator
Pre-Requisite:
Set recommended screen resolution, i.e., 1366 x 768.
Set text scaling to 300 percent via Ease of Access settings > "Make Everything bigger" slider.
Repro Steps:
Launch "Calculator" app.
Home screen will be displayed.
Navigate to “Currency" control in the navigation pane and activate it.
Navigate to convert combo box and activate it.
Combo box will open and Observe the issue.
Actual Result:
List items of the combo box in "Currency converter" window are not adapting under 200 and 300 percent text scaling.
Expected Result:
List items of the combo box in "Currency converter" window should adapt under 200 and 300 percent text scaling.
Note:
Same issue is repro for "HEX", "DEX", "OCT" and "BIN" radio buttons inside Programmer Calculator window Please refer the attachment "Usable_HEX_DEX_OCT_BIN".
Text inside combo boxes in Converter windows are not adapting under 200 and 300 percent text scaling. This issue is repro throughout the app.

Can't divide by 0

Describe the bug

It seems like you can't divide by 0. This needs to be fixed ASAP as possible.

Steps To Reproduce

  1. Click on any number
  2. Click on division symbol
  3. Click on 0
  4. ????????
  5. Profit

Expected behavior

The result of dividing a number by 0.

Device and Application Information (please complete the following information):

  • OS Build: Windows 10.

Additional context

  • Please fix this fast, I need to divide by 0.

Long term plan for testing needs

  • Identify test gaps in calculator in existing test coverage.
  • Updating manual tests to provide better E2E coverage.
  • Create new automated tests to fill identified gaps.

Overlapping UI elements in Currency Converter for large numerical input

In an LtR language where currency symbol precedence is set to the right, or in an RtL language where currency symbol precedence is set to the right, there are overlapping UI elements in Currency Converter when the input is a large number.

Repro Steps

  1. Open the Run dialog (WIN + R) and type 'intl.cpl' and hit Enter.
  2. In the Region settings, click 'Additional settings'.
  3. Navigate to the Currency tab.
  4. Change Postive symbol precedence to be on the right side.
  5. Open Calculator.
  6. Navigate to Currency Converter.
  7. Resize to wide layout.
  8. Input a large number.

Observe overlapping UI elements.

currencyrtl

Investigate MathML rendering options

Mathematical Markup Language (MathML) is a low-level specification for mathematical and scientific content on the Web and beyond (source).

This issue tracks investigation of how Calculator might add support for displaying MathML expressions across display surfaces.

Calculator Date difference translation is not correct for croatian language

"TargetCulture": "sr-Latn-RS",
"OldTargetText": "2 meseci; 1 sedmica; 5 dani",
"TargetText": "2 mesec/a/i; 1 sedmica/e; 5 dan/a",
"BuildId": "10.0.17134.345",
"ChosenReason": "BetterAccurancyOrClarity",
"Comments": "I believe that this is a string with multiple numbering placeholder. Hence congruence issues.",

Investigate MathML input options

Mathematical Markup Language (MathML) is a low-level specification for mathematical and scientific content on the Web and beyond (source).

This issue tracks investigation of how Calculator might add support for MathML into its engine.

Multiple instances of app don't appear as separate processes in Task Manager

Problem Statement
Calculator supports multiple windows today, but they are all part of a single process. This means that a crash or hang in one instance brings down all instances and that it is not possible to terminate individual instances via Task Manager.

Evidence or User Insights
Terminating one instance will shut down all.
image

Proposal
Instead of handling multiple views of the app within a single process, we should use the new platform APIs to enable an app to be multi-instance. That will allow instances to be tracked in Task Manager, and if one instance crashes the other instances will remain alive.

Goals

  • Refactor current multi-window architecture to leverage platform APIs and enable true multi-instance Calculator
  • Maintain existing reliability/performance targets

Non-Goals

  • None

Low-Fidelity Concept
N/A

Requested Assignment
I'm just suggesting this idea. I don't want to implement it.

Calculator Display implements Value pattern

There have been multiple issues opened against how Narrator handles the display in Calculator. The best approach would be to implement a value pattern on the display rather than using the automation name.

This deliverable should resolve the following behaviors:

  • Double reading "Display is..." when the display has focus
  • Announcing the "Display is" prefix every time a key is pressed
  • Not announcing display value when a key press does not result in a new display value

Uneven NumberPad Margin in Converter Mode

Describe the bug
Margin around the number pad should be of equal value.

Steps To Reproduce

  1. Go to any converter
  2. Decrease window width until the vertical layout VisualState is triggered

** Screenshot **
Observe the following layout

image

Expected behavior
Padding should be equal

Recommended Solution
There are two options:

  1. Decrease Right and Left margin to match the bottom (this would emulate the padding used on the main calculator interface)
  2. Increase the bottom margin to match the sides.

Device and Application Information

  • OS Build: 18346
  • Architecture: x64
  • Application Version: 10.1812.10048.0

Add the ability for users to pin Calculator on top of other windows

Problem Statement
When attempting to use Calculator with other application, such as a spreadsheet, Calculator will lose focus when you click on the other app (e.g. to scroll/copy). Users have requested the ability to pin Calculator on top of other windows to facilitate ongoing use with other apps.

Evidence or User Insights
This is our second-highest customer feedback request in Feedback Hub with some users reporting their only alternative is to pay for an app which is sticky.

Proposal
Add the ability for users to pin Calculator on top of other windows.

Goals

  • Users can easily pin/unpin the Calculator window on top
  • Users can easily continue with other tasks while Calculator is pinned
  • Users have access to full Calculator functionality, but can always perform at least basic calculations when in the more compact view (smaller than currently allowed minimum window sizing)

Non-Goals

  • Parity with the full version of the app​​ when in smallest of layout states

Low-Fidelity Concept
Here is a quick concept showing what the smallest of modes might look like. There are still several open questions to address for this layout state as well as determining the best way to enter/exit this mode:

image

calc

Date Calculation Does Not Factor In Leap Year

Describe the bug
The next occurring leap year is next year 2020! The actual Leap Day is Saturday Feburary 29th, 2020. In a recent round of tests with the Date Calculation I found that when adding days past the next leap day the calculation acted as if that day never existed and didn't account for the fact there is an extra day in the year. I set up the case with Today's date February 20,2019 and added 1 year, 0 months and 6 days. The answer came to be A February 26, 2020 just 3 days before Leap Day. I then added an extra year to the equation and got February 26, 2021, which normally that is fine but with leap year it would actually be February 25th, 2021 because of the extra day.

Steps To Reproduce

  1. Launch the Calculator app build 10.1812.10048.0.
  2. Navigate to Date Calculation.
  3. From the drop down field select Add or subtract days.
  4. For the from date enter February 20,2019
  5. Check the bubble Add
  6. Enter 1 Year, 0 Months, 6 Days.
  7. Take Note of the date Wednesday, February 26,2020 (3 days before Leap Day)
  8. Change Years field from 1 to 2.
  9. Observe new date Friday, February 26, 2021.

Expected behavior
Leap years are taken into account for date calculations.

Device and Application Information (please complete the following information):

  • OS Build Number:
  • Architecture: x64
  • Application Version Number: 10.1812.10048.0

Additional context
What is also interesting here is that normally the days of the week move forward one day from the previous, except in the case of leap year and then it is two for any date past Leap Day. So looking at this the days of the week has been adjusted for leap year, but the calendar date was not.

On activating "Add/Subtract" radio buttons in “Date Calculation” window, resulting date changes but Narrator does not inform about the change

Test Environment:
OS Version: Windows 10 Build 17083.rs_prerelease.180119-1645
App Name: Calculator
App Version: 10.1802.311.0
Repro Steps:
Launch "Calculator" app.
Launch Narrator.
Navigate to “Menu” button and activate it.
Navigate to “Date Calculation” list item in the navigation pane and activate it.
Navigate to “Calculation mode” combo box and activate it.
Navigate to “Add or subtract days” in the combo box and activate it.
Select some duration via “Years/Months/Days” combo box.
Navigate to "Add/Subtract" radio buttons and activate it.
Verify if Narrator informs about the change in resulting date on activating "Add/Subtract" radio buttons.
Actual Result:
On activating "Add/Subtract" radio buttons in “Date Calculation” window, resulting date changes but Narrator does not inform about the change.
Expected Result:
On activating "Add/Subtract" radio buttons in “Date Calculation” window, Narrator should inform about the change in resulting date.

[Watson Failure] caused by STOWED_EXCEPTION_80070005_Calculator.exe!Windows::UI::Core::ICoreWindow::Dispatcher::get

symbol offset filename line
0 combase!CRestrictedError::CaptureSnapshot 0x0000000000000037 restrictederror.cpp 1123
1 combase!CapturePOFDumpIfRequested 0x00000000000FAF01 error.cpp 2106
2 combase!SendReport 0x000000000000016F error.cpp 500
3 combase!RoOriginateError 0x0000000000000048 error.cpp 591
4 vccorlib140_app!Platform::Details::ReCreateException 0x0000000000000051 exceptions.cpp 137
5 vccorlib140_app!__abi_WinRTraiseAccessDeniedException 0x0000000000000017 exceptions.cpp 508
6 calculator!__abi_WinRTraiseException 0x00000000000000CA vccorlib.h 1107
7 calculator!Windows::UI::Core::ICoreWindow::Dispatcher::get 0x000000000000006D 0
8 calculator!Windows::System::UserProfile::GlobalizationPreferences::Languages::get 0x00000000000000AB 0
9 calculator!CalculatorApp::ViewModel::CurrencyDataLoader::CurrencyDataLoader 0x00000000000001A2 currencydataloader.cpp 103
10 calculator!std::make_shared_CalculatorApp::ViewModel::CurrencyDataLoader,std::unique_ptr_CalculatorApp::DataLoaders::CurrencyHttpClient,std::default_delete_CalculatorApp::DataLoaders::CurrencyHttpClient_ _ _ 0x0000000000000066 memory 1866
11 calculator!CalculatorApp::ViewModel::ApplicationViewModel::OnModeChanged 0x0000000000000251 applicationviewmodel.cpp 151
12 calculator!CalculatorApp::ViewModel::ApplicationViewModel::Mode::[CalculatorApp::ViewModel::__IApplicationViewModelPublicNonVirtuals::Mode]::set 0x000000000000002A applicationviewmodel.cpp 62
13 calculator!CalculatorApp::MainPage::OnNavSelectionChanged 0x0000000000000133 mainpage.xaml.cpp 511
14 calculator!`Windows::Foundation::TypedEventHandler_Microsoft::UI::Xaml::Controls::NavigationView ^,Platform::Object ^_::TypedEventHandler_Microsoft::UI::Xaml::Controls::NavigationView ^,Platform::Object ^__CalculatorApp::MainPage,void (__cdecl CalculatorApp:: 0x000000000000008E 0
15 calculator!?_abi_Windows_Foundation?$TypedEventHandler@PE$AAVNavigationView@Controls@Xaml@UI@Microsoft@@pe$AAVNavigationViewSelectionChangedEventArgs@2345@___abi_IDelegate____abi_Invoke@?Q__abi_IDelegate@?$TypedEventHandler@PE$AAVNavigationView@Controls 0x0000000000000012 0
16 microsoft_ui_xaml!NavigationView::RaiseSelectionChangedEvent 0x00000000000001EE navigationview.cpp 1229
17 microsoft_ui_xaml!NavigationView::ChangeSelection 0x00000000000002F8 navigationview.cpp 1310
18 microsoft_ui_xaml!NavigationView::OnSelectedItemPropertyChanged 0x0000000000000055 navigationview.cpp 2193
19 microsoft_ui_xaml!NavigationView::OnPropertyChanged 0x0000000000000276 navigationview.cpp 2950
20 microsoft_ui_xaml!NavigationView::OnPropertyChanged 0x0000000000000073 navigationviewfactory.cpp 451
21 microsoft_ui_xaml!winrt::impl::delegate_winrt::Windows::UI::Xaml::PropertyChangedCallback_::type__lambda_7e7a26da47dff7b0d2ec2f8ae5761249_ _::Invoke 0x000000000000003B windows.ui.xaml.h 7956
22 windows_ui_xaml!DirectUI::DependencyObject::NotifyPropertyChanged 0x00000000000002BC dependencyobject.cpp 2324
23 windows_ui_xaml!CDependencyObject::NotifyPropertyChanged 0x000000000000013A depends.cpp 2698
24 windows_ui_xaml!CDependencyObject::SetEffectiveValue 0x00000000000001EC propertysystem.cpp 1581
25 windows_ui_xaml!CDependencyObject::UpdateEffectiveValue 0x00000000000000A7 propertysystem.cpp 1851
26 windows_ui_xaml!CDependencyObject::SetValue 0x00000000000000A2 propertysystem.cpp 1623
27 windows_ui_xaml!CUIElement::SetValue 0x00000000000000B6 uielement.cpp 712
28 windows_ui_xaml!CFrameworkElement::SetValue 0x00000000000000BD framework.cpp 220
29 windows_ui_xaml!CControl::SetValue 0x0000000000000047 control.cpp 98
30 windows_ui_xaml!CContentControl::SetValue 0x0000000000000071 contentcontrol.cpp 114
31 windows_ui_xaml!DirectUI::DependencyObject::SetValueCore 0x00000000000005FF dependencyobject.cpp 1455
32 windows_ui_xaml!DirectUI::DependencyObject::UpdateEffectiveValue 0x0000000000000062 dependencyobject.cpp 1798
33 windows_ui_xaml!DirectUI::DependencyObject::SetValueInternal 0x00000000000000E2 dependencyobject.cpp 1647
34 windows_ui_xaml!DirectUI::DependencyObject::SetValue 0x000000000000000E dependencyobject.cpp 1308
35 windows_ui_xaml!DirectUI::DependencyObject::SetValue 0x0000000000000046 dependencyobject.cpp 3114
36 microsoft_ui_xaml!winrt::impl::consume_Windows_UI_Xaml_IDependencyObject_RatingItemInfo_::SetValue 0x000000000000005D windows.ui.xaml.h 2765
37 microsoft_ui_xaml!NavigationView::SelectedItem 0x0000000000000049 navigationview.cpp 1807
38 microsoft_ui_xaml!NavigationView::SetSelectedItemAndExpectItemInvokeWhenSelectionChangedIfNotInvokedFromAPI 0x00000000000000B6 navigationview.cpp 2252
39 microsoft_ui_xaml!NavigationView::OnSelectionChanged 0x0000000000000242 navigationview.cpp 1179
40 microsoft_ui_xaml!winrt::impl::delegate_winrt::Windows::Foundation::TypedEventHandler_winrt::Windows::UI::ViewManagement::UISettings,winrt::Windows::Foundation::IInspectable_ ::type__lambda_20228b2c537d1858756d91f224e34dca _::Invoke 0x0000000000000043 base.h 8715
41 windows_ui_xaml!DirectUI::CRoutedEventSourceBase_DirectUI::IUntypedEventSource,Windows::UI::Xaml::Controls::ISelectionChangedEventHandler,IInspectable,Windows::UI::Xaml::Controls::ISelectionChangedEventArgs_::Raise 0x00000000000000D5 joltclasses.h 1046
42 windows_ui_xaml!DirectUI::Selector::OnSelectionChanged 0x0000000000000044 selector_partial.cpp 972
43 windows_ui_xaml!DirectUI::Selector::InvokeSelectionChanged 0x00000000000000BA selector_partial.cpp 935
44 windows_ui_xaml!DirectUI::Selector::EndChange 0x0000000000000341 selector_partial.cpp 1754
45 windows_ui_xaml!DirectUI::Selector::SelectJustThisItemInternal 0x00000000000000A0 selector_partial.cpp 4405
46 windows_ui_xaml!DirectUI::Selector::MakeSingleSelection 0x000000000000006A selector_partial.cpp 1800
47 windows_ui_xaml!DirectUI::ListViewBase::MakeSingleSelection 0x0000000000000079 listviewbase_partial_selection.cpp 332
48 windows_ui_xaml!DirectUI::ListViewBase::MakeSingleSelection 0x00000000000000A3 listviewbase_partial_selection.cpp 358
49 windows_ui_xaml!DirectUI::ListViewBase::OnSelectItemPrimary 0x000000000000016E listviewbase_partial_interaction.cpp 389
50 windows_ui_xaml!DirectUI::ListViewBase::OnItemPrimaryInteractionGesture 0x00000000000002DC listviewbase_partial_interaction.cpp 260
51 windows_ui_xaml!DirectUI::ListViewBaseItem::DoTapInteraction 0x0000000000000070 listviewbaseitem_partial.cpp 1488
52 windows_ui_xaml!DirectUI::ListViewBaseItem::DoPendingTapInteractionForPointerId 0x0000000000000060 listviewbaseitem_partial.cpp 1138
53 windows_ui_xaml!DirectUI::ListViewBaseItem::OnPointerReleased 0x0000000000000439 listviewbaseitem_partial.cpp 1021
54 microsoft_ui_xaml!winrt::impl::produce_NavigationViewItemPresenter,winrt::Windows::UI::Xaml::Controls::IControlOverrides_::OnPointerReleased 0x0000000000000085 windows.ui.xaml.controls.h 52866
55 windows_ui_xaml!DirectUI::ControlGenerated::OnPointerReleasedProtected 0x000000000000004B control.g.cpp 1532
56 windows_ui_xaml!DirectUI::Control::FireEvent 0x0000000000162DFF control_partial.cpp 270
57 windows_ui_xaml!DirectUI::DXamlCore::FireEvent 0x0000000000000130 dxamlcore.cpp 1905
58 windows_ui_xaml!CCoreServices::CLR_FireEvent 0x000000000000019F xcpcore.cpp 3435
59 windows_ui_xaml!CControlBase::ScriptCallback 0x0000000000000265 controlbase.cpp 267
60 windows_ui_xaml!CXcpDispatcher::OnScriptCallback 0x0000000000000215 xcpwindow.cpp 1348
61 windows_ui_xaml!CXcpDispatcher::WindowProc 0x00000000000000EC xcpwindow.cpp 836
62 user32!UserCallWinProcCheckWow 0x00000000000002C1 clmsg.cxx 279
63 user32!DispatchClientMessage 0x000000000000009C client.cxx 3507
64 user32!__fnDWORD 0x0000000000000033 ntcb.h 1340
65 ntdll!KiUserCallbackDispatcherContinue 0x0000000000000000 trampoln.asm 598
66 win32u!ZwUserMessageCall 0x0000000000000014 usrstubs.asm 222
67 user32!SendMessageWorker 0x000000000000028D clmsg.cxx 662
68 user32!SendMessageW 0x00000000000000F8 cltxt.h 876
69 windows_ui_xaml!CEventManager::Raise 0x00000000000008B1 eventmgr.cpp 876
70 windows_ui_xaml!CEventManager::RaiseRoutedEventBubbling 0x0000000000000124 eventmgr.cpp 1305
71 windows_ui_xaml!CInputManager::RaiseDelayedPointerUpEvent 0x000000000000013D inputmanager.cpp 5894
72 windows_ui_xaml!CInputManager::ProcessGestureInput 0x000000000000021B inputmanager.cpp 5650
73 windows_ui_xaml!CInputManager::ProcessTouchInteractionCallback 0x00000000000000A9 inputmanager.cpp 5548
74 windows_ui_xaml!CCoreServices::ProcessTouchInteractionCallback 0x000000000000003A xcpcore.cpp 1135
75 windows_ui_xaml!TIEAdapter::InteractionEngineCallback 0x0000000000000498 tieadapter.cpp 234
76 windows_ui_xaml!TIEAdapter::StaticInteractionEngineCallback 0x0000000000000012 tieadapter.cpp 63
77 ninput!COutputConverter::Process 0x0000000000000433 outputconverter.cpp 595
78 ninput!CInteractionContextImpl::OutputCallback 0x00000000000000E7 interactioncontextimpl.cpp 128
79 ninput!CInteractionGroupingFilter::_SendOutput 0x000000000000001F interactiongroupingfilter.cpp 79
80 ninput!CInteractionGroupingFilter::_OnInput 0x000000000000007E interactiongroupingfilter.cpp 69
81 ninput!COutputCoalescingFilter::Flush 0x00000000000000BE outputcoalescingfilter.cpp 165
82 ninput!COutputCoalescingFilter::_OnInput 0x0000000000000043 outputcoalescingfilter.cpp 120
83 ninput!CInteractionEngineImpl::DigitizerInput 0x0000000000000254 interactionengineimpl.cpp 412
84 ninput!CInteractionContextImpl::ProcessFrameHistory 0x0000000000000637 interactioncontextimpl.cpp 724
85 ninput!ProcessPointerFramesInteractionContext 0x0000000000000180 interactioncontextapis.cpp 530
86 windows_ui_xaml!ElementGestureTracker::ProcessPointerInformation 0x00000000000001FB elementgesturetracker.cpp 624
87 windows_ui_xaml!ElementGestureTracker::ProcessPointerMessage 0x0000000000000084 elementgesturetracker.cpp 78
88 windows_ui_xaml!CInputManager::ProcessPointerMessagesWithInteractionEngine 0x0000000000000233 inputmanager.cpp 5231
89 windows_ui_xaml!CInputManager::ProcessInteractionPointerMessages 0x0000000000000116 inputmanager.cpp 4997
90 windows_ui_xaml!CInputManager::ProcessPointerInput 0x0000000000000D16 inputmanager.cpp 3638
91 windows_ui_xaml!CInputManager::ProcessInput 0x00000000001CA2ED inputmanager.cpp 1267
92 windows_ui_xaml!CCoreServices::ProcessInput 0x0000000000000043 xcpcore.cpp 1025
93 windows_ui_xaml!CXcpBrowserHost::HandleInputMessage 0x0000000000000131 winbrowserhost.cpp 1362
94 windows_ui_xaml!CJupiterControl::HandlePointerMessage 0x000000000000013C jupitercontrol.cpp 650
95 windows_ui_xaml!CJupiterControl::HandleWindowMessage 0x00000000001B55E0 jupitercontrol.cpp 333
96 windows_ui_xaml!CJupiterWindow::CoreWindowSubclassProc 0x000000000000018A jupiterwindow.cpp 1095
97 windows_ui_xaml!CJupiterWindow::StaticCoreWindowSubclassProc 0x0000000000000049 jupiterwindow.cpp 521
98 user32!UserCallWinProcCheckWow 0x00000000000002C1 clmsg.cxx 279
99 user32!DispatchMessageWorker 0x00000000000001C3 clmsg.cxx 3137
100 windows_ui!Windows::UI::Core::CDispatcher::ProcessMessage 0x00000000000000FE dispatcher.cpp 327
101 windows_ui!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal 0x00000000000000AE dispatcher.cpp 1959
102 windows_ui!Windows::UI::Core::CDispatcher::ProcessEvents 0x000000000000007D dispatcher.cpp 581
103 windows_ui_xaml!CJupiterWindow::RunCoreWindowMessageLoop 0x000000000000004C jupiterwindow.cpp 1244
104 windows_ui_xaml!DirectUI::DXamlCore::RunMessageLoop 0x0000000000000044 dxamlcore.cpp 2217
105 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::Run 0x000000000000003A coreapplicationview.cpp 1798
106 twinapi_appcore!lambda_476a253d60a149be58fa202b506b2c7b::operator 0x00000000000001A5 coreapplicationview.cpp 1212
107 shcore!_WrapperThreadProc 0x00000000000000F5 thread.cpp 321
108 kernel32!BaseThreadInitThunk 0x0000000000000014 thread.c 64
109 ntdll!RtlUserThreadStart 0x0000000000000021 rtlstrt.c 998

In 'Currency' mode 'Update rates' is defined as a link instead of button

Test Environment:
Calculator : 10.1805.1201.0
OS Build : 17685.1000.180531-1431

Repro Steps:

  1. Start the narrator in scan mode
  2. Launch calculator
  3. Home screen will be displayed.
  4. Navigate to menu bar and select 'Currency' Mode
  5. Navigate to 'Update rates' link
  6. Verify if narrator announces 'Updates rate' as link

Actual Result :
In 'Currency' mode 'Update rates' is defined as link

Expected Result:
In 'Currency' mode 'Update rates' should be button instead of link

[Watson Failure] caused by MOAPPLICATION_HANG_cfffffff_Microsoft.WindowsCalculator!HANG_QUIESCE

symbol offset filename line
0 Microsoft.WindowsCalculator!HANG_QUIESCE 0x0000000000000000 0
1 unknown![.ecxr] 0x0000000000000000 0
2 ntdll!ZwCreateFile 0x0000000000000000 usrstubs.asm 859
3 KERNELBASE!CreateFileInternal 0x0000000000000000 fileopcr.c 684
4 KERNELBASE!CreateFileW 0x0000000000000000 fileopcr.c 1198
5 DWrite!File::TryOpen 0x0000000000000000 fileio_windroid.cpp 92
6 DWrite!File::File 0x0000000000000000 fileio_windroid.cpp 20
7 DWrite!LocalFileLoader::SerializeReferenceKeyTo 0x0000000000000000 localfileloader.cpp 685
8 DWrite!DWriteFactory::CreateLocalFontFileReferenceInternal 0x0000000000000000 dwritefactory.cpp 783
9 DWrite!DWriteFactory::CreateFontFileReference 0x0000000000000000 dwritefactory.cpp 809
10 Windows_UI_Xaml!DXamlFontFileEnumerator::GetCurrentFontFile 0x0000000000000000 dxamlfontfileenumerator.cpp 98
11 DWrite!FontCollectionBuilder::AddFontFiles 0x0000000000000000 fontcollectionbuilder.cpp 41
12 DWrite!FontCollectionConstructionTask::AddElementData 0x0000000000000000 fontcollectionelement.cpp 139
13 DWrite!CacheWriter::AddElement 0x0000000000000000 cachewriter.cpp 592
14 DWrite!IBaseCacheContextImpl::AddElementInternal 0x0000000000000000 ibasecachecontext.cpp 32
15 DWrite!DWriteFactory::AddElement 0x0000000000000000 dwritefactory.cpp 358
16 DWrite!ElementTaskList::ExecuteTask 0x0000000000000000 elementtasklist.cpp 208
17 DWrite!IBaseCacheContextImpl::GetElementData 0x0000000000000000 ibasecachecontext.cpp 19
18 DWrite!FontCollection::FontCollection 0x0000000000000000 fontcollection.cpp 24
19 DWrite!ComObject_DWriteFontCollection,DeleteOnZeroReference_::ComObject_DWriteFontCollection,DeleteOnZeroReference__DWriteFactory * __ptr64,FontCollectionElementKey * _ptr64 0x0000000000000000 comhelpers.h 277
20 DWrite!DWriteFactory::CreateCustomFontCollection 0x0000000000000000 dwritefactory.cpp 618
21 Windows_UI_Xaml!DWriteFontAndScriptServices::CreateCustomFontCollection 0x0000000000000000 dwritefontandscriptservices.cpp 293
22 Windows_UI_Xaml!PALFontAndScriptServices::CreateFontCollectionFromUri 0x0000000000000000 palfontandscriptservices.cpp 377
23 Windows_UI_Xaml!CCompositeFontFamily::CreateNew 0x0000000000000000 compositefontfamily.cpp 624
24 Windows_UI_Xaml!CTypefaceCollection::LookupCompositeFontFamily 0x0000000000000000 typefacecollection.cpp 106
25 Windows_UI_Xaml!CFontFamily::EnsureCompositeFontFamily 0x0000000000000000 fontfamily.cpp 128
26 Windows_UI_Xaml!CTextBlock::GetLineHeight 0x0000000000000000 textblock.cpp 1565
27 Windows_UI_Xaml!CTextBlock::MeasureOverride 0x0000000000000000 textblock.cpp 1640
28 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
29 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
30 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
31 Windows_UI_Xaml!CContentPresenter::MeasureOverride 0x0000000000000000 contentpresenter.cpp 810
32 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
33 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
34 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
35 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
36 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
37 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
38 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
39 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
40 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
41 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
42 Windows_UI_Xaml!DirectUI::ContentControl::MeasureOverride 0x0000000000000000 contentcontrol_partial.cpp 58
43 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
44 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
45 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
46 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
47 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
48 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
49 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
50 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
51 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
52 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
53 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
54 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
55 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
56 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
57 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
58 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
59 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
60 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
61 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
62 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
63 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
64 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
65 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
66 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
67 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
68 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
69 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
70 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
71 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
72 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
73 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
74 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
75 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
76 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
77 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
78 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
79 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
80 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
81 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
82 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
83 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
84 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
85 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
86 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
87 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
88 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
89 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
90 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
91 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
92 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
93 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
94 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
95 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
96 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
97 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
98 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
99 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
100 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
101 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
102 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
103 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
104 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
105 Windows_UI_Xaml!CBorder::MeasureOverride 0x0000000000000000 border.cpp 220
106 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
107 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
108 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
109 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
110 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
111 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
112 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
113 Windows_UI_Xaml!CContentPresenter::MeasureOverride 0x0000000000000000 contentpresenter.cpp 810
114 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
115 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
116 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
117 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
118 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
119 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
120 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
121 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
122 Windows_UI_Xaml!CBorder::MeasureOverride 0x0000000000000000 border.cpp 220
123 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
124 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
125 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
126 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
127 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
128 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
129 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
130 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
131 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
132 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
133 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
134 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
135 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
136 Windows_UI_Xaml!CSplitView::MeasureOverride 0x0000000000000000 splitview.cpp 158
137 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
138 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
139 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1079
140 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
141 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
142 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
143 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
144 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
145 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
146 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
147 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
148 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
149 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1049
150 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
151 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
152 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
153 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
154 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
155 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
156 Windows_UI_Xaml!DirectUI::ContentControl::MeasureOverride 0x0000000000000000 contentcontrol_partial.cpp 58
157 Microsoft_UI_Xaml!winrt::impl::consume_Windows_UI_Xaml_IFrameworkElementOverrides_winrt::Windows::UI::Xaml::IFrameworkElementOverrides_::MeasureOverride 0x0000000000000000 windows.ui.xaml.h 4102
158 Microsoft_UI_Xaml!NavigationView::MeasureOverride 0x0000000000000000 navigationview.cpp 476
159 Microsoft_UI_Xaml!winrt::impl::produce_NavigationView,winrt::Windows::UI::Xaml::IFrameworkElementOverrides_::MeasureOverride 0x0000000000000000 windows.ui.xaml.h 13038
160 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
161 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
162 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
163 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
164 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
165 Windows_UI_Xaml!CGrid::MeasureCellsGroup 0x0000000000000000 grid.cpp 353
166 Windows_UI_Xaml!CGrid::MeasureOverride 0x0000000000000000 grid.cpp 1278
167 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
168 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
169 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
170 Windows_UI_Xaml!DirectUI::UIElement::MeasureImpl 0x0000000000000000 uielement_partial.cpp 610
171 Windows_UI_Xaml!DirectUI::UIElementGenerated::Measure 0x0000000000000000 uielement.g.cpp 4264
172 Windows_UI_Xaml!DirectUI::Page::MeasureOverride 0x0000000000000000 page_partial.cpp 614
173 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1075
174 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
175 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
176 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
177 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
178 Windows_UI_Xaml!CContentPresenter::MeasureOverride 0x0000000000000000 contentpresenter.cpp 810
179 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
180 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
181 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
182 Windows_UI_Xaml!CControl::MeasureOverride 0x0000000000000000 control.cpp 387
183 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideImpl 0x0000000000000000 frameworkelement_partial.cpp 210
184 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverride 0x0000000000000000 frameworkelement.g.cpp 1058
185 Windows_UI_Xaml!DirectUI::ContentControl::MeasureOverride 0x0000000000000000 contentcontrol_partial.cpp 58
186 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1079
187 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
188 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
189 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
190 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
191 Windows_UI_Xaml!CBorder::MeasureOverride 0x0000000000000000 border.cpp 220
192 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
193 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
194 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
195 Windows_UI_Xaml!DirectUI::UIElement::MeasureImpl 0x0000000000000000 uielement_partial.cpp 610
196 Windows_UI_Xaml!DirectUI::UIElementGenerated::Measure 0x0000000000000000 uielement.g.cpp 4264
197 Windows_UI_Xaml!DirectUI::ScrollContentPresenter::MeasureOverride 0x0000000000000000 scrollcontentpresenter_partial.cpp 1884
198 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1079
199 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
200 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
201 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
202 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
203 Windows_UI_Xaml!DirectUI::UIElement::MeasureImpl 0x0000000000000000 uielement_partial.cpp 610
204 Windows_UI_Xaml!DirectUI::UIElementGenerated::Measure 0x0000000000000000 uielement.g.cpp 4264
205 Windows_UI_Xaml!DirectUI::ScrollViewer::MeasureOverride 0x0000000000000000 scrollviewer_partial.cpp 1940
206 Windows_UI_Xaml!DirectUI::FrameworkElementGenerated::MeasureOverrideProtected 0x0000000000000000 frameworkelement.g.cpp 1079
207 Windows_UI_Xaml!DirectUI::FrameworkElement::MeasureOverrideFromCore 0x0000000000000000 frameworkelement_partial.cpp 255
208 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1520
209 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
210 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
211 Windows_UI_Xaml!CRootVisual::MeasureOverride 0x0000000000000000 rootvisual.cpp 106
212 Windows_UI_Xaml!CFrameworkElement::MeasureCore 0x0000000000000000 framework.cpp 1537
213 Windows_UI_Xaml!CUIElement::MeasureInternal 0x0000000000000000 uielement.cpp 3882
214 Windows_UI_Xaml!CUIElement::Measure 0x0000000000000000 uielement.cpp 3742
215 Windows_UI_Xaml!CLayoutManager::UpdateLayout 0x0000000000000000 layoutmanager.cpp 271
216 Windows_UI_Xaml!CCoreServices::NWDrawTree 0x0000000000000000 xcpcore.cpp 6922
217 Windows_UI_Xaml!CCoreServices::NWDrawMainTree 0x0000000000000000 xcpcore.cpp 6718
218 Windows_UI_Xaml!CWindowRenderTarget::Draw 0x0000000000000000 windowrendertarget.cpp 137
219 Windows_UI_Xaml!CXcpBrowserHost::OnTick 0x0000000000000000 winbrowserhost.cpp 538
220 Windows_UI_Xaml!CXcpDispatcher::Tick 0x0000000000000000 xcpwindow.cpp 1450
221 Windows_UI_Xaml!CXcpDispatcher::OnReentrancyProtectedWindowMessage 0x0000000000000000 xcpwindow.cpp 1048
222 Windows_UI_Xaml!CDeferredInvoke::DispatchQueuedMessage 0x0000000000000000 xcpwindow.cpp 293
223 Windows_UI_Xaml!CXcpDispatcher::MessageTimerCallbackStatic 0x0000000000000000 xcpwindow.cpp 1527
224 CoreMessaging!Microsoft__CoreUI__Dispatch__TimeoutHandler$CallbackThunk 0x0000000000000000 common__dllinterop.cpp 505
225 CoreMessaging!Microsoft::CoreUI::Dispatch::TimeoutManager::Callback_OnDispatch 0x0000000000000000 timeoutmanager.cs 431
226 CoreMessaging!Microsoft::CoreUI::Dispatch::EventLoop::Callback_RunCoreLoop 0x0000000000000000 eventloop.cs 871
227 CoreMessaging!Microsoft::CoreUI::Dispatch::UserAdapter::OnUserDispatch 0x0000000000000000 useradapter.cs 700
228 CoreMessaging!Microsoft::CoreUI::Dispatch::UserAdapter_DoWork 0x0000000000000000 useradaptern.cpp 505
229 CoreMessaging!Microsoft::CoreUI::Dispatch::UserAdapter_WindowProc 0x0000000000000000 useradaptern.cpp 751
230 user32!UserCallWinProcCheckWow 0x0000000000000000 clmsg.cxx 279
231 user32!DispatchClientMessage 0x0000000000000000 client.cxx 3507
232 user32!__fnDWORD 0x0000000000000000 ntcb.h 1340
233 ntdll!KiUserCallbackDispatcherContinue 0x0000000000000000 trampoln.asm 598
234 win32u!ZwUserPeekMessage 0x0000000000000000 usrstubs.asm 174
235 user32!_PeekMessage 0x0000000000000000 ntstubs.cxx 967
236 user32!PeekMessageW 0x0000000000000000 cltxt.h 733
237 Windows_UI!Windows::UI::Core::CDispatcher::ProcessMessage 0x0000000000000000 dispatcher.cpp 284
238 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal 0x0000000000000000 dispatcher.cpp 1959
239 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessages 0x0000000000000000 dispatcher.cpp 461
240 twinapi_appcore!lambda_476a253d60a149be58fa202b506b2c7b::operator 0x0000000000000000 coreapplicationview.cpp 1201
241 SHCore!_WrapperThreadProc 0x0000000000000000 thread.cpp 321
242 kernel32!BaseThreadInitThunk 0x0000000000000000 thread.c 64
243 ntdll!RtlUserThreadStart 0x0000000000000000 rtlstrt.c 998

Does not support paste of monetary values

When pasting input that contains a prefix currency symbol (e.g., $5), the display shows "Invalid input". We should not treat this as invalid input, but instead trim away prefix currency symbols and treat them as numerical values.

Calendar in the calculator appears outside the window

In Date Calculator, you can select the date from the calendar, but the display is bugged and the calendar will be shown outside of the window.
calendarunclipped

Found in OS build: 10.0.17763.292.amd64fre.rs5_release.180914-1434
Original bug has no Calculator version information.

Length conversion should use Feet + Inches instead of Feet with decimal point

Problem Statement
Today, length converter shows decimal values for feet, while in practice, feet + inches are oftentimes used.

Evidence or User Insights
Observation of current behavior and customary use in U.S. and U.K. Details on foot (unit).

Proposal
When converting to feet, in addition to showing the decimal conversion, also include "feet + inches", which is more commonly used when working in this unit. For example, when converting 230cm, Calculator shows 7.545932 feet. It would be more useful if it would also show 7' 6.55" (feet with inches).

Possibly dependent on #379.

Goals

  • Additionally show the "feet and inches" conversion when working with feet in length converter.

Non-Goals

  • Remove decimal representation of values in feet

Low-Fidelity Concept
image

Requested Assignment
I'm just suggesting this idea. I don't want to implement it.

Calculator should use constexpr when defining static const strings

Many strings in Calculator should not be modified and so we declare them 'static const'. This is fine for ensuring compiler-enforced const-ness, but a downside to this approach is that the strings aren't created until runtime. We can improve this by marking the strings with 'constexpr'. This will tell the compiler to bake the strings into the binary itself, which results in less overhead.

compact overlay for calculator in tablet mode

if the calculator has compact over lay i can use it like an actual calculator in tablet mode. It will be just like the desktop and i can use it instead of having to go into the app separately.

Update calc engine to remove existence of negative 0

The current calc engine has many cases that result in a calculation of negative 0. While there are a couple spots where this is checked and resolved (2, to be exact), this should be improved to prevent cases like "not(1-1) = -1".

[Watson Failure] caused by STOWED_EXCEPTION_XAML_87b20c08_Calculator.exe!Windows::ApplicationModel::Core::ICoreApplicationView2::Dispatcher::get

symbol offset filename line
0 combase!RoOriginateError 0x000000000000003D error.cpp 591
1 twinapi_appcore!wil::details::RaiseRoOriginateOnWilExceptions 0x0000000000000105 resultoriginate.h 76
2 twinapi_appcore!wil::details::LogFailure 0x000000000000011E resultmacros.h 3637
3 twinapi_appcore!wil::details::ReportFailure 0x000000000000006D resultmacros.h 3741
4 twinapi_appcore!wil::details::ReportFailure_Hr 0x0000000000000023 resultmacros.h 3820
5 twinapi_appcore!wil::details::in1diag3::Return_Hr 0x0000000000000019 resultmacros.h 3993
6 twinapi_appcore!lambda_c75d25f887482f3b28a30ff304be9f35::operator 0x0000000000042193 coreapplicationviewagilecontainer.cpp 191
7 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewAgileContainer::CreateNewView 0x0000000000000130 coreapplicationviewagilecontainer.cpp 244
8 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplication::CreateNewViewInternal 0x000000000000008F coreapplication.cpp 3111
9 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplication::CreateNewViewFromMainView 0x0000000000000019 coreapplication.cpp 3133
10 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationFactory::CreateNewViewFromMainView 0x0000000000000048 coreapplicationfactory.cpp 348
11 Calculator!Windows::ApplicationModel::Core::ICoreApplicationView2::Dispatcher::get 0x0000000000000021 0
12 Calculator!Windows::ApplicationModel::Core::CoreApplication::CreateNewView 0x0000000000000072 0
13 Calculator!CalculatorApp::App::OnAppLaunch 0x00000000000827E8 app.xaml.cpp 307
14 Calculator!CalculatorApp::App::[Windows::UI::Xaml::IApplicationOverrides]::OnLaunched 0x000000000000007E app.xaml.cpp 208
15 Calculator!CalculatorApp::App::[Windows::UI::Xaml::IApplicationOverrides]::__abi_Windows_UI_Xaml_IApplicationOverrides____abi_OnLaunched 0x0000000000000026 0
16 Windows_UI_Xaml!DirectUI::FrameworkApplicationGenerated::OnLaunchedProtected 0x0000000000000045 frameworkapplication.g.cpp 465
17 Windows_UI_Xaml!DirectUI::FrameworkView::OnActivated 0x00000000000000D6 frameworkview_partial.cpp 268
18 Windows_UI_Xaml!Microsoft::WRL::Details::DelegateArgTraits_long (__stdcall Windows::Foundation::ITypedEventHandler_impl_Windows::Foundation::Internal::AggregateType_Windows::ApplicationModel::Core::CoreApplicationView *,Windows::ApplicationModel::Core::ICoreA 0x0000000000000029 event.h 245
19 twinapi_appcore!Microsoft::WRL::InvokeTraits_-2_::InvokeDelegates__lambda_7749a6e0e7ae5f0f2e9a837f72796c4e_,Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationView *,Windows::ApplicationModel::Activation::IActivatedEventAr 0x000000000000004C internalevent.h 119
20 twinapi_appcore!Microsoft::WRL::EventSource_Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationView *,Windows::ApplicationModel::Activation::IActivatedEventArgs *,Microsoft::WRL::InvokeModeOptions-2_ ::DoInvoke__lambda 0x0000000000000044 event.h 812
21 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationView::Activate 0x0000000000000233 coreapplicationview.cpp 407
22 rpcrt4!Invoke 0x0000000000000034 invoke.asm 98
23 rpcrt4!NdrStubCall2 0x000000000000040A srvcall.cxx 1455
24 combase!CStdStubBuffer_Invoke 0x00000000000000D1 stub.cxx 1446
25 rpcrt4!CStdStubBuffer_Invoke 0x000000000000002A ndrfwds.cxx 177
26 combase!ObjectMethodExceptionHandlingAction__lambda_1ba7c1521bf8e7d0ebd8f0b3c0295667_ _ 0x000000000000009B excepn.hxx 91
27 combase!DefaultStubInvoke 0x0000000000000277 channelb.cxx 1769
28 combase!ServerCall::ContextInvoke 0x0000000000000471 ctxchnl.cxx 1532
29 combase!ASTAInvokeInApartment 0x0000000000000143 applicationsta.cpp 468
30 combase!AppInvoke 0x00000000000009C8 channelb.cxx 1497
31 combase!ComInvokeWithLockAndIPID 0x00000000000006BD channelb.cxx 2602
32 combase!ThreadDispatch 0x000000000000025B chancont.cxx 422
33 combase!ModernSTAState::HandleMessage 0x0000000000000050 modernsta.cpp 479
34 combase!ModernSTAWaitContext::HandlePriorityEventsFromMessagePump 0x000000000000007D modernsta.cpp 1557
35 Windows_UI!Windows::UI::Core::CDispatcher::ProcessInvokeItem 0x00000000000002C5 dispatcher.cpp 1295
36 Windows_UI!Windows::UI::Core::CDispatcher::ProcessMessage 0x0000000000000184 dispatcher.cpp 367
37 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessagesInternal 0x000000000000009E dispatcher.cpp 1953
38 Windows_UI!Windows::UI::Core::CDispatcher::WaitAndProcessMessages 0x000000000000002D dispatcher.cpp 461
39 twinapi_appcore!Event::WaitAndProcessEvents 0x000000000000006D eventwrapper.cpp 105
40 twinapi_appcore!Windows::ApplicationModel::Core::CoreApplicationViewAgileContainer::WaitForViewReady 0x0000000000000039 coreapplicationviewagilecontainer.cpp 1313
41 twinapi_appcore!lambda_42dace6f2e92fb4816976bb76535be76::lambda_invoker_stdcall 0x000000000000004A coreapplicationviewagilecontainer.cpp 1105
42 SHCore!_WrapperThreadProc 0x00000000000000C0 thread.cpp 321
43 kernel32!BaseThreadInitThunk 0x0000000000000019 thread.c 64
44 ntdll!__RtlUserThreadStart 0x000000000000002B rtlstrt.c 1163
45 ntdll!_RtlUserThreadStart 0x000000000000001B rtlstrt.c 1080

Update Calculator engine’s use of smart pointers

The Calculator engine allocates and frees its own memory which leads to issues such as double-frees that are hard to investigate. We should clean this code and switch to modern constructs such as smart_ptrs to eliminate these issues.

[Watson Failure] caused by CPP_EXCEPTION_e06d7363_Calculator.exe!Windows::UI::Xaml::PropertyMetadata::PropertyMetadata

symbol offset filename line
0 kernelbase!RaiseException 0x0000000000000068 xcpt.c 904
1 vcruntime140_app!_CxxThrowException 0x00000000000000AD throw.cpp 133
2 vccorlib140_app!__abi_WinRTraiseCOMException 0x0000000000000035 exceptions.cpp 553
3 calculator!__abi_WinRTraiseException 0x00000000000000D8 vccorlib.h 1134
4 calculator!Windows::UI::Xaml::PropertyMetadata::PropertyMetadata 0x0000000000000107 0
5 calculator!Utils::RegisterDependencyPropertyAttachedWithCallback_CalculatorApp::Common::KeyboardShortcutManager,Platform::String ^,void (__cdecl*) 0x0000000000000076 utils.h 241
6 calculator!`dynamic initializer for 'CalculatorApp::Common::KeyboardShortcutManager::s_CharacterProperty'' 0x0000000000000014 keyboardshortcutmanager.cpp 21
7 ucrtbase!_initterm 0x000000000000008E initterm.cpp 21
8 calculator!__scrt_common_main_seh 0x000000000000007C exe_common.inl 258
9 kernel32!BaseThreadInitThunk 0x0000000000000014 thread.c 64
10 ntdll!RtlUserThreadStart 0x0000000000000021 rtlstrt.c 997

Programmer Mode should support setting the radix based on pasted values

Problem Statement
Calculator currently supports pasting in prefixed/suffixed values in programmer mode if the value is considered valid for the current radix (hex/dec/bin/oct).

Evidence or User Insights
This is a small quality-of-life improvement when using programmer mode.

Proposal
Upon paste in programmer mode, if invalid input is detected, attempt to detect if the value is valid in a radix other than the current one, and if so, automatically switch to that radix and accept pasted value.

Prefixes

  • Pasted input with prefixes always automatically change to specified radix (e.g., "0b" = binary; "0x" = hex, etc.)

Suffixes

  • If pasted input is valid in currently selected radix, prefer to remain in selected radix (e.g., pasting "10b" while in hex results in remaining in hex with "10B").
  • If pasted input is invalid in currently selected radix and is valid in exactly one other radix, automatically change to specified radix (e.g., pasting "10F" in decimal is invalid and is only valid as hex input, so switch to hex).
  • If pasted input is invalid in currently selected radix and is valid in more than one other radix, do not change radix and display "Cannot determine radix" (e.g., pasting "10b" in decimal is invalid, but is valid input for both binary ('b' suffix) and hex ("10B" is valid hex).
  • If pasted input is invalid across radices, maintain current behavior and display "Invalid input".

Goals

  • Minimize instances we display "Invalid Input" by automatically switching radix when we can do so confidently.

Non-Goals

  • Add support for additional radix prefixes/suffixes.

Low-Fidelity Concept
N/A (use existing UI; just switch radix when appropriate)

Requested Assignment
I'm just suggesting this idea. I don't want to implement it.

Update Calc x:Name values to begin with uppercase

Any and all occurrences of x:Name should use Pascal-case. Right now, it is inconsistent between views. The reasoning is that x:Name converts the object to be accessible as a property of the current view and properties should be Pascal-cased. I think this issue is easily fixed with a regex + replace.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.