Import Tk 8.6.11
This commit is contained in:
@@ -4,8 +4,7 @@
|
||||
* ttk::frame and ttk::labelframe widgets.
|
||||
*/
|
||||
|
||||
#include <tk.h>
|
||||
|
||||
#include "tkInt.h"
|
||||
#include "ttkTheme.h"
|
||||
#include "ttkWidget.h"
|
||||
#include "ttkManager.h"
|
||||
@@ -89,9 +88,12 @@ static Ttk_Padding FrameMargins(Frame *framePtr)
|
||||
* The frame doesn't request a size of its own by default,
|
||||
* but it does have an internal border. See also <<NOTE-SIZE>>
|
||||
*/
|
||||
static int FrameSize(void *recordPtr, int *widthPtr, int *heightPtr)
|
||||
static int FrameSize(
|
||||
void *recordPtr,
|
||||
TCL_UNUSED(int *),
|
||||
TCL_UNUSED(int *))
|
||||
{
|
||||
Frame *framePtr = recordPtr;
|
||||
Frame *framePtr = (Frame *)recordPtr;
|
||||
Ttk_SetMargins(framePtr->core.tkwin, FrameMargins(framePtr));
|
||||
return 0;
|
||||
}
|
||||
@@ -112,7 +114,7 @@ static int FrameSize(void *recordPtr, int *widthPtr, int *heightPtr)
|
||||
|
||||
static int FrameConfigure(Tcl_Interp *interp, void *recordPtr, int mask)
|
||||
{
|
||||
Frame *framePtr = recordPtr;
|
||||
Frame *framePtr = (Frame *)recordPtr;
|
||||
int width, height;
|
||||
|
||||
/*
|
||||
@@ -338,9 +340,12 @@ LabelframeLabelSize(Labelframe *lframePtr, int *widthPtr, int *heightPtr)
|
||||
* Like the frame, this doesn't request a size of its own
|
||||
* but it does have internal padding and a minimum size.
|
||||
*/
|
||||
static int LabelframeSize(void *recordPtr, int *widthPtr, int *heightPtr)
|
||||
static int LabelframeSize(
|
||||
void *recordPtr,
|
||||
TCL_UNUSED(int *),
|
||||
TCL_UNUSED(int *))
|
||||
{
|
||||
Labelframe *lframePtr = recordPtr;
|
||||
Labelframe *lframePtr = (Labelframe *)recordPtr;
|
||||
WidgetCore *corePtr = &lframePtr->core;
|
||||
Ttk_Padding margins;
|
||||
LabelframeStyle style;
|
||||
@@ -385,7 +390,7 @@ static int LabelframeSize(void *recordPtr, int *widthPtr, int *heightPtr)
|
||||
static Ttk_Layout LabelframeGetLayout(
|
||||
Tcl_Interp *interp, Ttk_Theme theme, void *recordPtr)
|
||||
{
|
||||
Labelframe *lf = recordPtr;
|
||||
Labelframe *lf = (Labelframe *)recordPtr;
|
||||
Ttk_Layout frameLayout = TtkWidgetGetLayout(interp, theme, recordPtr);
|
||||
Ttk_Layout labelLayout;
|
||||
|
||||
@@ -416,7 +421,7 @@ static Ttk_Layout LabelframeGetLayout(
|
||||
|
||||
static void LabelframeDoLayout(void *recordPtr)
|
||||
{
|
||||
Labelframe *lframePtr = recordPtr;
|
||||
Labelframe *lframePtr = (Labelframe *)recordPtr;
|
||||
WidgetCore *corePtr = &lframePtr->core;
|
||||
int lw, lh; /* Label width and height */
|
||||
LabelframeStyle style;
|
||||
@@ -456,13 +461,13 @@ static void LabelframeDoLayout(void *recordPtr)
|
||||
Ttk_PlaceLayout(
|
||||
lframePtr->label.labelLayout, corePtr->state, labelParcel);
|
||||
}
|
||||
/* labelWidget placed in LabelframePlaceSlaves GM hook */
|
||||
/* labelWidget placed in LabelframePlaceContent GM hook */
|
||||
lframePtr->label.labelParcel = labelParcel;
|
||||
}
|
||||
|
||||
static void LabelframeDisplay(void *recordPtr, Drawable d)
|
||||
{
|
||||
Labelframe *lframePtr = recordPtr;
|
||||
Labelframe *lframePtr = (Labelframe *)recordPtr;
|
||||
Ttk_DrawLayout(lframePtr->core.layout, lframePtr->core.state, d);
|
||||
if (lframePtr->label.labelLayout) {
|
||||
Ttk_DrawLayout(lframePtr->label.labelLayout, lframePtr->core.state, d);
|
||||
@@ -472,23 +477,27 @@ static void LabelframeDisplay(void *recordPtr, Drawable d)
|
||||
/* +++ Labelframe geometry manager hooks.
|
||||
*/
|
||||
|
||||
/* LabelframePlaceSlaves --
|
||||
/* LabelframePlaceContent --
|
||||
* Sets the position and size of the labelwidget.
|
||||
*/
|
||||
static void LabelframePlaceSlaves(void *recordPtr)
|
||||
static void LabelframePlaceContent(void *recordPtr)
|
||||
{
|
||||
Labelframe *lframe = recordPtr;
|
||||
Labelframe *lframe = (Labelframe *)recordPtr;
|
||||
|
||||
if (Ttk_NumberSlaves(lframe->label.mgr) == 1) {
|
||||
if (Ttk_NumberContent(lframe->label.mgr) == 1) {
|
||||
Ttk_Box b;
|
||||
LabelframeDoLayout(recordPtr);
|
||||
b = lframe->label.labelParcel;
|
||||
/* ASSERT: slave #0 is lframe->label.labelWidget */
|
||||
Ttk_PlaceSlave(lframe->label.mgr, 0, b.x,b.y,b.width,b.height);
|
||||
/* ASSERT: content #0 is lframe->label.labelWidget */
|
||||
Ttk_PlaceContent(lframe->label.mgr, 0, b.x,b.y,b.width,b.height);
|
||||
}
|
||||
}
|
||||
|
||||
static int LabelRequest(void *managerData, int index, int width, int height)
|
||||
static int LabelRequest(
|
||||
TCL_UNUSED(void *),
|
||||
TCL_UNUSED(int),
|
||||
TCL_UNUSED(int),
|
||||
TCL_UNUSED(int))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@@ -498,18 +507,21 @@ static int LabelRequest(void *managerData, int index, int width, int height)
|
||||
*
|
||||
* <<NOTE-LABELREMOVED>>:
|
||||
* This routine is also called when the widget voluntarily forgets
|
||||
* the slave in LabelframeConfigure.
|
||||
* the window in LabelframeConfigure.
|
||||
*/
|
||||
static void LabelRemoved(void *managerData, int slaveIndex)
|
||||
static void LabelRemoved(
|
||||
void *managerData,
|
||||
TCL_UNUSED(int))
|
||||
{
|
||||
Labelframe *lframe = managerData;
|
||||
Labelframe *lframe = (Labelframe *)managerData;
|
||||
|
||||
lframe->label.labelWidget = 0;
|
||||
}
|
||||
|
||||
static Ttk_ManagerSpec LabelframeManagerSpec = {
|
||||
{ "labelframe", Ttk_GeometryRequestProc, Ttk_LostSlaveProc },
|
||||
{ "labelframe", Ttk_GeometryRequestProc, Ttk_LostContentProc },
|
||||
LabelframeSize,
|
||||
LabelframePlaceSlaves,
|
||||
LabelframePlaceContent,
|
||||
LabelRequest,
|
||||
LabelRemoved
|
||||
};
|
||||
@@ -517,9 +529,11 @@ static Ttk_ManagerSpec LabelframeManagerSpec = {
|
||||
/* LabelframeInitialize --
|
||||
* Initialization hook.
|
||||
*/
|
||||
static void LabelframeInitialize(Tcl_Interp *interp, void *recordPtr)
|
||||
static void LabelframeInitialize(
|
||||
TCL_UNUSED(Tcl_Interp *),
|
||||
void *recordPtr)
|
||||
{
|
||||
Labelframe *lframe = recordPtr;
|
||||
Labelframe *lframe = (Labelframe *)recordPtr;
|
||||
|
||||
lframe->label.mgr = Ttk_CreateManager(
|
||||
&LabelframeManagerSpec, lframe, lframe->core.tkwin);
|
||||
@@ -533,7 +547,7 @@ static void LabelframeInitialize(Tcl_Interp *interp, void *recordPtr)
|
||||
*/
|
||||
static void LabelframeCleanup(void *recordPtr)
|
||||
{
|
||||
Labelframe *lframe = recordPtr;
|
||||
Labelframe *lframe = (Labelframe *)recordPtr;
|
||||
Ttk_DeleteManager(lframe->label.mgr);
|
||||
if (lframe->label.labelLayout) {
|
||||
Ttk_FreeLayout(lframe->label.labelLayout);
|
||||
@@ -564,7 +578,7 @@ static void RaiseLabelWidget(Labelframe *lframe)
|
||||
*/
|
||||
static int LabelframeConfigure(Tcl_Interp *interp,void *recordPtr,int mask)
|
||||
{
|
||||
Labelframe *lframePtr = recordPtr;
|
||||
Labelframe *lframePtr = (Labelframe *)recordPtr;
|
||||
Tk_Window labelWidget = lframePtr->label.labelWidget;
|
||||
Ttk_PositionSpec unused;
|
||||
|
||||
@@ -591,15 +605,15 @@ static int LabelframeConfigure(Tcl_Interp *interp,void *recordPtr,int mask)
|
||||
/* Update -labelwidget changes, if any:
|
||||
*/
|
||||
if (mask & LABELWIDGET_CHANGED) {
|
||||
if (Ttk_NumberSlaves(lframePtr->label.mgr) == 1) {
|
||||
Ttk_ForgetSlave(lframePtr->label.mgr, 0);
|
||||
if (Ttk_NumberContent(lframePtr->label.mgr) == 1) {
|
||||
Ttk_ForgetContent(lframePtr->label.mgr, 0);
|
||||
/* Restore labelWidget field (see <<NOTE-LABELREMOVED>>)
|
||||
*/
|
||||
lframePtr->label.labelWidget = labelWidget;
|
||||
}
|
||||
|
||||
if (labelWidget) {
|
||||
Ttk_InsertSlave(lframePtr->label.mgr, 0, labelWidget, NULL);
|
||||
Ttk_InsertContent(lframePtr->label.mgr, 0, labelWidget, NULL);
|
||||
RaiseLabelWidget(lframePtr);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user