1. 27 Sep, 2011 3 commits
  2. 26 Sep, 2011 4 commits
    • Joel Martin's avatar
      Move viewport functions. · 7cd6118c
      Joel Martin authored
      Move viewportChange(), getCleanDirtyReset(), absX() and absY() to the
      public API section. Also add some function comments.
      7cd6118c
    • Joel Martin's avatar
      Remove support for non-HTML5 browsers. · 490d471c
      Joel Martin authored
      Display API change:
          - getTile -> startTile (no longer returns a tile)
          - setSubTile -> subTile (drop img/tile first parameter)
          - putTile -> finishTile (no longer takes img/tile paramter)
      
      The Display tile logic uses canvas image data directly and
      caches/reuses a 16x16 imageData tile (for other sizes, the tile is
      create for each call). This gives a 30% speedup on Chrome
      13 (and no significant change for Firefox 3.6/4.0).
      
      Other:
      
      - Remove rgbxImageFill and cmapImageFill routines.
      
      - Simplify constructor tests and just error if createImageData is not
        supported by canvas instead of .
      
      - Remove webkit canvas bug workaround that effects Chrome 7. Chrome
        7 usage share is now less than 0.5 percent and the workaround is
        ugly. Drop the function wrapping in the constructor and the canvas
        flush() routine.
      
      - Remove support for getImageData (Opera 11+ now required)
      
      Update browser support list:
      
          - Chrome 8+ (really any except 7)
          - Firefox 3.6+
          - Safari 4+
          - Opera 11+
          - IE9+
          - iOS 4.2+
      490d471c
    • Joel Martin's avatar
      include/ui.js: remove console.log debug. · 859fc7f1
      Joel Martin authored
      859fc7f1
    • Joel Martin's avatar
      Make tests/vnc_perf.html work again. · 13106063
      Joel Martin authored
      13106063
  3. 23 Sep, 2011 2 commits
    • Joel Martin's avatar
      Fixing iOS clipping, keyboard issues. · a7db5059
      Joel Martin authored
      - Make sure that on iOS the clipping setting is always forced to be
        enabled.
      - Hide the showKeyboard button unless connected.
      - Use the URL text entry method and disable autocorrect and
        autocapitalize in the show keyboard input box.
      a7db5059
    • Joel Martin's avatar
      Only show move/drag button when clipping. Cleanup. · c506a481
      Joel Martin authored
      Cleanup:
      
      - remove unused changeViewportMeta function from include/ui.js
      - remove some debug output and debug CSS.
      - rename panel toggle functions and put them in same location in the
        code.
      - refactor some code from updateState to updateVisualState routine
        (renamed from updateSettingsState).
      c506a481
  4. 22 Sep, 2011 1 commit
    • Joel Martin's avatar
      Viewport clip/drag for mobile/touchscreen devices. · a5df24b4
      Joel Martin authored
      API changes (forward compatible):
      
      - Display: add 'viewport' conf option to turn on and off viewport
        mode.
      - RFB: add 'viewportDrag' option to enable/disable viewport dragging
        mode.
      
      Other:
      
      - Add clip mode setting to default UI. For touch devices, clipping is
        forced on.
      - Use CSS media queries to adjust visual elements based on screen
        size. Especially disconnected logo size/position and button text size.
      - Catch page unload while connected and give a confirm dialog.
      - Change mouse button selector to a single button that changes between
        ' ', 'L', 'M', 'R' when clicked (empty means mouse is just being
        moved and doesn't send clicks).
      - include/ui.js:setViewClip() routine sets the clipping of the
        viewport to the current size of the viewport area (if clipping is
        enabled).
      - include/ui.js:setViewDrag() toggles/enables/disables viewport
        dragging mode.
      - Add several images for the UI and for Apple devices:
          - images/clipboard.png: clipboard menu icon
          - images/connect.png: connect menu icon
          - images/disconnect.png: disconnect button icon
          - images/keyboard.png: show keyboard button
          - images/move.png: viewport drag/move toggle button
          - images/settings.png: settings menu icon
          - images/screen_320x460.png: iOS app/desktop link start image
          - images/screen_57x57.png: iOS app icon
          - images/screen_700x700.png: full size noVNC image
      a5df24b4
  5. 14 Sep, 2011 2 commits
  6. 13 Sep, 2011 6 commits
    • Joel Martin's avatar
      Merge branch 'master' into mobile · 7e5f81f2
      Joel Martin authored
      7e5f81f2
    • Joel Martin's avatar
      Framebuffer requests based on clean/dirty areas. · 832c7445
      Joel Martin authored
      New routine fbUpdateRequests that builds the update request messages
      based on the result of display.getCleanDirtyReset().
      
      - Also, fix fbUpdateRequest to properly accept x,y,xw,yw parameters.
      832c7445
    • Joel Martin's avatar
      Fix window/document sizing in firefox. · b70ce077
      Joel Martin authored
      Another firefox issue is that height: 100% is calculated as 100% of
      the containing element even when the containing element is the window.
      This means that the size of any sibling element shifts the window size
      down by that much and causes the vertical scroll bars to appear. This
      doesn't happen in Chrome.
      
      - So instead, put a pad element inside the noVNC_screen element that
        is the size of the control bar. This is hidden by the control bar,
        however, it causes things to be sized correctly.
      
      - Also, rename noVNC_defaultScreen to noVNC_logo.
      
      - Clean some style specification out of the HTML.
      b70ce077
    • Joel Martin's avatar
      Firefox offset bug: use margin instead of padding. · 1c3df652
      Joel Martin authored
      For some reason, the position calculation is broken in firefox when
      a DOM object in the ancestry change uses padding. So use margin to
      shift the view area down.
      1c3df652
    • Joel Martin's avatar
      Merge branch 'master' into mobile · 9192cbe3
      Joel Martin authored
      Conflicts:
      	include/rfb.js
      9192cbe3
    • Joel Martin's avatar
      Viewport handling in include/display.js · 54e7cbdf
      Joel Martin authored
      Part of mobile device support:
      https://github.com/kanaka/noVNC/issues/48
      
      The Display object is redefined as a larger display region with
      an equal or smaller visible viewport. The size of the full display
      region is set/changed using resize(). The viewport is set/changed
      using viewportChange().
      
      All exposed routines that draw on the display now take coordinates
      that are absolute (relative to the full display region). For example,
      the result of fillRect(100, 100, 10, 10, [255,0,0]) will appear in the
      canvas at (0,0) if the viewport is set to (100,100).
      
      Details:
      
      - Move the generic part of the viewport code from tests/viewport.html
        into include/display.
      
      - Add two new routines to the Display interface:
      
          - viewportChange(deltaX, deltaY, width, height)
              - This adjusts the position of the visible viewport and/or the
                size of the viewport.
      
              - deltaX and deltaY specify how the position of the viewport
                should be shifted. The position of the viewport is clamped
                to the full region size (i.e. cannot outside the display
                region).
      
              - The clean and dirty regions of the display are updated based
                on calls to this routine. For example, if the viewport width
                is increased, then there is now a dirty box on the right
                side of the viewport. Another example, if the viewport is
                shifted down and to the left over the display region, there
                are now two dirty boxes: one on the left side and one
                on the bottom of the viewport.
      
          - getCleanDirtyReset()
              - This returns an object with the clean box and a list of
                dirty boxes (that need to be redrawn).
      
                  {'cleanBox':
                      {'x': x, 'y': y, 'w': w, 'h': h},
                   'dirtyBoxes':
                      [{'x': x, 'y': y, 'w': w, 'h': h}, ...]
                   }
      
              - The coordinates in the clean and dirty boxes are absolute
                coordinates (relative to the full display region) but they
                are clipped to the visible viewport.
      
              - Calling this function also resets the clean rectangle to be
                the whole viewport (i.e. nothing visible needs to be redrawn
                dirty) so the caller of this routine is responsible for
                redrawing any
      54e7cbdf
  7. 10 Sep, 2011 1 commit
  8. 08 Sep, 2011 14 commits
  9. 06 Sep, 2011 1 commit
  10. 31 Aug, 2011 3 commits
  11. 24 Aug, 2011 1 commit
    • Joel Martin's avatar
      websockify: pull HyBi fixes. · 48f26d79
      Joel Martin authored
      Pull 86af0b614d and 7b496ce5b from websockify.
      
          Fix HyBi support on 64-bit systems.
      
          https://github.com/kanaka/noVNC/issues/76
      
          - cleanup/update TODO.
          - remove explicit check for ctypes module for HyBi.
      
          Clarify that we support HyBi 07-10.
      
          HyBi 07 reports version 7 in the handshake.
          HyBi 08-10 report version 8 in the handshake.
      
          Remove version 9 since that is not yet actually defined.
      48f26d79
  12. 22 Aug, 2011 1 commit
    • Joel Martin's avatar
      Working viewport test. · ec40268e
      Joel Martin authored
      Tested on iOS (iPhone and iPad).
      
      The viewport is correctly clipped to the screen/browser size and
      resizing works correctly.
      
      This uses the CSS3 Flexible Box Layout model.
      ec40268e
  13. 10 Aug, 2011 1 commit