1. 26 Oct, 2013 18 commits
    • Abdo Roig-Maranges's avatar
      disable adjustment callbacks in index mode · 018e026e
      Abdo Roig-Maranges authored
      Otherwise the document object gets updated with wrong position values,
      because the adjustment belong to the index, not the document view.
      018e026e
    • Abdo Roig-Maranges's avatar
      adapt view_adjustment callbacks to new document/view separation · 36346362
      Abdo Roig-Maranges authored
      The adjustment callbacks act as an interface between position data in
      the document object, and the adjustments.
      
      We remove the horizontal centering code, as now it is done by
      position_set. Those callbacks should not change the position read from
      the document object in any way.
      
      Also, we split the adjustment_value_changed callback into a vertical and
      an horizontal version. Previously a single callback was reused for both,
      horizontal and vertical. That lead to a subtle problem when coming out
      of index mode. What happened was the following:
      
        1. horizontal adjustment bounds change coming out of index mode. This
           triggers an hadjustment changed signal.
      
        2. the hadjustment_changed callback handles it, and resets the
           hadjustment value, as the bound may have changed. This triggers a
           value_changed event.
      
        3. the value_changed callback handles the event, and captures the
           position for *BOTH*, horizontal and vertical adjustments, saving
           them to the document object.
      
        1..3 is repeated for the vertical adjustment.
      
        Now, if in 3. the horizontal adjustment bounds were not yet updated
        after the index mode, we got ourselves at the wrong vertical position.
      
      This race condition is avoided now because both value_changed callbacks
      *ONLY* handle their own direction, either vertical or horizontal, not
       both.
      36346362
    • Abdo Roig-Maranges's avatar
      move adjustment code from sc_adjust_window to adjust_view · c4245600
      Abdo Roig-Maranges authored
      This new function adjust_view is in charge of recomputing the scale
      according to adjustment settings and trigger a render_all.
      
      adjust_view contains the old sc_adjust_window code, slightly simplified
      thanks to the availability of the document_get_viewport_size.
      
      Then it is used by sc_adjust_window, document_open and the
      cb_view_resized callback. Makes slightly more sense this way than
      calling the shortcut sc_adjust_window directly.
      c4245600
    • Abdo Roig-Maranges's avatar
      make position_set and page_set more asynchronous · 54b6f733
      Abdo Roig-Maranges authored
      Now page_set and position_set save the computed page and position to the
      document object, then trigger a refresh-view signal. They do not handle
      GTK adjustments anymore.
      54b6f733
    • Abdo Roig-Maranges's avatar
      add a custom refresh-view signal · 692e72ab
      Abdo Roig-Maranges authored
      Now we can trigger a gtk page refresh calling refresh_view. This
      function triggers a custom signal refresh-view, whose handler copies the
      position from the document object to the adjustments.
      692e72ab
    • Abdo Roig-Maranges's avatar
      add functions to compute page positions · 030a8c65
      Abdo Roig-Maranges authored
      The plan is to put in adjustment.c every piece of code that has to do
      with document positioning, either computing it from data on the document
      side, or talking to GTK.
      
      We want to have at our disposal functions to compute sizes and positions
      without having to ask for it to a GTK widget. The new functions are:
      
       - move page_calc_height_width to adjustment.c
      
       - add page_calc_position that rotates a position relative to a page
         according to the rotation settings.
      
       - add position_to_page_number that computes the number of a page
         sitting at a given position (given in document-relative coordinates)
      
       - add page_number_to_position that computes the position (in document
         relative coordinates) that will be placed at the center of the viewport.
      
       - add page_is_visible that checks whether the given page intersects the
         viewport.
      030a8c65
    • Abdo Roig-Maranges's avatar
      let the document know about the current adjustments · bca5bcc5
      Abdo Roig-Maranges authored
      The document object now has functions to set and get the position and
      the viewport size.
      
      The position is a relative position with respect to the size of the
      entire document, i.e. position_y=0 means top of the document and
      position_y=1 bottom.
      
      The viewport size is stored in screen coordinates, in pixels.
      bca5bcc5
    • Abdo Roig-Maranges's avatar
      move zathura_get_document_size to document.c · a0a64832
      Abdo Roig-Maranges authored
      It makes more sense, plus now the document knows about the page layout
      and can do the computation.
      a0a64832
    • Abdo Roig-Maranges's avatar
      merge callbacks for pages-per-row, first-page-column and page-padding · 0da491f7
      Abdo Roig-Maranges authored
      All of those callbacks are conceptually related (change the page
      layout), and depend from one another.
      
      Now the single callback page_layout_value_changed defers to
      page_widget_set_mode to change whatever is needed in the GTK widgets.
      0da491f7
    • Abdo Roig-Maranges's avatar
      page_widget_set_mode now sets the page-padding too · c5930c90
      Abdo Roig-Maranges authored
        - fix the computation of the number of rows in the table. Doing a ceil
          of an integer division has no effect...
      
        - set the page_padding in page_widget_set_mode function, instead of
          doing it independently.
      
        - call zathura_document_set_layout after calling page_widget_set_mode
          to save the page layout settings into the document object.
      c5930c90
    • Abdo Roig-Maranges's avatar
      make the document object aware of page layout · 25998f83
      Abdo Roig-Maranges authored
      Now the document object knows about pages_per_row, first_page_column and
      page_padding, so we will be able to compute sizes and positions of the
      document view without querying the GTK widgets.
      25998f83
    • Abdo Roig-Maranges's avatar
      faster zathura_document_get_cell_size · f617ee61
      Abdo Roig-Maranges authored
      We precompute the maximum width and maximum height when opening the
      document. Then, when someone calls zathura_document_get_cell_size we use
      page_calc_width_height to apply the rotation and scale the precomputed
      values.
      f617ee61
    • Abdo Roig-Maranges's avatar
      change arguments to page_calc_height_width · 7329209d
      Abdo Roig-Maranges authored
      now accepts a document object and explicit width and height. This will
      make it easier to reuse this function for computing the document page
      cell width and height.
      7329209d
    • Marwan Tanager's avatar
      Minor cleanup · ed27f8b8
      Marwan Tanager authored and Sebastian Ramacher's avatar Sebastian Ramacher committed
      
      
      Since we 'continue' the loop if num_search_results is 0, there is no need for
      the second check.
      Signed-off-by: Sebastian Ramacher's avatarSebastian Ramacher <sebastian+dev@ramacher.at>
      ed27f8b8
    • Marwan Tanager's avatar
      Fix issue 345 (http://bugs.pwmt.org/issue345) · cba5d8df
      Marwan Tanager authored and Sebastian Ramacher's avatar Sebastian Ramacher committed
      
      Signed-off-by: Sebastian Ramacher's avatarSebastian Ramacher <sebastian+dev@ramacher.at>
      cba5d8df
    • Sebastian Ramacher's avatar
      CS · 834bc8f4
      Sebastian Ramacher authored
      
      Signed-off-by: Sebastian Ramacher's avatarSebastian Ramacher <sebastian+dev@ramacher.at>
      834bc8f4
    • Abdo Roig-Maranges's avatar
      3629e3ac
    • Abdo Roig-Maranges's avatar
  2. 21 Oct, 2013 2 commits
  3. 20 Oct, 2013 1 commit
  4. 19 Oct, 2013 1 commit
    • Sebastian Ramacher's avatar
      Finish moving of the page cache · 5df5357f
      Sebastian Ramacher authored
      
      
      Add two more signals to ZathuraRenderRequest to notify pages if they are cached
      or not. This allows us to move some logic away from
      cb_view_vadjutment_value_changed to more appropriate places.
      
      ZathuraPageWidget will now release the surface if
      * it gets the signal that the page is no longer cached and the page is
        invisible,
      * the page is not cached and the render request is aborted.
      Signed-off-by: Sebastian Ramacher's avatarSebastian Ramacher <sebastian+dev@ramacher.at>
      5df5357f
  5. 18 Oct, 2013 2 commits
  6. 07 Oct, 2013 1 commit
  7. 14 Sep, 2013 1 commit
  8. 13 Sep, 2013 1 commit
  9. 12 Sep, 2013 1 commit
  10. 01 Sep, 2013 1 commit
  11. 31 Aug, 2013 3 commits
  12. 30 Aug, 2013 8 commits