summaryrefslogtreecommitdiffstats
path: root/generic/ttk/ttkPanedwindow.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/ttk/ttkPanedwindow.c')
-rw-r--r--generic/ttk/ttkPanedwindow.c184
1 files changed, 96 insertions, 88 deletions
diff --git a/generic/ttk/ttkPanedwindow.c b/generic/ttk/ttkPanedwindow.c
index 85f0b26..fa0d5c8 100644
--- a/generic/ttk/ttkPanedwindow.c
+++ b/generic/ttk/ttkPanedwindow.c
@@ -29,7 +29,7 @@
* gives the same result as changing the size by X+Y pixels
* in one step).
*
- * The request size is initially set to the slave window's requested size.
+ * The request size is initially set to the content window's requested size.
* When the user drags a sash, each pane's request size is set to its
* actual size. This ensures that panes "stay put" on the next resize.
*
@@ -78,13 +78,13 @@ typedef struct {
static Tk_OptionSpec PanedOptionSpecs[] = {
{TK_OPTION_STRING_TABLE, "-orient", "orient", "Orient", "vertical",
Tk_Offset(Paned,paned.orientObj), Tk_Offset(Paned,paned.orient),
- 0,(void *)ttkOrientStrings,READONLY_OPTION|STYLE_CHANGED },
+ 0, (void *)ttkOrientStrings, READONLY_OPTION|STYLE_CHANGED },
{TK_OPTION_INT, "-width", "width", "Width", "0",
-1,Tk_Offset(Paned,paned.width),
- 0,0,GEOMETRY_CHANGED },
+ 0, 0, GEOMETRY_CHANGED },
{TK_OPTION_INT, "-height", "height", "Height", "0",
-1,Tk_Offset(Paned,paned.height),
- 0,0,GEOMETRY_CHANGED },
+ 0, 0, GEOMETRY_CHANGED },
WIDGET_TAKEFOCUS_FALSE,
WIDGET_INHERIT_OPTIONS(ttkCoreOptionSpecs)
@@ -108,21 +108,21 @@ static Tk_OptionSpec PaneOptionSpecs[] = {
/* CreatePane --
* Create a new pane record.
*/
-static Pane *CreatePane(Tcl_Interp *interp, Paned *pw, Tk_Window slaveWindow)
+static Pane *CreatePane(Tcl_Interp *interp, Paned *pw, Tk_Window window)
{
Tk_OptionTable optionTable = pw->paned.paneOptionTable;
void *record = ckalloc(sizeof(Pane));
- Pane *pane = record;
+ Pane *pane = (Pane *)record;
memset(record, 0, sizeof(Pane));
- if (Tk_InitOptions(interp, record, optionTable, slaveWindow) != TCL_OK) {
+ if (Tk_InitOptions(interp, record, optionTable, window) != TCL_OK) {
ckfree(record);
return NULL;
}
pane->reqSize
= pw->paned.orient == TTK_ORIENT_HORIZONTAL
- ? Tk_ReqWidth(slaveWindow) : Tk_ReqHeight(slaveWindow);
+ ? Tk_ReqWidth(window) : Tk_ReqHeight(window);
return pane;
}
@@ -141,7 +141,7 @@ static void DestroyPane(Paned *pw, Pane *pane)
* Set pane options.
*/
static int ConfigurePane(
- Tcl_Interp *interp, Paned *pw, Pane *pane, Tk_Window slaveWindow,
+ Tcl_Interp *interp, Paned *pw, Pane *pane, Tk_Window window,
int objc, Tcl_Obj *const objv[])
{
Ttk_Manager *mgr = pw->paned.mgr;
@@ -149,7 +149,7 @@ static int ConfigurePane(
int mask = 0;
if (Tk_SetOptions(interp, (void*)pane, pw->paned.paneOptionTable,
- objc, objv, slaveWindow, &savedOptions, &mask) != TCL_OK)
+ objc, objv, window, &savedOptions, &mask) != TCL_OK)
{
return TCL_ERROR;
}
@@ -189,14 +189,14 @@ error:
static int ShoveUp(Paned *pw, int i, int pos)
{
- Pane *pane = Ttk_ContentData(pw->paned.mgr, i);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, i);
int sashThickness = pw->paned.sashThickness;
if (i == 0) {
if (pos < 0)
pos = 0;
} else {
- Pane *prevPane = Ttk_ContentData(pw->paned.mgr, i-1);
+ Pane *prevPane = (Pane *)Ttk_ContentData(pw->paned.mgr, i-1);
if (pos < prevPane->sashPos + sashThickness)
pos = ShoveUp(pw, i-1, pos - sashThickness) + sashThickness;
}
@@ -209,13 +209,13 @@ static int ShoveUp(Paned *pw, int i, int pos)
*/
static int ShoveDown(Paned *pw, int i, int pos)
{
- Pane *pane = Ttk_ContentData(pw->paned.mgr,i);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr,i);
int sashThickness = pw->paned.sashThickness;
if (i == Ttk_NumberContent(pw->paned.mgr) - 1) {
pos = pane->sashPos; /* Sentinel value == container window size */
} else {
- Pane *nextPane = Ttk_ContentData(pw->paned.mgr,i+1);
+ Pane *nextPane = (Pane *)Ttk_ContentData(pw->paned.mgr,i+1);
if (pos + sashThickness > nextPane->sashPos)
pos = ShoveDown(pw, i+1, pos + sashThickness) - sashThickness;
}
@@ -230,7 +230,7 @@ static int ShoveDown(Paned *pw, int i, int pos)
*/
static int PanedSize(void *recordPtr, int *widthPtr, int *heightPtr)
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int nPanes = Ttk_NumberContent(pw->paned.mgr);
int nSashes = nPanes - 1;
int sashThickness = pw->paned.sashThickness;
@@ -239,21 +239,21 @@ static int PanedSize(void *recordPtr, int *widthPtr, int *heightPtr)
if (pw->paned.orient == TTK_ORIENT_HORIZONTAL) {
for (index = 0; index < nPanes; ++index) {
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
- Tk_Window slaveWindow = Ttk_ContentWindow(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
+ Tk_Window window = Ttk_ContentWindow(pw->paned.mgr, index);
- if (height < Tk_ReqHeight(slaveWindow))
- height = Tk_ReqHeight(slaveWindow);
+ if (height < Tk_ReqHeight(window))
+ height = Tk_ReqHeight(window);
width += pane->reqSize;
}
width += nSashes * sashThickness;
} else {
for (index = 0; index < nPanes; ++index) {
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
- Tk_Window slaveWindow = Ttk_ContentWindow(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
+ Tk_Window window = Ttk_ContentWindow(pw->paned.mgr, index);
- if (width < Tk_ReqWidth(slaveWindow))
- width = Tk_ReqWidth(slaveWindow);
+ if (width < Tk_ReqWidth(window))
+ width = Tk_ReqWidth(window);
height += pane->reqSize;
}
height += nSashes * sashThickness;
@@ -279,7 +279,7 @@ static void AdjustPanes(Paned *pw)
int index;
for (index = 0; index < Ttk_NumberContent(pw->paned.mgr); ++index) {
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
int size = pane->sashPos - pos;
pane->reqSize = size >= 0 ? size : 0;
pos = pane->sashPos + sashThickness;
@@ -317,7 +317,7 @@ static void PlaceSashes(Paned *pw, int width, int height)
/* Compute total required size and total available weight:
*/
for (i = 0; i < nPanes; ++i) {
- Pane *pane = Ttk_ContentData(mgr, i);
+ Pane *pane = (Pane *)Ttk_ContentData(mgr, i);
reqSize += pane->reqSize;
totalWeight += pane->weight * (pane->reqSize != 0);
}
@@ -341,7 +341,7 @@ static void PlaceSashes(Paned *pw, int width, int height)
*/
pos = 0;
for (i = 0; i < nPanes; ++i) {
- Pane *pane = Ttk_ContentData(mgr, i);
+ Pane *pane = (Pane *)Ttk_ContentData(mgr, i);
int weight = pane->weight * (pane->reqSize != 0);
int size = pane->reqSize + delta * weight;
@@ -365,7 +365,7 @@ static void PlaceSashes(Paned *pw, int width, int height)
}
/* PlacePanes --
- * Places slave panes based on sash positions.
+ * Places panes based on sash positions.
*/
static void PlacePanes(Paned *pw)
{
@@ -376,7 +376,7 @@ static void PlacePanes(Paned *pw)
int index;
for (index = 0; index < Ttk_NumberContent(pw->paned.mgr); ++index) {
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
int size = pane->sashPos - pos;
if (size > 0) {
@@ -399,61 +399,61 @@ static void PlacePanes(Paned *pw)
static void PanedPlaceContent(void *managerData)
{
- Paned *pw = managerData;
+ Paned *pw = (Paned *)managerData;
PlaceSashes(pw, Tk_Width(pw->core.tkwin), Tk_Height(pw->core.tkwin));
PlacePanes(pw);
}
static void PaneRemoved(void *managerData, int index)
{
- Paned *pw = managerData;
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
+ Paned *pw = (Paned *)managerData;
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
DestroyPane(pw, pane);
}
static int AddPane(
Tcl_Interp *interp, Paned *pw,
- int destIndex, Tk_Window slaveWindow,
+ int destIndex, Tk_Window window,
int objc, Tcl_Obj *const objv[])
{
Pane *pane;
- if (!Ttk_Maintainable(interp, slaveWindow, pw->core.tkwin)) {
+ if (!Ttk_Maintainable(interp, window, pw->core.tkwin)) {
return TCL_ERROR;
}
- if (Ttk_ContentIndex(pw->paned.mgr, slaveWindow) >= 0) {
+ if (Ttk_ContentIndex(pw->paned.mgr, window) >= 0) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "%s already added", Tk_PathName(slaveWindow)));
+ "%s already added", Tk_PathName(window)));
Tcl_SetErrorCode(interp, "TTK", "PANE", "PRESENT", NULL);
return TCL_ERROR;
}
- pane = CreatePane(interp, pw, slaveWindow);
+ pane = CreatePane(interp, pw, window);
if (!pane) {
return TCL_ERROR;
}
- if (ConfigurePane(interp, pw, pane, slaveWindow, objc, objv) != TCL_OK) {
+ if (ConfigurePane(interp, pw, pane, window, objc, objv) != TCL_OK) {
DestroyPane(pw, pane);
return TCL_ERROR;
}
- Ttk_InsertContent(pw->paned.mgr, destIndex, slaveWindow, pane);
+ Ttk_InsertContent(pw->paned.mgr, destIndex, window, pane);
return TCL_OK;
}
/* PaneRequest --
- * Only update pane request size if slave is currently unmapped.
- * Geometry requests from mapped slaves are not directly honored
+ * Only update pane request size if pane is currently unmapped.
+ * Geometry requests from mapped panes are not directly honored
* in order to avoid unexpected pane resizes (esp. while the
* user is dragging a sash [#1325286]).
*/
static int PaneRequest(void *managerData, int index, int width, int height)
{
- Paned *pw = managerData;
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
- Tk_Window slaveWindow = Ttk_ContentWindow(pw->paned.mgr, index);
+ Paned *pw = (Paned *)managerData;
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
+ Tk_Window window = Ttk_ContentWindow(pw->paned.mgr, index);
int horizontal = pw->paned.orient == TTK_ORIENT_HORIZONTAL;
- if (!Tk_IsMapped(slaveWindow)) {
+ if (!Tk_IsMapped(window)) {
pane->reqSize = horizontal ? width : height;
}
return 1;
@@ -483,7 +483,7 @@ static Ttk_ManagerSpec PanedManagerSpec = {
static const unsigned PanedEventMask = LeaveWindowMask;
static void PanedEventProc(ClientData clientData, XEvent *eventPtr)
{
- WidgetCore *corePtr = clientData;
+ WidgetCore *corePtr = (WidgetCore *)clientData;
if ( eventPtr->type == LeaveNotify
&& eventPtr->xcrossing.detail == NotifyInferior)
{
@@ -497,7 +497,7 @@ static void PanedEventProc(ClientData clientData, XEvent *eventPtr)
static void PanedInitialize(Tcl_Interp *interp, void *recordPtr)
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
Tk_CreateEventHandler(pw->core.tkwin,
PanedEventMask, PanedEventProc, recordPtr);
@@ -509,7 +509,7 @@ static void PanedInitialize(Tcl_Interp *interp, void *recordPtr)
static void PanedCleanup(void *recordPtr)
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
if (pw->paned.sashLayout)
Ttk_FreeLayout(pw->paned.sashLayout);
@@ -520,9 +520,12 @@ static void PanedCleanup(void *recordPtr)
/* Post-configuration hook.
*/
-static int PanedPostConfigure(Tcl_Interp *interp, void *clientData, int mask)
+static int PanedPostConfigure(
+ TCL_UNUSED(Tcl_Interp *),
+ void *clientData,
+ int mask)
{
- Paned *pw = clientData;
+ Paned *pw = (Paned *)clientData;
if (mask & GEOMETRY_CHANGED) {
/* User has changed -width or -height.
@@ -543,7 +546,7 @@ static int PanedPostConfigure(Tcl_Interp *interp, void *clientData, int mask)
static Ttk_Layout PanedGetLayout(
Tcl_Interp *interp, Ttk_Theme themePtr, void *recordPtr)
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
Ttk_Layout panedLayout = TtkWidgetGetLayout(interp, themePtr, recordPtr);
if (panedLayout) {
@@ -581,7 +584,7 @@ static Ttk_Layout PanedGetLayout(
*/
static Ttk_Layout SashLayout(Paned *pw, int index)
{
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
int thickness = pw->paned.sashThickness,
height = Tk_Height(pw->core.tkwin),
width = Tk_Width(pw->core.tkwin),
@@ -603,7 +606,7 @@ static void DrawSash(Paned *pw, int index, Drawable d)
static void PanedDisplay(void *recordPtr, Drawable d)
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int i, nSashes = Ttk_NumberContent(pw->paned.mgr) - 1;
TtkWidgetDisplay(recordPtr, d);
@@ -621,59 +624,59 @@ static void PanedDisplay(void *recordPtr, Drawable d)
static int PanedAddCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
- Tk_Window slaveWindow;
+ Paned *pw = (Paned *)recordPtr;
+ Tk_Window window;
if (objc < 3) {
Tcl_WrongNumArgs(interp, 2, objv, "window");
return TCL_ERROR;
}
- slaveWindow = Tk_NameToWindow(
+ window = Tk_NameToWindow(
interp, Tcl_GetString(objv[2]), pw->core.tkwin);
- if (!slaveWindow) {
+ if (!window) {
return TCL_ERROR;
}
- return AddPane(interp, pw, Ttk_NumberContent(pw->paned.mgr), slaveWindow,
+ return AddPane(interp, pw, Ttk_NumberContent(pw->paned.mgr), window,
objc - 3, objv + 3);
}
-/* $pw insert $index $slave ?-option value ...?
- * Insert new slave, or move existing one.
+/* $pw insert $index $window ?-option value ...?
+ * Insert new content window, or move existing one.
*/
static int PanedInsertCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int nContent = Ttk_NumberContent(pw->paned.mgr);
int srcIndex, destIndex;
- Tk_Window slaveWindow;
+ Tk_Window window;
if (objc < 4) {
Tcl_WrongNumArgs(interp, 2,objv, "index slave ?-option value ...?");
return TCL_ERROR;
}
- slaveWindow = Tk_NameToWindow(
+ window = Tk_NameToWindow(
interp, Tcl_GetString(objv[3]), pw->core.tkwin);
- if (!slaveWindow) {
+ if (!window) {
return TCL_ERROR;
}
if (!strcmp(Tcl_GetString(objv[2]), "end")) {
destIndex = Ttk_NumberContent(pw->paned.mgr);
} else if (TCL_OK != Ttk_GetContentIndexFromObj(
- interp,pw->paned.mgr,objv[2],&destIndex))
+ interp,pw->paned.mgr, objv[2], &destIndex))
{
return TCL_ERROR;
}
- srcIndex = Ttk_ContentIndex(pw->paned.mgr, slaveWindow);
- if (srcIndex < 0) { /* New slave: */
- return AddPane(interp, pw, destIndex, slaveWindow, objc-4, objv+4);
- } /* else -- move existing slave: */
+ srcIndex = Ttk_ContentIndex(pw->paned.mgr, window);
+ if (srcIndex < 0) { /* New content: */
+ return AddPane(interp, pw, destIndex, window, objc-4, objv+4);
+ } /* else -- move existing content: */
if (destIndex >= nContent)
destIndex = nContent - 1;
@@ -681,9 +684,9 @@ static int PanedInsertCommand(
return objc == 4 ? TCL_OK :
ConfigurePane(interp, pw,
- Ttk_ContentData(pw->paned.mgr, destIndex),
+ (Pane *)Ttk_ContentData(pw->paned.mgr, destIndex),
Ttk_ContentWindow(pw->paned.mgr, destIndex),
- objc-4,objv+4);
+ objc-4, objv+4);
}
/* $pw forget $pane
@@ -691,7 +694,7 @@ static int PanedInsertCommand(
static int PanedForgetCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int paneIndex;
if (objc != 3) {
@@ -718,7 +721,7 @@ static int PanedIdentifyCommand(
static const char *whatTable[] = { "element", "sash", NULL };
enum { IDENTIFY_ELEMENT, IDENTIFY_SASH };
int what = IDENTIFY_SASH;
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int sashThickness = pw->paned.sashThickness;
int nSashes = Ttk_NumberContent(pw->paned.mgr) - 1;
int x, y, pos;
@@ -739,7 +742,7 @@ static int PanedIdentifyCommand(
pos = pw->paned.orient == TTK_ORIENT_HORIZONTAL ? x : y;
for (index = 0; index < nSashes; ++index) {
- Pane *pane = Ttk_ContentData(pw->paned.mgr, index);
+ Pane *pane = (Pane *)Ttk_ContentData(pw->paned.mgr, index);
if (pane->sashPos <= pos && pos <= pane->sashPos + sashThickness) {
/* Found it. */
switch (what) {
@@ -769,9 +772,9 @@ static int PanedIdentifyCommand(
static int PanedPaneCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int paneIndex;
- Tk_Window slaveWindow;
+ Tk_Window window;
Pane *pane;
if (objc < 3) {
@@ -780,23 +783,23 @@ static int PanedPaneCommand(
}
if (TCL_OK != Ttk_GetContentIndexFromObj(
- interp,pw->paned.mgr,objv[2],&paneIndex))
+ interp,pw->paned.mgr, objv[2], &paneIndex))
{
return TCL_ERROR;
}
- pane = Ttk_ContentData(pw->paned.mgr, paneIndex);
- slaveWindow = Ttk_ContentWindow(pw->paned.mgr, paneIndex);
+ pane = (Pane *)Ttk_ContentData(pw->paned.mgr, paneIndex);
+ window = Ttk_ContentWindow(pw->paned.mgr, paneIndex);
switch (objc) {
case 3:
return TtkEnumerateOptions(interp, pane, PaneOptionSpecs,
- pw->paned.paneOptionTable, slaveWindow);
+ pw->paned.paneOptionTable, window);
case 4:
return TtkGetOptionValue(interp, pane, objv[3],
- pw->paned.paneOptionTable, slaveWindow);
+ pw->paned.paneOptionTable, window);
default:
- return ConfigurePane(interp, pw, pane, slaveWindow, objc-3,objv+3);
+ return ConfigurePane(interp, pw, pane, window, objc-3,objv+3);
}
}
@@ -806,7 +809,7 @@ static int PanedPaneCommand(
static int PanedPanesCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
Ttk_Manager *mgr = pw->paned.mgr;
Tcl_Obj *panes;
int i;
@@ -833,7 +836,7 @@ static int PanedPanesCommand(
static int PanedSashposCommand(
void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
{
- Paned *pw = recordPtr;
+ Paned *pw = (Paned *)recordPtr;
int sashIndex, position = -1;
Pane *pane;
@@ -851,7 +854,7 @@ static int PanedSashposCommand(
return TCL_ERROR;
}
- pane = Ttk_ContentData(pw->paned.mgr, sashIndex);
+ pane = (Pane *)Ttk_ContentData(pw->paned.mgr, sashIndex);
if (objc == 3) {
Tcl_SetObjResult(interp, Tcl_NewIntObj(pane->sashPos));
@@ -924,15 +927,20 @@ typedef struct {
static Ttk_ElementOptionSpec SashElementOptions[] = {
{ "-sashthickness", TK_OPTION_INT,
Tk_Offset(SashElement,thicknessObj), "5" },
- { NULL, 0, 0, NULL }
+ { NULL, TK_OPTION_BOOLEAN, 0, NULL }
};
static void SashElementSize(
- void *clientData, void *elementRecord, Tk_Window tkwin,
- int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
+ TCL_UNUSED(void *),
+ void *elementRecord,
+ TCL_UNUSED(Tk_Window),
+ int *widthPtr,
+ int *heightPtr,
+ TCL_UNUSED(Ttk_Padding *))
{
- SashElement *sash = elementRecord;
+ SashElement *sash = (SashElement *)elementRecord;
int thickness = DEFAULT_SASH_THICKNESS;
+
Tcl_GetIntFromObj(NULL, sash->thicknessObj, &thickness);
*widthPtr = *heightPtr = thickness;
}