Import Tk 8.6.10

This commit is contained in:
Steve Dower
2020-09-24 22:55:34 +01:00
parent 5ba5cbc9af
commit 42c69189d9
365 changed files with 24323 additions and 12832 deletions

View File

@@ -81,8 +81,9 @@ static Tk_OptionSpec BaseOptionSpecs[] =
* Compound base/image options
*/
{TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound",
"none", Tk_Offset(Base,base.compoundObj), -1,
0,(ClientData)ttkCompoundStrings,GEOMETRY_CHANGED },
NULL, Tk_Offset(Base,base.compoundObj), -1,
TK_OPTION_NULL_OK,(ClientData)ttkCompoundStrings,
GEOMETRY_CHANGED },
{TK_OPTION_STRING, "-padding", "padding", "Pad",
NULL, Tk_Offset(Base,base.paddingObj), -1,
TK_OPTION_NULL_OK,0,GEOMETRY_CHANGED},

View File

@@ -5,9 +5,7 @@
*
*/
#include <tk.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "tkInt.h"
#include "ttkTheme.h"
#define DEFAULT_BORDERWIDTH "2"

View File

@@ -4,12 +4,7 @@
* Tk alternate theme, intended to match the MSUE and Gtk's (old) default theme
*/
#include <math.h>
#include <string.h>
#include <tkInt.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "tkInt.h"
#include "ttkTheme.h"
#if defined(_WIN32)
@@ -18,6 +13,10 @@ static const int WIN32_XDRAWLINE_HACK = 1;
static const int WIN32_XDRAWLINE_HACK = 0;
#endif
#if defined(MAC_OSX_TK)
#define IGNORES_VISUAL
#endif
#define BORDERWIDTH 2
#define SCROLLBAR_WIDTH 14
#define MIN_THUMB_SIZE 8
@@ -510,7 +509,7 @@ static void IndicatorElementDraw(
XGCValues gcValues;
GC copyGC;
unsigned long imgColors[8];
XImage *img;
XImage *img = NULL;
Ttk_GetPaddingFromObj(NULL, tkwin, indicator->marginObj, &padding);
b = Ttk_PadBox(b, padding);
@@ -550,15 +549,48 @@ static void IndicatorElementDraw(
/*
* Create a scratch buffer to store the image:
*/
img = XGetImage(display,d, 0, 0,
(unsigned int)spec->width, (unsigned int)spec->height,
AllPlanes, ZPixmap);
if (img == NULL)
return;
#if defined(IGNORES_VISUAL)
/*
* Create the image, painting it into an XImage one pixel at a time.
* Platforms which ignore the VisualInfo can use XCreateImage to get the
* scratch image. This is essential on macOS, where it is not safe to call
* XGetImage in a display procedure.
*/
img = XCreateImage(display, NULL, 32, ZPixmap, 0, NULL,
(unsigned int)spec->width, (unsigned int)spec->height,
0, 0);
#else
/*
* This trick allows creating the scratch XImage without having to
* construct a VisualInfo.
*/
img = XGetImage(display, d, 0, 0,
(unsigned int)spec->width, (unsigned int)spec->height,
AllPlanes, ZPixmap);
#endif
if (img == NULL) {
return;
}
#if defined(IGNORES_VISUAL)
img->data = ckalloc(img->bytes_per_line * img->height);
if (img->data == NULL) {
XDestroyImage(img);
return;
}
#endif
/*
* Create the image, painting it into the XImage one pixel at a time.
*/
index = Ttk_StateTableLookup(spec->map, state);
for (iy=0 ; iy<spec->height ; iy++) {
for (ix=0 ; ix<spec->width ; ix++) {
@@ -568,18 +600,31 @@ static void IndicatorElementDraw(
}
/*
* Copy onto our target drawable surface.
* Copy the image onto our target drawable surface.
*/
memset(&gcValues, 0, sizeof(gcValues));
copyGC = Tk_GetGC(tkwin, 0, &gcValues);
TkPutImage(NULL, 0, display, d, copyGC, img, 0, 0, b.x, b.y,
spec->width, spec->height);
/*
* Tidy up.
*/
Tk_FreeGC(display, copyGC);
/*
* Protect against the possibility that some future platform might
* not use the Tk memory manager in its implementation of XDestroyImage,
* even though that would be an extremely strange thing to do.
*/
#if defined(IGNORES_VISUAL)
ckfree(img->data);
img->data = NULL;
#endif
XDestroyImage(img);
}

View File

@@ -8,11 +8,7 @@
* Copyright (c) 2004 Joe English
*/
#include <string.h>
#include <stdio.h>
#include <tkInt.h>
#include <X11/Xatom.h>
#include "tkInt.h"
#include "ttkTheme.h"
#include "ttkWidget.h"
@@ -333,7 +329,7 @@ EntryFetchSelection(
ClientData clientData, int offset, char *buffer, int maxBytes)
{
Entry *entryPtr = (Entry *) clientData;
size_t byteCount;
int byteCount;
const char *string;
const char *selStart, *selEnd;
@@ -347,7 +343,7 @@ EntryFetchSelection(
selEnd = Tcl_UtfAtIndex(selStart,
entryPtr->entry.selectLast - entryPtr->entry.selectFirst);
byteCount = selEnd - selStart - offset;
if (byteCount > (size_t)maxBytes) {
if (byteCount > maxBytes) {
/* @@@POSSIBLE BUG: Can transfer partial UTF-8 sequences. Is this OK? */
byteCount = maxBytes;
}
@@ -979,7 +975,7 @@ static int EntryConfigure(Tcl_Interp *interp, void *recordPtr, int mask)
Ttk_TraceHandle *vt = 0;
if (mask & TEXTVAR_CHANGED) {
if (textVarName && *Tcl_GetString(textVarName)) {
if (textVarName && *Tcl_GetString(textVarName) != '\0') {
vt = Ttk_TraceVariable(interp,
textVarName,EntryTextVariableTrace,entryPtr);
if (!vt) return TCL_ERROR;
@@ -1155,7 +1151,7 @@ static GC EntryGetGC(Entry *entryPtr, Tcl_Obj *colorObj, TkRegion clip)
mask |= GCForeground;
}
gc = Tk_GetGC(entryPtr->core.tkwin, mask, &gcValues);
if (clip != None) {
if (clip != NULL) {
TkSetRegion(Tk_Display(entryPtr->core.tkwin), gc, clip);
}
return gc;
@@ -1265,7 +1261,7 @@ static void EntryDisplay(void *clientData, Drawable d)
cursorX = field.x + field.width - cursorWidth;
}
gc = EntryGetGC(entryPtr, es.insertColorObj, None);
gc = EntryGetGC(entryPtr, es.insertColorObj, NULL);
XFillRectangle(Tk_Display(tkwin), d, gc,
cursorX, cursorY, cursorWidth, cursorHeight);
Tk_FreeGC(Tk_Display(tkwin), gc);
@@ -1297,7 +1293,7 @@ static void EntryDisplay(void *clientData, Drawable d)
* it from the Xft guts (if they're being used).
*/
#ifdef HAVE_XFT
TkUnixSetXftClipRegion(None);
TkUnixSetXftClipRegion(NULL);
#endif
TkDestroyRegion(clipRegion);
}
@@ -1366,6 +1362,7 @@ EntryIndex(
*indexPtr = Tk_PointToChar(entryPtr->entry.textLayout,
x - entryPtr->entry.layoutX, 0);
TtkUpdateScrollInfo(entryPtr->entry.xscrollHandle);
if (*indexPtr < entryPtr->entry.xscroll.first) {
*indexPtr = entryPtr->entry.xscroll.first;
}
@@ -1660,7 +1657,7 @@ static int EntryXViewCommand(
if (EntryIndex(interp, entryPtr, objv[2], &newFirst) != TCL_OK) {
return TCL_ERROR;
}
TtkScrollTo(entryPtr->entry.xscrollHandle, newFirst);
TtkScrollTo(entryPtr->entry.xscrollHandle, newFirst, 1);
return TCL_OK;
}
return TtkScrollviewCommand(interp, objc, objv, entryPtr->entry.xscrollHandle);
@@ -1703,6 +1700,16 @@ static WidgetSpec EntryWidgetSpec = {
EntryDisplay /* displayProc */
};
/*------------------------------------------------------------------------
* Named indices for the combobox "current" command
*/
static const char *const comboboxCurrentIndexNames[] = {
"end", NULL
};
enum comboboxCurrentIndices {
INDEX_END
};
/*------------------------------------------------------------------------
* +++ Combobox widget record.
*/
@@ -1804,15 +1811,42 @@ static int ComboboxCurrentCommand(
Tcl_SetObjResult(interp, Tcl_NewIntObj(currentIndex));
return TCL_OK;
} else if (objc == 3) {
if (Tcl_GetIntFromObj(interp, objv[2], &currentIndex) != TCL_OK) {
return TCL_ERROR;
}
if (currentIndex < 0 || currentIndex >= nValues) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"Index %s out of range", Tcl_GetString(objv[2])));
Tcl_SetErrorCode(interp, "TTK", "COMBOBOX", "IDX_RANGE", NULL);
return TCL_ERROR;
}
int result, index;
result = Tcl_GetIndexFromObj(NULL, objv[2], comboboxCurrentIndexNames,
"", 0, &index);
if (result == TCL_OK) {
/*
* The index is one of the named indices.
*/
switch (index) {
case INDEX_END:
/* "end" index */
currentIndex = nValues - 1;
break;
}
} else {
/*
* The index should be just an integer.
*/
if (Tcl_GetIntFromObj(NULL, objv[2], &currentIndex) != TCL_OK) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"Incorrect index %s", Tcl_GetString(objv[2])));
Tcl_SetErrorCode(interp, "TTK", "COMBOBOX", "IDX_VALUE", NULL);
return TCL_ERROR;
}
if (currentIndex < 0 || currentIndex >= nValues) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"Index %s out of range", Tcl_GetString(objv[2])));
Tcl_SetErrorCode(interp, "TTK", "COMBOBOX", "IDX_RANGE", NULL);
return TCL_ERROR;
}
}
cbPtr->combobox.currentIndex = currentIndex;

View File

@@ -440,8 +440,10 @@ static void LabelframeDoLayout(void *recordPtr)
*/
switch (LabelAnchorSide(style.labelAnchor)) {
case TTK_SIDE_LEFT: borderParcel.x -= lw / 2;
/* FALLTHRU */
case TTK_SIDE_RIGHT: borderParcel.width += lw/2; break;
case TTK_SIDE_TOP: borderParcel.y -= lh / 2;
/* FALLTHRU */
case TTK_SIDE_BOTTOM: borderParcel.height += lh / 2; break;
}
}

View File

@@ -6,8 +6,7 @@
*
*/
#include <tcl.h>
#include <tkInt.h>
#include "tkInt.h"
#include "ttkTheme.h"
/*----------------------------------------------------------------------
@@ -183,7 +182,7 @@ static void TextDraw(TextElement *text, Tk_Window tkwin, Drawable d, Ttk_Box b)
if (clipRegion != NULL) {
#ifdef HAVE_XFT
TkUnixSetXftClipRegion(None);
TkUnixSetXftClipRegion(NULL);
#endif
XSetClipMask(Tk_Display(tkwin), gc1, None);
XSetClipMask(Tk_Display(tkwin), gc2, None);

View File

@@ -7,7 +7,7 @@
*/
#include <string.h>
#include <tk.h>
#include "tkInt.h"
#include "ttkThemeInt.h"
#define MAX(a,b) (a > b ? a : b)

View File

@@ -69,8 +69,8 @@ static Tk_OptionSpec TabOptionSpecs[] =
{TK_OPTION_STRING, "-image", "image", "Image", NULL/*default*/,
Tk_Offset(Tab,imageObj), -1, TK_OPTION_NULL_OK,0,GEOMETRY_CHANGED },
{TK_OPTION_STRING_TABLE, "-compound", "compound", "Compound",
"none", Tk_Offset(Tab,compoundObj), -1,
0,(ClientData)ttkCompoundStrings,GEOMETRY_CHANGED },
NULL, Tk_Offset(Tab,compoundObj), -1,
TK_OPTION_NULL_OK,(ClientData)ttkCompoundStrings,GEOMETRY_CHANGED },
{TK_OPTION_INT, "-underline", "underline", "Underline", "-1",
Tk_Offset(Tab,underlineObj), -1, 0,0,GEOMETRY_CHANGED },
{TK_OPTION_END, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0 }

View File

@@ -34,7 +34,7 @@
* TtkScrollbarUpdateRequired, which will invoke step (5) (@@@ Fix this)
*/
#include <tkInt.h>
#include "tkInt.h"
#include "ttkTheme.h"
#include "ttkWidget.h"
@@ -181,6 +181,19 @@ void TtkScrollbarUpdateRequired(ScrollHandle h)
h->flags |= SCROLL_UPDATE_REQUIRED;
}
/* TtkUpdateScrollInfo --
* Call the layoutProc to update the scroll info first, last, and total.
* Do it only if needed, that is when a redisplay is pending (which
* indicates scroll info are possibly out of date).
*/
void TtkUpdateScrollInfo(ScrollHandle h)
{
if (h->corePtr->flags & REDISPLAY_PENDING) {
h->corePtr->widgetSpec->layoutProc(h->corePtr);
}
}
/* TtkScrollviewCommand --
* Widget [xy]view command implementation.
*
@@ -193,7 +206,10 @@ int TtkScrollviewCommand(
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], ScrollHandle h)
{
Scrollable *s = h->scrollPtr;
int newFirst = s->first;
int newFirst;
TtkUpdateScrollInfo(h);
newFirst = s->first;
if (objc == 2) {
Tcl_Obj *result[2];
@@ -226,15 +242,19 @@ int TtkScrollviewCommand(
}
}
TtkScrollTo(h, newFirst);
TtkScrollTo(h, newFirst, 0);
return TCL_OK;
}
void TtkScrollTo(ScrollHandle h, int newFirst)
void TtkScrollTo(ScrollHandle h, int newFirst, int updateScrollInfo)
{
Scrollable *s = h->scrollPtr;
if (updateScrollInfo) {
TtkUpdateScrollInfo(h);
}
if (newFirst >= s->total)
newFirst = s->total - 1;
if (newFirst > s->first && s->last >= s->total) /* don't scroll past end */

View File

@@ -131,7 +131,7 @@ static void StateSpecUpdateString(Tcl_Obj *objPtr)
unsigned int mask = onbits | offbits;
Tcl_DString result;
int i;
size_t len;
int len;
Tcl_DStringInit(&result);
@@ -147,14 +147,14 @@ static void StateSpecUpdateString(Tcl_Obj *objPtr)
len = Tcl_DStringLength(&result);
if (len) {
/* 'len' includes extra trailing ' ' */
objPtr->bytes = Tcl_Alloc(len);
objPtr->bytes = ckalloc(len);
objPtr->length = len-1;
strncpy(objPtr->bytes, Tcl_DStringValue(&result), len-1);
objPtr->bytes[len-1] = '\0';
} else {
/* empty string */
objPtr->length = 0;
objPtr->bytes = Tcl_Alloc(1);
objPtr->bytes = ckalloc(1);
*objPtr->bytes = '\0';
}

View File

@@ -10,14 +10,18 @@
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include <stdlib.h>
#include <string.h>
#include <tk.h>
#include <tkInt.h>
#include "tkInt.h"
#include "ttkThemeInt.h"
#define PKG_ASSOC_KEY "Ttk"
#ifdef MAC_OSX_TK
extern void TkMacOSXFlushWindows(void);
#define UPDATE_WINDOWS() TkMacOSXFlushWindows()
#else
#define UPDATE_WINDOWS()
#endif
/*------------------------------------------------------------------------
* +++ Styles.
*
@@ -513,6 +517,7 @@ static void ThemeChangedProc(ClientData clientData)
Tcl_BackgroundException(pkgPtr->interp, code);
}
pkgPtr->themeChangePending = 0;
UPDATE_WINDOWS();
}
/*

View File

@@ -29,9 +29,13 @@ extern "C" {
* +++ Defaults for element option specifications.
*/
#define DEFAULT_FONT "TkDefaultFont"
#ifdef MAC_OSX_TK
#define DEFAULT_BACKGROUND "systemTextBackgroundColor"
#define DEFAULT_FOREGROUND "systemTextColor"
#else
#define DEFAULT_BACKGROUND "#d9d9d9"
#define DEFAULT_FOREGROUND "black"
#endif
/*------------------------------------------------------------------------
* +++ Widget states.
* Keep in sync with stateNames[] in tkstate.c.

View File

@@ -26,26 +26,15 @@ static char *
VarTraceProc(
ClientData clientData, /* Widget record pointer */
Tcl_Interp *interp, /* Interpreter containing variable. */
const char *name1, /* Name of variable. */
const char *name2, /* Second part of variable name. */
const char *name1, /* (unused) */
const char *name2, /* (unused) */
int flags) /* Information about what happened. */
{
Ttk_TraceHandle *tracePtr = clientData;
const char *name, *value;
Tcl_Obj *valuePtr;
if (flags & TCL_INTERP_DESTROYED) {
return NULL;
}
/*
* See ticket [5d991b82].
*/
if (tracePtr->varnameObj == NULL) {
Tcl_UntraceVar2(interp, name1, name2,
TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
VarTraceProc, clientData);
if (Tcl_InterpDeleted(interp)) {
return NULL;
}

View File

@@ -6,7 +6,7 @@
#include <string.h>
#include <stdio.h>
#include <tk.h>
#include "tkInt.h"
#include "ttkTheme.h"
#include "ttkWidget.h"
@@ -282,7 +282,7 @@ static Tk_OptionSpec ColumnOptionSpecs[] = {
0,0,0 },
{TK_OPTION_BOOLEAN, "-stretch", "stretch", "Stretch",
"1", -1, Tk_Offset(TreeColumn,stretch),
0,0,0 },
0,0,GEOMETRY_CHANGED },
{TK_OPTION_ANCHOR, "-anchor", "anchor", "Anchor",
"w", Tk_Offset(TreeColumn,anchorObj), -1, /* <<NOTE-ANCHOR>> */
0,0,0 },
@@ -923,7 +923,7 @@ static void DragColumn(Treeview *tv, int i, int delta)
static TreeItem *IdentifyItem(Treeview *tv, int y); /*forward*/
static const unsigned int TreeviewBindEventMask =
static const unsigned long TreeviewBindEventMask =
KeyPressMask|KeyReleaseMask
| ButtonPressMask|ButtonReleaseMask
| PointerMotionMask|ButtonMotionMask
@@ -1066,7 +1066,7 @@ static void TreeviewCleanup(void *recordPtr)
TreeviewFreeColumns(tv);
if (tv->tree.displayColumns)
Tcl_Free((ClientData)tv->tree.displayColumns);
ckfree((ClientData)tv->tree.displayColumns);
foreachHashEntry(&tv->tree.items, FreeItemCB);
Tcl_DeleteHashTable(&tv->tree.items);
@@ -1232,13 +1232,13 @@ static int ConfigureColumn(
if (mask & GEOMETRY_CHANGED) {
if (!Tk_IsMapped(tv->core.tkwin)) {
TtkResizeWidget(&tv->core);
}
RecomputeSlack(tv);
} else {
RecomputeSlack(tv);
ResizeColumns(tv, TreeWidth(tv));
}
}
TtkRedisplayWidget(&tv->core);
/* ASSERT: SLACKINVARIANT */
Tk_FreeSavedOptions(&savedOptions);
return TCL_OK;
@@ -1615,13 +1615,10 @@ static void TreeviewDoLayout(void *clientData)
Treeview *tv = clientData;
int visibleRows;
/* ASSERT: SLACKINVARIANT */
Ttk_PlaceLayout(tv->core.layout,tv->core.state,Ttk_WinBox(tv->core.tkwin));
tv->tree.treeArea = Ttk_ClientRegion(tv->core.layout, "treearea");
ResizeColumns(tv, tv->tree.treeArea.width);
/* ASSERT: SLACKINVARIANT */
TtkScrolled(tv->tree.xscrollHandle,
tv->tree.xscroll.first,
@@ -2233,7 +2230,9 @@ static int TreeviewHorribleIdentify(
Ttk_Element element;
BoundingBox(tv, item, NULL, &itemBox);
PrepareItem(tv, item, &displayItem); /*@@@ FIX: -text, etc*/
PrepareItem(tv, item, &displayItem);
if (item->textObj) { displayItem.textObj = item->textObj; }
if (item->imageObj) { displayItem.imageObj = item->imageObj; }
Ttk_RebindSublayout(layout, &displayItem);
Ttk_PlaceLayout(layout, ItemState(tv,item), itemBox);
element = Ttk_IdentifyElement(layout, x, y);
@@ -2345,7 +2344,9 @@ static int TreeviewIdentifyCommand(
return TCL_OK;
}
PrepareItem(tv, item, &displayItem); /*@@@ FIX: fill in -text,etc */
PrepareItem(tv, item, &displayItem);
if (item->textObj) { displayItem.textObj = item->textObj; }
if (item->imageObj) { displayItem.imageObj = item->imageObj; }
Ttk_RebindSublayout(layout, &displayItem);
Ttk_PlaceLayout(layout, ItemState(tv,item), bbox);
element = Ttk_IdentifyElement(layout, x, y);
@@ -2680,7 +2681,7 @@ static int TreeviewDeleteCommand(
{
Treeview *tv = recordPtr;
TreeItem **items, *delq;
int i;
int i, selItemDeleted = 0;
if (objc != 3) {
Tcl_WrongNumArgs(interp, 2, objv, "items");
@@ -2707,6 +2708,9 @@ static int TreeviewDeleteCommand(
*/
delq = 0;
for (i=0; items[i]; ++i) {
if (items[i]->state & TTK_STATE_SELECTED) {
selItemDeleted = 1;
}
delq = DeleteItems(items[i], delq);
}
@@ -2723,6 +2727,9 @@ static int TreeviewDeleteCommand(
}
ckfree(items);
if (selItemDeleted) {
TtkSendVirtualEvent(tv->core.tkwin, "TreeviewSelect");
}
TtkRedisplayWidget(&tv->core);
return TCL_OK;
}
@@ -2841,10 +2848,10 @@ static int TreeviewSeeCommand(
*/
rowNumber = RowNumber(tv, item);
if (rowNumber < tv->tree.yscroll.first) {
TtkScrollTo(tv->tree.yscrollHandle, rowNumber);
TtkScrollTo(tv->tree.yscrollHandle, rowNumber, 1);
} else if (rowNumber >= tv->tree.yscroll.last) {
TtkScrollTo(tv->tree.yscrollHandle,
tv->tree.yscroll.first + (1+rowNumber - tv->tree.yscroll.last));
tv->tree.yscroll.first + (1+rowNumber - tv->tree.yscroll.last), 1);
}
return TCL_OK;
@@ -2882,7 +2889,6 @@ static int TreeviewDragCommand(
int right = left + c->width;
if (c == column) {
DragColumn(tv, i, newx - right);
/* ASSERT: SLACKINVARIANT */
TtkRedisplayWidget(&tv->core);
return TCL_OK;
}
@@ -2895,6 +2901,20 @@ static int TreeviewDragCommand(
return TCL_ERROR;
}
static int TreeviewDropCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
Treeview *tv = recordPtr;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "drop");
return TCL_ERROR;
}
ResizeColumns(tv, TreeWidth(tv));
TtkRedisplayWidget(&tv->core);
return TCL_OK;
}
/*------------------------------------------------------------------------
* +++ Widget commands -- focus and selection
*/
@@ -3244,6 +3264,7 @@ static const Ttk_Ensemble TreeviewCommands[] = {
{ "delete", TreeviewDeleteCommand,0 },
{ "detach", TreeviewDetachCommand,0 },
{ "drag", TreeviewDragCommand,0 },
{ "drop", TreeviewDropCommand,0 },
{ "exists", TreeviewExistsCommand,0 },
{ "focus", TreeviewFocusCommand,0 },
{ "heading", TreeviewHeadingCommand,0 },

View File

@@ -5,7 +5,7 @@
*/
#include <string.h>
#include <tk.h>
#include "tkInt.h"
#include "ttkTheme.h"
#include "ttkWidget.h"

View File

@@ -195,7 +195,8 @@ MODULE_SCOPE void TtkFreeScrollHandle(ScrollHandle);
MODULE_SCOPE int TtkScrollviewCommand(
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], ScrollHandle);
MODULE_SCOPE void TtkScrollTo(ScrollHandle, int newFirst);
MODULE_SCOPE void TtkUpdateScrollInfo(ScrollHandle h);
MODULE_SCOPE void TtkScrollTo(ScrollHandle, int newFirst, int updateScrollInfo);
MODULE_SCOPE void TtkScrolled(ScrollHandle, int first, int last, int total);
MODULE_SCOPE void TtkScrollbarUpdateRequired(ScrollHandle);