Author: jghali
Date: Sun Oct 25 16:19:16 2020
New Revision: 24104

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24104
Log:
#15321 (partial fix): Drop caps don't drop

Modified:
    trunk/Scribus/scribus/pageitem_textframe.cpp

Modified: trunk/Scribus/scribus/pageitem_textframe.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24104&path=/trunk/Scribus/scribus/pageitem_textframe.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_textframe.cpp        (original)
+++ trunk/Scribus/scribus/pageitem_textframe.cpp        Sun Oct 25 16:19:16 2020
@@ -1835,7 +1835,12 @@
                                        if (firstLineOffset() == 
FLOPRealGlyphHeight)
                                                addAsce = realAsce;
                                        else if (firstLineOffset() == 
FLOPLineSpacing)
-                                               addAsce = style.lineSpacing();
+                                       {
+                                               if (DropCmode)
+                                                       addAsce = DropCapDrop + 
style.lineSpacing();
+                                               else
+                                                       addAsce = 
style.lineSpacing();
+                                       }
                                }
                                maxYAsc = current.yPos - addAsce;
                        }
@@ -1844,17 +1849,14 @@
                        //fix for glyphs with negative realAsce value
                        maxYAsc = qMax(maxYAsc, 0.0);
                        maxYDesc = current.yPos + realDesc;
-
-                       if (style.lineSpacingMode() == 
ParagraphStyle::AutomaticLineSpacing)
-                       {
-                               regionMinY = static_cast<int>(floor(maxYAsc));
-                               regionMaxY = static_cast<int>(floor(maxYDesc));
-                       }
-                       else // #11727, #11628, etc.
-                       {
-                               regionMinY = static_cast<int>(qMax(0.0, 
floor(current.yPos - (asce + offset))));
-                               regionMaxY = 
static_cast<int>(floor(current.yPos + desc));
-                       }
+                       if (style.lineSpacingMode() != 
ParagraphStyle::AutomaticLineSpacing)
+                       {
+                               maxYAsc = qMin(maxYAsc, qMax(0.0, current.yPos 
- asce));
+                               maxYDesc = current.yPos + desc;
+                       }
+
+                       regionMinY = static_cast<int>(floor(maxYAsc));
+                       regionMaxY = static_cast<int>(floor(maxYDesc));
 
                        if (current.isEmpty && !current.afterOverflow)
                        {
@@ -1923,36 +1925,21 @@
                                                else
                                                        current.yPos += 
(current.startOfCol ? 1 : style.lineSpacing());
                                                lastLineY = maxYAsc;
+
                                                if (current.startOfCol)
-                                               {
-//                                                     double addAsce;
-//                                                     if (DropCmode)
-//                                                             addAsce = 
qMax(realAsce, asce + offset);
-//                                                     else
-//                                                             addAsce = asce 
+ offset;
-//                                                     if 
(style.lineSpacingMode() != ParagraphStyle::BaselineGridLineSpacing)
-//                                                     {
-//                                                             if 
(firstLineOffset() == FLOPRealGlyphHeight)
-//                                                                     addAsce 
= realAsce;
-//                                                             else if 
(firstLineOffset() == FLOPLineSpacing)
-//                                                                     addAsce 
= style.lineSpacing() + offset;
-//                                                     }
                                                        maxYAsc = current.yPos 
- addAsce;
-                                               }
                                                else
                                                        maxYAsc = current.yPos 
- realAsce;
+                                               maxYAsc = qMax(maxYAsc, 0.0);
                                                maxYDesc = current.yPos + 
realDesc;
-
-                                               if (style.lineSpacingMode() == 
ParagraphStyle::AutomaticLineSpacing)
+                                               if (style.lineSpacingMode() != 
ParagraphStyle::AutomaticLineSpacing)
                                                {
-                                                       regionMinY = 
static_cast<int>(floor(maxYAsc));
-                                                       regionMaxY = 
static_cast<int>(floor(maxYDesc));
+                                                       maxYAsc = qMin(maxYAsc, 
qMax(0.0, current.yPos - asce));
+                                                       maxYDesc = current.yPos 
+ desc;
                                                }
-                                               else // #11727, #11628, etc.
-                                               {
-                                                       regionMinY = 
static_cast<int>(qMax(0.0, floor(current.yPos - (asce + offset))));
-                                                       regionMaxY = 
static_cast<int>(floor(current.yPos + desc));
-                                               }
+
+                                               regionMinY = 
static_cast<int>(floor(maxYAsc));
+                                               regionMaxY = 
static_cast<int>(floor(maxYDesc));
 
                                                
pt.moveTopLeft(QPoint(static_cast<int>(floor(current.xPos)), regionMinY));
                                                done = false;


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to