*** tkTextDisp.c.org Sun Jun 4 17:05:17 2000 --- tkTextDisp.c Sun Jun 4 17:19:21 2000 *************** *** 4833,4839 **** desired = NextTabStop(textPtr->tkfont, x, 0); goto update; } ! if (index < tabArrayPtr->numTabs) { alignment = tabArrayPtr->tabs[index].alignment; tabX = tabArrayPtr->tabs[index].location; --- 4833,4839 ---- desired = NextTabStop(textPtr->tkfont, x, 0); goto update; } ! #if 0 if (index < tabArrayPtr->numTabs) { alignment = tabArrayPtr->tabs[index].alignment; tabX = tabArrayPtr->tabs[index].location; *************** *** 4848,4857 **** } else { prev = 0; } alignment = tabArrayPtr->tabs[tabArrayPtr->numTabs-1].alignment; ! tabX = tabArrayPtr->tabs[tabArrayPtr->numTabs-1].location ! + (index + 1 - tabArrayPtr->numTabs) ! * (tabArrayPtr->tabs[tabArrayPtr->numTabs-1].location - prev); } if (alignment == LEFT) { --- 4848,4879 ---- } else { prev = 0; } + #endif + /* PWQ: NEW TABBING THAT WORKS PROPERLY FUCK SCRIPTICS*/ + if (index < tabArrayPtr->numTabs) { + do { + alignment = tabArrayPtr->tabs[index].alignment; + tabX = tabArrayPtr->tabs[index].location; + if( index++ >= tabArrayPtr->numTabs ) goto extrap; + } while( tabX <= x ); + } else { + /* + * Ran out of tab stops; compute a tab position by extrapolating + * from the last two tab positions. + */ + /* Jump to here is X is already past the first tab stop */ + extrap: + if (tabArrayPtr->numTabs > 1) { + prev = tabArrayPtr->tabs[tabArrayPtr->numTabs-2].location; + } else { + prev = 0; + } alignment = tabArrayPtr->tabs[tabArrayPtr->numTabs-1].alignment; ! tabX = tabArrayPtr->tabs[tabArrayPtr->numTabs-1].location; ! delta = (tabArrayPtr->tabs[tabArrayPtr->numTabs-1].location - prev); ! do { ! tabX += delta; ! } while (tabX <= x); } if (alignment == LEFT) { *************** *** 5192,5194 **** --- 5214,5217 ---- *nextXPtr = curX; return start - source; } +