[poppler] [PATCH] Poppler: Fix line selection, dont check y for Line selection

Marek Kasik mkasik at redhat.com
Thu Jan 20 02:38:31 PST 2011


Hi Sam,

the patch looks good to me. You are right that Y values should be
neglected in this case.
The patch is similar to the second part of the patch in
https://bugs.freedesktop.org/show_bug.cgi?id=22506 (unfortunately, I
haven't fixed the first part of the patch yet...).

Regards

Marek


On 01/19/2011 06:40 AM, Sam Liao wrote:
> Hi,
> 
> Is there anyone can help me to review this fix or find a more
> reasonable solution?
> 
> Thanks,
> -Sam
> 
> On Mon, Jan 17, 2011 at 5:26 PM, Sam Liao <phyomh at gmail.com> wrote:
>> When a line is selected while the Y values of selection is
>> not in the y range of words, the render will render the
>> line with reverse color while the words does not show up.
>>
>> This fix neglect the Y vaules to make sure that the words
>> also displayed when line is selected.
>> ---
>> poppler/TextOutputDev.cc |   16 ++++++++--------
>> 1 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc
>> index 576bcc9..71b946e 100644
>> --- a/poppler/TextOutputDev.cc
>> +++ b/poppler/TextOutputDev.cc
>> @@ -4249,24 +4249,24 @@ void
>> TextLine::visitSelection(TextSelectionVisitor *visitor,
>>   current = NULL;
>>   for (p = words; p != NULL; p = p->next) {
>>     if (blk->page->primaryLR) {
>> -      if ((selection->x1 < p->xMax && selection->y1 < p->yMax) ||
>> -  (selection->x2 < p->xMax && selection->y2 < p->yMax))
>> +      if ((selection->x1 < p->xMax) ||
>> +  (selection->x2 < p->xMax))
>>         if (begin == NULL)
>>  begin = p;
>>
>> -      if (((selection->x1 > p->xMin && selection->y1 > p->yMin) ||
>> -   (selection->x2 > p->xMin && selection->y2 > p->yMin)) && (begin != NULL)) {
>> +      if (((selection->x1 > p->xMin) ||
>> +   (selection->x2 > p->xMin)) && (begin != NULL)) {
>>         end = p->next;
>>         current = p;
>>       }
>>     } else {
>> -      if ((selection->x1 > p->xMin && selection->y1 < p->yMax) ||
>> -  (selection->x2 > p->xMin && selection->y2 < p->yMax))
>> +      if ((selection->x1 > p->xMin) ||
>> +  (selection->x2 > p->xMin))
>>         if (begin == NULL)
>>  begin = p;
>>
>> -      if (((selection->x1 < p->xMax && selection->y1 > p->yMin) ||
>> -   (selection->x2 < p->xMax && selection->y2 > p->yMin)) && (begin != NULL)) {
>> +      if (((selection->x1 < p->xMax) ||
>> +   (selection->x2 < p->xMax)) && (begin != NULL)) {
>>         end = p->next;
>>         current = p;
>>       }
>> --
>> 1.7.1
>>
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/poppler



More information about the poppler mailing list