Tk Source Code

View Ticket
Login
Ticket UUID: 454303
Title: -justify option in listboxes
Type: RFE Version: None
Submitter: nobody Created on: 2001-08-22 18:32:42
Subsystem: 09. [listbox] Assigned To: fvogel
Priority: 6 Severity: Minor
Status: Closed Last Modified: 2016-01-25 20:17:22
Resolution: Fixed Closed By: fvogel
    Closed on: 2016-01-25 20:17:22
Description:
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
[email protected]

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

*** tkListbox.c.orgSat Jan 18 23:54:36 1997
--- tkListbox.cSun 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);
User Comments: fvogel added on 2016-01-25 20:17:22:
TIP #441 was accepted by TCT vote, and the corresponding implementation was merged to trunk.

Closing now.

fvogel added on 2016-01-19 07:13:18:
TIP #441 was published (thanks to the editor).

The feature branch hosting the implementation of it got renamed from rfe-3f456a5bb9 to tip-441.

fvogel added on 2016-01-18 21:06:15:

See also [3f456a5bb9].

I have written a TIP, I'm now waiting for it to be published.


dkf added on 2001-08-23 16:48:46:

File Added - 9884: listboxJustify.patch

Logged In: YES 
user_id=79902

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

dkf added on 2001-08-23 16:25:58:

File Added - 9883: tkLB8.patch

Logged In: YES 
user_id=79902

Attaching the patch...

Attachments: