1. 15 Jul, 2015 1 commit
  2. 14 Jul, 2015 1 commit
  3. 09 Jul, 2015 1 commit
    • Hans Boehm's avatar
      Support pasting of scientific notation numbers · 0b9806f6
      Hans Boehm authored
      Bug: 21470972
      
      Support pasting of numbers using scientific notation with 'E'.  This
      is intentionally very restricted to dodge ambiguities with the
      constant e.  We only accept a scientific notation constant if it is
      
      1) Contained within a single pasted text element.
      2) Uses capital 'E' to introduce the exponent.
      3) Does not contain an explicit '+' in the exponent.
      
      We do currently use the same notion of 'digit' as elsewhere, i.e.
      Character.isDigit(), which might be too general.
      
      For consistency, and to make sure that we can recognize machine
      generated output, this also adds a few more aliases for text input
      of arithmetic operators.
      
      For consistency, always use 'E' internally for scientific notation as
      well.
      
      We ensure that a pasted numeric string is not concatenated with
      a pre-existing constant.  This is a judgment call, but it means
      that pasting a previous calculator result gets similar treatment
      whether or not we are still running the same calculator instance.
      
      We support limited editing on exponents.  Once an exponent is deleted,
      the only way to restore it is via pasting.  The 10^x button
      produces similar results, though with different operator precedence
      behavior.
      
      Change-Id: I2d0f3dceb641cdad327fd3c3540b5eea38030146
      0b9806f6
  4. 08 Jul, 2015 2 commits
  5. 06 Jul, 2015 1 commit
  6. 01 Jul, 2015 3 commits
    • Justin Klaassen's avatar
      Tweak text sizes and padding to prevent clipping · b43e6810
      Justin Klaassen authored
      Bug: 22206007
      
      Some languages contain oversized glyphs which may inadvertently be
      clipped when displayed by AlignedTextView. The updated text sizes and
      padding values should ensure that enough room is always reserved for
      these glyphs (even when font scaling is set to HUGE).
      
      Change-Id: Ic62df3104d033b1eafcf7d83f7e91d5329c8be70
      b43e6810
    • Justin Klaassen's avatar
      Always use "H" for formula text alignment · b2c3e440
      Justin Klaassen authored
      Bug: 22208425
      
      Most of the mathematical operators/symbols (e.g. "π") cannot be encoded
      using "ISO-8859-1" however they still should be aligned using the
      default capital letter height ("H").
      
      Change-Id: I4ca6674de6e6a96b0ce513ecd8acea775f2e7081
      b2c3e440
    • Geoff Mendal's avatar
      Import translations. DO NOT MERGE · 6a83e391
      Geoff Mendal authored
      Change-Id: I631ffe9434ba119d50835247c1bd6cfcbc77355c
      Auto-generated-cl: translation import
      6a83e391
  7. 30 Jun, 2015 1 commit
    • Hans Boehm's avatar
      Reimplement overflow menu messages as DialogFragments · a3723849
      Hans Boehm authored
      Bug: 20650813
      
      This preserves fraction and "with leading digits" displays during
      rotation.
      
      It also turns out to easily support copy, which is a useful bonus,
      since it was an obvious hole in the UI for the fraction display.
      For the "with leading digits" display, this is similar to a
      plain display copy, but it allows character-level selection.
      
      Much of the code here was cloned from Justin's.
      
      Change-Id: I4805280fa6a46f06833be0bde9563c3ce04dca45
      a3723849
  8. 27 Jun, 2015 1 commit
    • Hans Boehm's avatar
      Make trailing operator handling consistent with L · e8553769
      Hans Boehm authored
      Bug: 246391
      
      Only ignore trailing BINARY operators when computing instant results.
      We used to be much more aggressive.
      
      Also ignore trailing binary operators when the user hits "=".
      
      This makes us consistent with the L design and ensures that instant
      results don't turn into errors when the user hits "=".
      
      Change-Id: I260e95d152168b70774330ac95d5bc567cf79b3d
      e8553769
  9. 24 Jun, 2015 4 commits
    • Hans Boehm's avatar
      Reflect conversion of CR to unchecked exceptions · 19e93c98
      Hans Boehm authored
      Bug: 20667245
      
      Update calculator code to reflect the fact that CR Errors have
      become exceptions, and they are now delcared local to CR.
      
      Change-Id: Ie9c9e10cef2f98a23856aa9e49328ae7ba52c9bc
      19e93c98
    • Hans Boehm's avatar
    • Hans Boehm's avatar
      Restore original scroll position on = · 15a853dd
      Hans Boehm authored
      Bug: 22041219
      
      Restore default scrolling position when hitting enter after scrolling
      an instant display result.
      
      We could instead preserve the position and fix the display logic to
      no longer get confused by a non-default initial position.  But this
      feels more natural to me.
      
      Change-Id: I43bb936b5bb1b5af7a7befb90fdfc0f745fb7729
      15a853dd
    • Hans Boehm's avatar
      Improve logic for evaluation/animation interruption · c1ea091a
      Hans Boehm authored
      Bug: 21471857
      Bug: 20819212
      
      End rather than cancel() in-progress animation in the event of user
      interaction.
      
      Discard input that interrupted a computation only for delete,
      and clear, where it seems to make sense.
      
      Use similar interruption logic for physical keyboard input as for
      touch.
      
      Make integer exponentiation more interruptible.  This remains
      imperfect; the latencies in a single BigInteger multiplication
      can be high. Filed b/21957088 to track that.
      
      Clear "instant" result before launching reevaluation.  Otherwise the
      example from b/21957088 shows incorrect instant results for an
      uncomfortably long time as it's being entered.
      
      Correct some of the state maintenance operations in Calculator.java.
      The ANIMATE state was not being used correctly.
      
      Remove redundant cancelAll() and onCancelled() calls.
      
      Add an option to cancel without a message.  Use it for clear.
      
      Change-Id: Ibab90dca0cb894e7985642f212ff41030f2fc52d
      c1ea091a
  10. 23 Jun, 2015 2 commits
    • Hans Boehm's avatar
    • Hans Boehm's avatar
      Correct off-by-1 errors in display formatting code. · 5e802f30
      Hans Boehm authored
      Bug: 21986868
      Bug: 21960281
      
      Fix and restructure the formatting and scroll-limit-calculation
      code.  This code is inherently tricky, and has had more bugs than
      we would like to admit to.  Use the opportunity to clean up the
      code a bit, renaming variables consistently.
      
      The good news is that the code seems to be getting slightly
      simpler with each bug fix.
      
      This fixes several separate off-by-one errors related to result
      formatting:
      
      The expLen() exponent string length calculation was off by 1
      for exact powers of 10.
      
      The dropDigits calculation in the formatting code was off for
      negative exponents just shorter than an exact power of 10.
      
      The exponent space calculation for a few results like -1.2*10^-8
      was off by one.
      
      For a result like -10^-500 we did not reserve space for the leading
      minus sign, since that's not computed until after scrolling.
      
      [Less serious] The ellipses were omitted when we had just barely
      scrolled a leading minus sign off the screen.  (This only occurred
      in exactly one position, which could never be the default one.)
      
      Change-Id: If1bfbbb70a624998be3d996592d129b16aade745
      5e802f30
  11. 22 Jun, 2015 2 commits
  12. 20 Jun, 2015 1 commit
  13. 19 Jun, 2015 2 commits
    • Hans Boehm's avatar
      Improve copy/paste menu appearance · 7f83e36b
      Hans Boehm authored
      Bug: 20503008
      
      Correctly provide content position information to the ActionMode so
      that menues can be better positioned.
      
      Highlight a result that's about to be copied.
      
      Ensure that the end of the current formula becomes visible when
      the paste menu appears.
      
      Change-Id: I318985776e59175b827d5089c0ca4978f3a658cb
      7f83e36b
    • Hans Boehm's avatar
      Fix "with leading digits" display. · f6dae114
      Hans Boehm authored
      Bug: 21759654
      
      Previously the number of displayed digits didn't quite match the
      number of digits in the normal display, and results with positive
      exponents always came out as inexact.  This fixes both.
      
      Remove an obsolete FIXME comment.
      
      Change-Id: I9aa0217d7804218c54fe929e59dfbc6bbf880db7
      f6dae114
  14. 18 Jun, 2015 4 commits
  15. 17 Jun, 2015 1 commit
  16. 15 Jun, 2015 1 commit
  17. 14 Jun, 2015 1 commit
  18. 10 Jun, 2015 6 commits
    • Hans Boehm's avatar
      Update comments for shortcut button content descriptions · b3f7278a
      Hans Boehm authored
      Bug: 21623405
      Bug: 21603293
      
      Make comments more descriptive for transalation.  The attached bugs
      requested this for "10 to the power of".
      
      Change-Id: I75da9fcfb076cf74d095d3abef5312571607f0fe
      b3f7278a
    • Geoff Mendal's avatar
      Import translations. DO NOT MERGE · d4de959b
      Geoff Mendal authored
      Change-Id: I31ef49f951ba3ec9e4ebb048962fca8aa9394377
      Auto-generated-cl: translation import
      d4de959b
    • Hans Boehm's avatar
      Improve logic for when to display instant result · 187d3e93
      Hans Boehm authored
      Bug: 21497671
      
      Fix mChangedValue handling, so that it is only reset after an actual
      evaluation, and is set when an expression is "collapsed".
      
      Consistently produce instant results for solitary pre-evaluated
      expressions if and only if they involve an abbreviation.
      
      Change-Id: I4e1f824e2353cbe78b1827f3930c72666832cff4
      187d3e93
    • Justin Klaassen's avatar
    • Justin Klaassen's avatar
      Show "INV" button's selected state · ed2e6875
      Justin Klaassen authored
      Bug: 21708864
      Change-Id: I837c7b768461ab065093c6ef6fbf0dec3acd1c2d
      ed2e6875
    • Hans Boehm's avatar
      Fix getShortString(), tune evaluation heuristics. · 50ed320c
      Hans Boehm authored
      Bug: 21474616
      
      Rewrite getShortString() to also look at the least significant digit
      information when available, and try to mimic the display formatting
      code wherever appropriate.  As a result, when the user hits "=",
      followed by "+" transitions are now more frequently smooth.
      
      Revise the evaluation heuristics so the we are more aggressive
      with the initial evaluation precision, and try harder to discover
      the leading digit in a near-zero number.  Some of this is necessary
      to keep getShortString() happy.  This version should also now
      guarantee that we are never worse than double precision floating
      pointing in displaying very small nonzero numbers.  If we display
      a number as zero, the old calculator would have, too.  (And now
      you can scroll to see whether it really is.)
      
      Up the BoundedRational bit limit to improve the chances of identifying
      exact results.
      
      In general, the incremental computation cost for operating on
      larger BigIntegers appears relatively low, so it makes sense to
      trade longer computations for fewer calls.
      
      Change-Id: I33066845b832753c109fcaf27f883b48e7e119d2
      50ed320c
  19. 09 Jun, 2015 2 commits
    • Hans Boehm's avatar
    • Hans Boehm's avatar
      Consistently avoid displaying trailing zeroes · a0e45f30
      Hans Boehm authored
      Bug: 21405924
      Bug: 21529236
      Bug: 21534231
      
      This limits the display of trailing zeroes to the case in which
      they avoid the need for scientic notation, and to the case of
      results we did not identify as rational.  This means that you
      can use scrolling as an indicator of whether there may be more
      digits.
      
      The old code exhibited some misbehavior around this, the most
      serious of which was probably the second bug listed above.
      
      This now uses scientific notation more aggressively for small
      numbers (b/21534231).
      
      This patch unfortunately needs to deal with many odd corner cases
      to make sure that we stop scrolling at just the right point, before
      the first trailing zero appears, even if there are exponents
      involved.  I tested as many corner cases as I could think of.
      And the testing exposed other preexisting bugs.
      I do not know of a good way to avoid this without reverting
      to the old scroll-through-trailing-zeroes behavior.
      
      This significantly changes the behavior on e.g.
      
      10^30 (Previously allowed scrolling to the decimal point, now is
      unscrollable.)
      10^-20 (Weird initial display with trailing zeroes; which could not
      be reproduced after scrolling.)
      
      It turns out that formatResult() scientific notation formatting
      could accidentally extend the input result by 1 or 2 characters.
      Based on my testing, the one character case was actually a feature:
      Since there was a decimal point in the result the extra ellipsis
      space seems to always give us plenty of room.  The two character
      case whoever sometimes resulted in wrapping, and is fixed here.
      The one character case is now official.  Ideally we should check
      that we actually have enough space; currently I just assume a
      single additional character.
      
      Disallow scrolling left of the default position.  This seems
      more consistent with TextView scrolling and eliminates some
      crufty code.
      
      Fixed an off-by-one error in getPreferredPrec, which resulted in
      positive results that were one character too short.
      
      Change-Id: I13657377d098055def99e7a173f71f40d361fe3c
      a0e45f30
  20. 08 Jun, 2015 3 commits