Age | Commit message (Collapse) | Author |
|
The Emacs shortcut was overriding the FLTK behavior of selecting all
input text.
Fixes: https://github.com/dillo-browser/dillo/issues/400
|
|
Follows the behavior of so many other programs by copying the current
text selection into the clipboard with Ctrl+C. Selecting text continues
to copy it into the primary selection.
Fixes: https://github.com/dillo-browser/dillo/issues/228
|
|
Selecting text in the page copies only to the primary selection. Copying
links via the context menu now places the URL both in the primary and
clipboard selections so it can also be pasted with Ctrl+V.
See: https://github.com/dillo-browser/dillo/issues/228
|
|
When the page is first layouted, we can then determine if the vertical
scrollbar needs to be present. When the vertical scrollbar is on the
left side, the whole content needs to be shifted to the right, so we
need to allocate the top level widget again. The current fix simply
marks the top level widget for allocation.
Fixes: https://github.com/dillo-browser/dillo/issues/359
|
|
Remove extra semicolons and commas, as well as isinf() so it builds and
runs on Solaris 10.
Also add extra fixes for non C++11 courtesy of Sevan Janiyan, making
Dillo compile and run on OS X 10.4 PowerPC with GCC 4.0.1 and 8.5.
Co-authored-by: Sevan Janiyan <venture37@geeklan.co.uk>
|
|
See: https://lists.mailman3.com/hyperkitty/list/dillo-dev@mailman3.com/thread/L3FFAINJJMIOZQNID5HC2DHKJIIIHEYH/
|
|
To prevent the page from triggering the emergency stop at
resizeIdle(), we reset the resize counter when the viewport is resized.
Fixes: https://github.com/dillo-browser/dillo/issues/300
|
|
Buttons also have their own Layout, which will try to resize every time
the window has changed. We are only interested in the top-level layout,
as is the one that has a problem on some pages.
|
|
The requisition box includes the margin, padding and border. To compute
the aspect ratio of the image we need to remove them to get the content
box. Once the adjustment is done, we add the borders again.
|
|
The aspect ratio is now preserved by Widget::correctRequisition(), so we
don't need to do more steps after the call.
|
|
When CSS min-{width,height} > max-{width,height} set the
max-{width,heigh} to the maximum value min-{width,height}.
|
|
Images should preserve their own aspect ratio, which is determined by
the image buffer size, also known as the intrinsic size. Currently, when
a child requests a requisition to be corrected by correctRequisition(),
only the size was adjusted, ignoring the aspect ratio.
The new Widget ratio variable holds the desired aspect ratio for the
widget, and will only be taken into account when non-zero. In that case,
then correcting the requisition, a naive algorithm tries to first
increase the length of the small size to fill the preferred aspect
ratio. In the case that it is not enough, the larger size is then
decreased to fit the aspect ratio. And if that doesn't work either, the
aspect ratio is not enforced and the widget will be distorted.
There are special cases for correctRequisition() depending if the parent
exists or not. The same approach is taken for both cases, but using the
viewport size instead of the parent size.
|
|
For cases where the available height is being computed and the CSS
style has the height to auto, there available height is infinite. Don't
return the viewport unless forceValue is set.
|
|
|
|
When a widget calls the parent to correct its own requisition, let the
child widget perform adjustments on the requisition. This allows images
to control the height when the parent changes the width, so the image
can preserve its own aspect ratio.
|
|
|
|
|
|
When correcting a requisition, percent values were not being computed
which prevents the min-height or max-height values to be taken into
account.
|
|
When the initial width is -1, the contrainsts of min-width and max-width
are not applied. If we set the viewport width after calcFinalWidth() it
may exceed max-width. It is guaranteed to return a value different from
-1 when the initial width is positive.
|
|
Prevents reducing the available width of a body with width:auto and
min-width:100px to 100px.
The Widget::calcFinalWidth() method is also heavily documented, so we
can understand precisely what it does.
|
|
When posible, change the image size so the aspect ratio is always
preserved. This is only posible when one or both dimensions have some
room to play. When both dimensions are not fixed, a naive algorithm
tries to satisfy all {min,max}-{width,height} and aspect ratio
constraints, but it may fail. In that case, the aspect ratio is not
preserved.
Fixes the HTML tests img-aspect-ratio and img-max-bounds.
|
|
Prevents errors by one pixel
|
|
When the horizontal scrollbar is visible the viewport size is reduced,
so the page overlap should be computed from the visible viewport only.
The change ensures the overlap has the same lenght, regardless of the
visibility state of the scrollbars.
|
|
When scroll page mode is active, clicking on the up and down scrollbar
buttons make the page jump to the top and bottom repectively.
|
|
When the page scroll mode is enabled, pressing and holding the scrollbar
will keep scrolling pages on that direction until the mouse button is
released.
|
|
Introduces the new option scroll_page_overlap to control the amount of
pixels of overlap when scrolling to the next or previous page.
Previously this value was taken from scroll_step, but now they are
controlled independently.
Fixes: https://github.com/dillo-browser/dillo/issues/276
|
|
When using the scroll wheel over a page, holding Shift will cause full
pages to be scrolled instead of scroll steps. The same effect can be
achieved by scrolling over the vertical scrollbar.
|
|
The scroll page mode changes the behavior of the mouse when clicking on
the vertical scrollbar. When enabled with scrollbar_page_mode=YES,
clicking with the left button anywhere on the vertical scrollbar will
cause the page to scroll down one page. With the right button, to scroll
up one page. Holding Shift temporarily reverts the value of the option.
|
|
Implements support for placing the vertical scrollbar on the left side
by setting scrollbar_on_left=YES on dillorc. By default, continues to be
on the right side.
See: https://www.toomanyatoms.com/software/mobilized_dillo.html
Authored-By: dogma
|
|
Implements support for ch, rem, vw, vh, vmin and vmax units of CSS
lengths. For now the units relative to the viewport are only computed
once, and they won't change when the window is resized, but only when
the page is reloaded.
See: https://www.toomanyatoms.com/software/mobilized_dillo.html
Authored-By: dogma
|
|
Prevents Dillo from hoarding the CPU due to an infinite loop in the
layouting. We also return the control to FLTK to update the screen and
process events each 100 iterations, to keep the window responsive.
It doesn't fix the root cause of the github-infinite-loop test, but it
does allow the rendering to finish with no differences with the
reference test.
|
|
The strdup function is not available in POSIX-2001, so we use our own
implementation in dlib: dStrdup.
Reviewed-by: dogma
|
|
Reviewed-by: dogma
|
|
Reviewed-by: dogma
|
|
The currentColor special value for the fill and stroke attributes allows
an image to follow the same foreground color of the surounding text.
|
|
Fixes: https://bugs.gentoo.org/933361
|
|
It is always shown, even when messages are turned of by "show_msg=NO",
as the preferences are not available to dw. For now we disable it
permanently by using the _MSG() macro.
Reported-by: Kevin Koster <dillo@ombertech.com>
See: https://lists.mailman3.com/hyperkitty/list/dillo-dev@mailman3.com/message/PPNR5FTO3YFDVAQCM4SDNVAF22JEV22W/
|
|
For cases where the parent widget has the width set to auto we need to
go to the above parent to compute the available width. This is required
to make tables with a width of 100% occupy the whole available width of
the parent.
In particular, fixes render/table-max-width.html test, which was relying
on a {-1,-1,-1} requisition to have a value different than -1 in the
width to consider that the CSS width is effective.
|
|
This reverts commit 24bcd67df29a5418d05600b038a9283a00e555d2.
Fixes: https://github.com/dillo-browser/dillo/issues/99
|
|
When the width is set to auto, a different branch is used to compute the
width via getAvailWidth(true). The returned witdh needs to be clamped to
be in the min/max-width CSS range if given, as otherwise it won't be
corrected.
Fixes: https://github.com/dillo-browser/dillo/issues/89
|
|
When a widget has width to auto and the initial finalWidth is -1, set it
by default to the max-width CSS value so it expands to the maximum
available size.
|
|
The website is now at https://dillo-browser.github.io/ and the
repository at https://github.com/dillo-browser/dillo.
|
|
Then min-width or max-width is given in the CSS style for the current
widget, the returned width should be clamped by those values.
The condition *finalValue != 1 was used to clamp with min-width, but it
doesn't capture the situation when the finalValue was not yet set.
Similarly, for the max-width, the finalWidth was only set when
*finalValue == -1, which prevented the clamping when the width is set.
The change always perform the clamp when finalWidth is not set or when
the value exceeds the min or max value. When both min-width and
max-width are given but width is -1, the resulting width is the
min-witdh, as the max-width clamp rule won't trigger after setting the
*finalValue to the min-witdh.
|
|
When a widget has a parent, the calcFinalWidth() method was not being
called to compute the limits of min-width or max-width given by CSS
rules. The change makes the call to calcFinalWidth in all cases.
|
|
The same index was being used in both sides of the comparison.
|
|
Test case:
<body>
<div id="a">
<div id="b" style="float:left">main</div>
</div>
<div id="c" style="clear:left"></div>
<div id="d">footer</div>
</body>
Note: passes all the tests at
http://www.dillo.org/test/4648/test-suite.v1.txt
|
|
Introduces regressions:
.-------.--------.------.-----------.-----------------------.-----.-----.
| | BTG | test | pravda.ru | 4ta.html | VT | PV |
| | render | t.* | #1 | #2 | Girl | footb. | horos.| | |
|-------|--------|------|-----------|-----------------------|-----|-----|
|d4594 | ok | ok | x a | x b | x c | ok | x d | x i | x k |
'-----------------------------------------------------------------------'
Note: patch #4594 is the same as patch #4651.
(we use d4594 to avoid side effects from other patches).
Check this testsuite [1] for more details.
[1] http://www.dillo.org/test/4648/test-suite.v1.txt
|
|
Introduces regressions:
.-------.--------.------.-----------.-----------------------.-----.-----.
| | BTG | test | pravda.ru | 4ta.html | VT | PV |
| | render | t.* | #1 | #2 | Girl | footb. | horos.| | |
|-------|--------|------|-----------|-----------------------|-----|-----|
|d4652 | ok | ok | x a | x ic| ok | x l | x d | x n | ok |
'-----------------------------------------------------------------------'
Check this testsuite [1] for more details.
[1] http://www.dillo.org/test/4648/test-suite.v1.txt
|
|
This patch is "on hold", as it depends on reverted code,
and at least would need a non-automatic merge.
|
|
|