Menu

#85 "-justify" option in listboxes

open
3
2001-10-22
2001-08-22
Anonymous
No

I was looking for a justify option in the TK8.3/8.4
listbox command and I found this old patch by Robin
Becker.
This allows tk8.0 to show a "-justify" options to
align the listbox content to left/center/right.
Unfortunately I haven't the necessary knowledge
neither to judge if it is still a good patch for the
new tcl releases, nor to put my hands on the TclTk
source code.

This is the patch as I found it on

http://www.jessikat.demon.co.uk/tkLB8.patch

Stefano Federici
s_federici@yahoo.com

=================LISTBOX PATCH====================

*** tkListbox.c.org Sat Jan 18 23:54:36 1997
--- tkListbox.c Sun Jan 19 00:04:46 1997
***************
*** 167,172 ****
--- 167,173 ----
char *xScrollCmd; /* Command prefix for
communicating with
* horizontal
scrollbar. NULL means no command
* to issue.
Malloc'ed. */
+ int justify; /* justification
option */
int flags; /* Various
flag bits: see below for
* definitions. */
} Listbox;
***************
*** 259,264 ****
--- 260,267 ----
{TK_CONFIG_STRING, "-
yscrollcommand", "yScrollCommand", "ScrollCommand",
DEF_LISTBOX_SCROLL_COMMAND, Tk_Offset(Listbox,
yScrollCmd),
TK_CONFIG_NULL_OK},
+ {TK_CONFIG_JUSTIFY, "-
justify", "justify", "Justify",
+ "left", Tk_Offset(Listbox, justify),
TK_CONFIG_NULL_OK},
{TK_CONFIG_END, (char *) NULL, (char *) NULL,
(char *) NULL,
(char *) NULL, 0, 0}
};
***************
*** 415,420 ****
--- 418,424 ----
listPtr->takeFocus = NULL;
listPtr->xScrollCmd = NULL;
listPtr->yScrollCmd = NULL;
+ listPtr->justify = TK_JUSTIFY_LEFT;
listPtr->flags = 0;

Tk_SetClass(listPtr->tkwin, "Listbox");
***************
*** 1188,1195 ****
}
Tk_GetFontMetrics(listPtr->tkfont, &fm);
y += fm.ascent + listPtr->selBorderWidth;
! x = listPtr->inset + listPtr->selBorderWidth -
elPtr->lBearing
! - listPtr->xOffset;
Tk_DrawChars(listPtr->display, pixmap, gc,
listPtr->tkfont,
elPtr->text, elPtr->textLength, x, y);

--- 1192,1206 ----
}
Tk_GetFontMetrics(listPtr->tkfont, &fm);
y += fm.ascent + listPtr->selBorderWidth;
! if (listPtr->justify == TK_JUSTIFY_LEFT) {
! x = listPtr->inset + listPtr-
>selBorderWidth - elPtr->lBearing
! - listPtr->xOffset;
! } else if (listPtr->justify ==
TK_JUSTIFY_CENTER) {
! x = listPtr->selBorderWidth - elPtr-
>lBearing
! - listPtr->xOffset + (Tk_Width
(tkwin) - elPtr->pixelWidth) / 2;
! } else {
! x = Tk_Width(tkwin) - 2*listPtr-
>inset - elPtr->pixelWidth;
! }
Tk_DrawChars(listPtr->display, pixmap, gc,
listPtr->tkfont,
elPtr->text, elPtr->textLength, x, y);

Discussion

  • Donal K. Fellows

    Patch against 8.0

     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    Attaching the patch...

     
  • Donal K. Fellows

    • summary: "-justify" option in listboxes --> "-justify" option in listboxes
     
  • Donal K. Fellows

    • summary: "-justify" option in listboxes --> "-justify" option in listboxes
     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    And now a version of the patch that is updated to work with
    Tk 8.4

     
  • Donal K. Fellows

    Patch against 8.4a4

     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2001-10-22
    • priority: 5 --> 3
    • assigned_to: caflick --> hobbs
    • summary: "-justify" option in listboxes --> "-justify" option in listboxes
     
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.