From: Daniel A. S. <st...@ma...> - 2007-04-30 20:33:59
|
I have recently committed a very large TkAqua patch to the HEAD (just in time for 8.5a6), as well as a backport to core-8-4-branch on the weekend. I have been working on this for several months and the AS folks have graciously been testing it for a while, but given the large number of changes, it would be very useful to have wider testing before 8.4.15 resp. 8.4b1 go final. To ease testing, I have built disk images of the framework installers and of the standalone Wish for both 8.4.15 (to be) and 8.5a6, as 4- way universal (Tcl) resp. 2-way universal (Tk) binaries: http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- preview.dmg http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ TclTkAquaStandalone-8.4.15-preview.dmg http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ TclTkAquaStandalone-8.5a6.dmg Please test and file any new problems in the SF tktoolkit bugtracker. Some details on the changes visible at script-level (for more, c.f. excerpts from 'changes' & 'ChangeLog' below): - triple-buffered drawing eliminated: by removing useless & wasteful roundtrip through QD, most drawing is now CoreGraphics all the way to the window, which improves performance and e.g. adds support for colors with alpha. - all appearance colors/brushes available as system colors, as well as the fully transparent "color" 'systemTransparent': see colors.n and screenshots at: http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ (note highlight color was purple for aqua theme and green for graphite theme) This allows use of windows with pinstripe backgrounds etc. from pure Tk, e.g. [tk_dialog] has been modified to use the background appropriate for a moveableModal dialog by adding the following: if {[tk windowingsystem] eq "aqua"} { ::tk::unsupported::MacWindowStyle style $w moveableModal {} option add *Dialog*background systemDialogBackgroundActive widgetDefault option add *Dialog*Button.highlightBackground systemDialogBackgroundActive widgetDefault } the color names (past the 'system' prefix) are those from Appearance.h, without the 'kThemeBrush' prefix, resp. without 'kThemeBackground' prefix but 'Background' suffix, resp. without 'kThemeTextColor' prefix but 'Text' suffix. Legacy system color names also still supported. - all appearance cursors available, as well as the 'none' cursor: see cursors.n, the cursor names are those from Appearance.h, in lowercase, with 'kTheme' prefix and 'Cursor' suffix stripped. - app modal sheet versions of tk_getOpenFile et al. dialogs when - parent option given (but only if parent toplevel already exists): making these app modal violates Aqua UI guidelines, but the current tcl API does not support modeless dialogs (TIP needed to add a callback scheme?). - custom MDEF and tearoff menus fixed, compound menu items implemented: to enable, [set ::tk::mac::useCustomMDEF 1] before menu creation; with the (new) defaults of 'systemMenu' background and 'menu' font, the custom MDEF should look identical to the OS menus, but adds of course support for custom colors & fonts, bitmaps etc. As the MDEF code (and API) is very gnarly and a large amount needed to be rewritten, this needs to be tested esp. carefully; for instance I already know that menu scrolling is still buggy. For a quick test, try the widget demo's menu and menubutton sections, they now have the custom MDEF enabled. - <<MenuSelect>> support added for menubar and menus without custom MDEF; extraneous sending of <<MenuSelect>> fixed. - asynchronous window dragging: windows can be dragged even when Tk is not processing events; windows are constrained after dragging to ensure titlebar is not inaccessible offscreen or under dock/menubar. - live window resizing: enabled by default, window contents redraw continuously during resizing, disable by removing 'liveResize' attribute with [::tk::unsupported::MacWindowStyle style]. - transparent GrowBox: eliminates growbox borders but is not actually transparent until we implement compositing. - fix background event processing during tracking loops: timers, fileevents, animations etc. are processed/displayed during mouse tracking and other nested event loops (e.g. menutracking, modal dialogs, window resizing etc). - scrollbar fixes: all scrollbar variants and arrow positions now supported as well as "jump to here"; changes to scrollbar variant during app lifetime supported; min scrollbar height enforced to avoid scrollbar component overlap. - [wm attributes -topmost]: puts window into utility window group, i.e. above the windows of all applications. - [wm attributes -transparent]: makes window content region transparent - before any Tk drawing takes place, i.e. need to use partially or fully transparent background color for effect to show, e.g. [. configure -bg systemTransparent]: http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ transparentCanvas.png (note that this is a png with transparency...) - [wm attributes -fullscreen]: enlarges window to fill main screen and enters 'suppressed' UI Mode when window is frontmost (i.e. menu bar and dock hidden); adapt fullscreen window size when screen size changes. - window min/max size fixes: min size enforces visibility of titlebar widgets & grow box, max size takes multiple displays into account; add support for gridding. - default initial window bounds determined by RepositionWindow() API, cascaded on current frontmost window. - [::tk::unsupported::MacWindowStyle style]: unusable attributes removed and new attributes added; fixed composite attributes; allow changing window class of already existing windows (if supported by HIWindowChangeClass() API). Cheers, Daniel ----------------------------- from HEAD tk/changes ----------------------------- 2007-04-23 (enhancement) Allow empty value for -selectforeground option. 2007-04-23 (platform support) Aqua: remove Tk-internal double buffering that is wasteful on Aqua; allows direct-to-window CoreGraphics drawing (e.g. adding support for colors with alpha). 2007-04-23 (platform support) Aqua: add all OS theme colors/brushes (patterns) as system colors. 2007-04-23 (platform support) Aqua: use OS theme for tk_dialog and bgerror. 2007-04-23 (platform support) Aqua: add 'none' cursor & missing theme cursors. 2007-04-23 (platform support) Aqua: [tk_getOpenFile -parent] uses sheet dialog. 2007-04-23 (bug fix) Aqua: fix custom MDEF and tearoff menu display. 2007-04-23 (bug fix)[1620826] Aqua: fix <<MenuSelect>> support. 2007-04-23 (platform support) Aqua: add support for live window resizing and asynchronous window dragging; prevent window from becoming inacessible offscreen or under Dock after dragging; use transparent grow box. 2007-04-23 (platform support) Aqua: improve event processing during nested event loops (e.g. modal dialogs, menu tracking, window resizing etc). 2007-04-23 (bug fix) Aqua: add support for all possible aqua scrollbar arrow positions, scrollbar variants and for "jump to here" scrollbar behaviour; correct scroll view size computation; enforce minimal scrollbar height. 2007-04-23 (platform support) Aqua: add [wm attributes] -topmost, - fullscreen and -transparent (allows fully transparent window via -bg "systemTransparent"). 2007-04-23 (platform support) Aqua: determine win min/max sizes dynamically; correct size handling of gridded windows; improve computation of initial window bounds; correct window size handling on multi-headed systems. 2007-04-23 (platform support) Aqua: correct composite attribute handling in [tk::unsupported::MacWindowStyle] and add new attributes; allow changing window class of already existing windows. 2007-04-23 (platform support) Aqua: add tcl document extensions and mime type to Wish.app's Info.plist. ---------------------- from core-8-4-branch tk/ChangeLog ----------------------- * generic/tkCanvas.c: allow -selectforeground option to be None; add * generic/tkCanvText.c: fallback to fgColor when selFgColor is None * generic/tkEntry.c: (new default on aqua to match native L&F). * generic/tkListbox.c: * generic/tkText.c: * generic/tkCanvas.c: add support for bypassing all of Tk's double * generic/tkEntry.c: buffered drawing into intermediate pixmaps * generic/tkFrame.c: (via TK_NO_DOUBLE_BUFFERING #define), it is * generic/tkListbox.c: unnecessary & wasteful on aqua where all * generic/tkPanedWindow.c: drawing is already double-buffered by the * generic/tkTextDisp.c: window server. (Use of this on other * macosx/tkMacOSXPort.h: platforms would only require implementation * unix/tkUnixScale.c: of TkpClipDrawableToRect()). * library/bgerror.tcl: on aqua, use moveable alert resp. modal dialog * library/dialog.tcl: window class and corresponding system background pattern; fix button padding. * library/tearoff.tcl: correct aqua menu bar height; vertically offset * library/tk.tcl: aqua tearoff floating window to match menu. * library/demos/menu.tcl: on aqua, use custom MDEF and tearoffs; * library/demos/menubu.tcl: correct menubutton toplevel name. * library/demos/puzzle.tcl: fix button size & padding for aqua. * macosx/tkMacOSXCarbonEvents.c: add window event target carbon event * macosx/tkMacOSXEvent.c: handler for all kEventClassWindow and * macosx/tkMacOSXEvent.h: kEventClassMouse events; move all * macosx/tkMacOSXNotify.c: remaining events except for * macosx/tkMacOSXWindowEvent.c: kEventClassKeyboard from dispatcher to application event handler; pass event handler callRef downstream; fix debug event tracing; process all tcl event types in carbon event timer; delay carbon event timer first fire; add TkMacOSXTrackingLoop() to mark enter/exit of event tracking loop during which all tcl events but only carbon update events should be processed by the timer (replaces various calls to Tcl_SetServiceMode()); rename TkMacOSXReceiveAndProcessEvent() to TkMacOSXReceiveAndDispatchEvent(), move it from tkMacOSXEvent.c to tkMacOSXCarbonEvents.c and modify it to dequeue only update events during a tracking loop; add TkMacOSXRunTclEventLoop() to standardize the various ways in use to run the tcl event loop; add handling of kEventClassAppearance events (for ScrollBarVariantChanged event). * macosx/tkMacOSXDialog.c: use new TkMacOSXTrackingLoop() around * macosx/tkMacOSXEvent.c: blocking API that puts up modal dialogs * macosx/tkMacOSXMenu.c: or when entering/exiting menu/control * macosx/tkMacOSXMouseEvent.c: tracking, window dragging and other * macosx/tkMacOSXScale.c: mouse tracking loops. * macosx/tkMacOSXScrlbr.c: * macosx/tkMacOSXWindowEvent.c: * macosx/tkMacOSXWm.c: * macosx/tkMacOSXDialog.c: use new TkMacOSXRunTclEventLoop() * macosx/tkMacOSXScale.c: instead of Tcl_DoOneEvent(), * macosx/tkMacOSXScrlbr.c: Tcl_ServiceAll(), TclServiceIdle() * macosx/tkMacOSXWindowEvent.c: and Tcl_GlobalEval("update idletasks"). * macosx/tkMacOSXColor.c: make available as Tk system colors all * macosx/tkMacOSXPort.h: appearance manager brushes, text colors and backgrounds with new and legacy names, as well as the fully transparent color "systemTransparent"; add TkMacOSXSetColorIn{Port,Context}() to directly set an X pixel color value in the current QD port resp. the given CG context without requiring passage through rgb representation (lossy for most system colors); modernize/remove Classic-era code; replace crufty strcmp() elseifs by Tcl_GetIndexFromObjStruct(). * macosx/tkMacOSXButton.c: use new TkMacOSXSetColorInPort() * macosx/tkMacOSXDraw.c: instead of setting rgb color directly * macosx/tkMacOSXMenubutton.c: to allow for non-rgb system colors. * macosx/tkMacOSXCursor.c: implement "none" cursor as on other platforms [Patch 1615427]; add all missing appearance manager cursors. * macosx/tkMacOSXDefault.h: set SELECT_FG_COLORs to None to match aqua L&F; use standard system color names; use new 'menu' system font; correct default scrollbar width. * macosx/tkMacOSXDialog.c: make -parent option of tk_getOpenFile et al. use the sheet version of NavServices dialogs; ensure native parent win exists before using StandardSheet API for tk_messageBox [Bug 1677611]; force sheets to behave like app-modal dialogs via WindowModality() API; use more modern ColorPicker API. * macosx/tkAboutDlg.r: use themed movable modal dialog, fix (c) year. * macosx/tkMacOSXFont.c: use appearance manager API to map system font * macosx/tkMacOSXFont.h: names to TkFonts; add "menu" system font for menu item text drawing from MDEF; disable broken QD stippling. * macosx/tkMacOSXMenu.c: large-scale rewrite of custom * macosx/tkMacOSXMenu.r (removed): MDEF and related code that * unix/Makefile.in: restores many longtime-MIA features to working order (e.g. images, custom colors & fonts in menus etc); implement compound menu items; use Appearance Mgr and ThemeText APIs to mimic native MDEF as closely as possible when default "menu" system font is used; remove now obsolete SICN drawing code and resources. * macosx/tkMacOSXCarbonEvents.c: handle additional menu carbon events * macosx/tkMacOSXEvent.c: in order to support <<MenuSelect>> in * macosx/tkMacOSXMenu.c: the menubar and in menus that are not * macosx/tkMacOSXMenus.c: using the custom MDEF [Bug 1620826]; fix early and missing clearing of current Tk active menu entry; fix extraneous sending of <<MenuSelect>> during active menu entry clearing. * macosx/tkMacOSXMouseEvent.c: add support for async window dragging by the window server; set the corresponding window attribute by default. * macosx/tkMacOSXScrlbr.c: use appearance manager API to retrieve scrollbar component metrics; add awareness of multiple possibilites for scrollbar arrow position in aqua and handle user changes to arrow position pref; handle difference in metrics of small & large scrollbar variants; handle aqua "jump to here" scrollbar behaviour; correct computation of scroll view size and position; enforce min scrollbar height to avoid scrollbar component overlap; erase scrollbar area outside of standard width; remove broken auto-adjust code; account for window class when leaving space for grow box; remove code to manually draw grow box; use modern API for thumb scroll proc; replace HiliteControl() by modern API; replace control mgr constants with appearance mgr equivalents. * macosx/tkMacOSXWindowEvent.c: handle only the first of a batch of kEventAppAvailableWindowBoundsChanged events sent per transaction; handle kEventWindowBoundsChanged event to support live window resizing and centralized sending of location/size changed ConfigureNotify events; ensure HIGrowBox is redrawn after bounds change; constrain window after dragging to ensure titlebar is not inacessible offscreen or under dock/menubar; handle kEventWindowGetRegion and kEventWindowDrawContent for transparent windows to mark resp. paint content region as transparent; handle kEventWindowConstrain for fullscreen windows to ensure bounds match new screen size; enter/exit fullscreen UIMode upon activation/deactivation of fullscreen window. * macosx/tkMacOSXWm.c: use live-resize and async-drag carbon window * macosx/tkMacOSXWm.h: attributes for toplevels by default; implement new [wm attributes] -topmost, -transparent and -fullscreen; refactor WmAttributesCmd() parallelling the tkUnixWm.c implementation, use thus factored proc to set proxy icon from [wm iconbitmap]; dynamically determine default values for toplevel min and max sizes (similar to tkWinWm.c impl): min sizes depend on window class & attributes to ensure visibility of all titlebar widgets and grow box, max sizes depend on maximal window bounds for all active displays; factor out code that puts into effect changes to master or override_redirect; use RepositionWindow() API to determine staggered initial window bounds; correct resize limit calculations, handle gridding and use modern resize API in TkMacOSXGrowToplevel(); remove sending of ConfigureNotify after resize or zoom (now handled by BoundsChanged handler); correct composite carbon window attribute handling, remove currently unusable attributes and add new attributes in [tk::unsupported::MacWindowStyle]; ensure validity of window class and attributes before use; apply changes to window class when handling carbon window attribute changes (if HIWindowChangeClass() API available); add debug build warning message when deprecated window style is used instead of window class; use transparent HIGrowBox for resizable windows; avoid unnecessary calls to window structure width API; use tcl time API in TkpGetMS(); add TkMacOSXEnterExitFullscreen() to enter/exit UIMode with dock and menubar hidden; restrict wmTracing output to debug builds; remove unneeded calls to TkMacOSXInvalClipRgns() and unnecessary setting of QD port; workaround GetWindowStructureWidths() Carbon bug (bogus results for never-mapped floating windows). * macosx/Wish-Info.plist.in: add tcl document extensions/mime types and LSMinimumSystemVersion, LSRequiresCarbon & NSAppleScriptEnabled keys. * doc/colors.n: document new Mac OS X system colors. * doc/cursors.n: document new Mac OS X native cursors. * doc/font.n: document new Mac OS X 'menu' system font. * doc/wm.n: document new Mac OS X [wm attributes]. -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Christopher S. M. <mor...@ar...> - 2007-04-30 21:57:04
|
Daniel, That's great news, thanks for all your hard work on TkAqua! That certainly is an impressive breadth of change and has several extensive improvements listed. I look forward to testing things out against our code to see how well things work out. If we wanted to duplicate your build from the 8.5a6 source snap, would you share what those steps/settings were? That is, what your configure arguments were and/or what other steps would need to be taken would be useful to know. Cheers! Sean Morrison BRL-CAD Open Source http://brlcad.org On Mon, 30 Apr 2007, Daniel A. Steffen wrote: > I have recently committed a very large TkAqua patch to the HEAD (just > in time for 8.5a6), as well as a backport to core-8-4-branch on the > weekend. > > I have been working on this for several months and the AS folks have > graciously been testing it for a while, but given the large number of > changes, it would be very useful to have wider testing before 8.4.15 > resp. 8.4b1 go final. > > To ease testing, I have built disk images of the framework installers > and of the standalone Wish for both 8.4.15 (to be) and 8.5a6, as 4- > way universal (Tcl) resp. 2-way universal (Tk) binaries: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- > preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.4.15-preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.5a6.dmg > > Please test and file any new problems in the SF tktoolkit bugtracker. > > Some details on the changes visible at script-level (for more, c.f. > excerpts from 'changes' & 'ChangeLog' below): > > - triple-buffered drawing eliminated: by removing useless & wasteful > roundtrip through QD, most drawing is now CoreGraphics all the way to > the window, which improves performance and e.g. adds support for > colors with alpha. > > - all appearance colors/brushes available as system colors, as well > as the fully transparent "color" 'systemTransparent': see colors.n > and screenshots at: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ > (note highlight color was purple for aqua theme and green for > graphite theme) > This allows use of windows with pinstripe backgrounds etc. from pure > Tk, e.g. [tk_dialog] has been modified to use the background > appropriate for a moveableModal dialog by adding the following: > if {[tk windowingsystem] eq "aqua"} { > ::tk::unsupported::MacWindowStyle style $w moveableModal {} > option add *Dialog*background systemDialogBackgroundActive > widgetDefault > option add *Dialog*Button.highlightBackground > systemDialogBackgroundActive widgetDefault > } > the color names (past the 'system' prefix) are those from > Appearance.h, without the 'kThemeBrush' prefix, resp. without > 'kThemeBackground' prefix but 'Background' suffix, resp. without > 'kThemeTextColor' prefix but 'Text' suffix. Legacy system color names > also still supported. > > - all appearance cursors available, as well as the 'none' cursor: see > cursors.n, the cursor names are those from Appearance.h, in > lowercase, with 'kTheme' prefix and 'Cursor' suffix stripped. > > - app modal sheet versions of tk_getOpenFile et al. dialogs when - > parent option given (but only if parent toplevel already exists): > making these app modal violates Aqua UI guidelines, but the current > tcl API does not support modeless dialogs (TIP needed to add a > callback scheme?). > > - custom MDEF and tearoff menus fixed, compound menu items > implemented: to enable, [set ::tk::mac::useCustomMDEF 1] before menu > creation; with the (new) defaults of 'systemMenu' background and > 'menu' font, the custom MDEF should look identical to the OS menus, > but adds of course support for custom colors & fonts, bitmaps etc. > As the MDEF code (and API) is very gnarly and a large amount needed > to be rewritten, this needs to be tested esp. carefully; for instance > I already know that menu scrolling is still buggy. For a quick test, > try the widget demo's menu and menubutton sections, they now have the > custom MDEF enabled. > > - <<MenuSelect>> support added for menubar and menus without custom > MDEF; extraneous sending of <<MenuSelect>> fixed. > > - asynchronous window dragging: windows can be dragged even when Tk > is not processing events; windows are constrained after dragging to > ensure titlebar is not inaccessible offscreen or under dock/menubar. > > - live window resizing: enabled by default, window contents redraw > continuously during resizing, disable by removing 'liveResize' > attribute with [::tk::unsupported::MacWindowStyle style]. > > - transparent GrowBox: eliminates growbox borders but is not actually > transparent until we implement compositing. > > - fix background event processing during tracking loops: timers, > fileevents, animations etc. are processed/displayed during mouse > tracking and other nested event loops (e.g. menutracking, modal > dialogs, window resizing etc). > > - scrollbar fixes: all scrollbar variants and arrow positions now > supported as well as "jump to here"; changes to scrollbar variant > during app lifetime supported; min scrollbar height enforced to avoid > scrollbar component overlap. > > - [wm attributes -topmost]: puts window into utility window group, > i.e. above the windows of all applications. > > - [wm attributes -transparent]: makes window content region > transparent - before any Tk drawing takes place, i.e. need to use > partially or fully transparent background color for effect to show, > e.g. [. configure -bg systemTransparent]: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ > transparentCanvas.png > (note that this is a png with transparency...) > > - [wm attributes -fullscreen]: enlarges window to fill main screen > and enters 'suppressed' UI Mode when window is frontmost (i.e. menu > bar and dock hidden); adapt fullscreen window size when screen size > changes. > > - window min/max size fixes: min size enforces visibility of titlebar > widgets & grow box, max size takes multiple displays into account; > add support for gridding. > > - default initial window bounds determined by RepositionWindow() API, > cascaded on current frontmost window. > > - [::tk::unsupported::MacWindowStyle style]: unusable attributes > removed and new attributes added; fixed composite attributes; allow > changing window class of already existing windows (if supported by > HIWindowChangeClass() API). > > > Cheers, > > Daniel > > > ----------------------------- from HEAD tk/changes > ----------------------------- > > 2007-04-23 (enhancement) Allow empty value for -selectforeground option. > > 2007-04-23 (platform support) Aqua: remove Tk-internal double > buffering that is > wasteful on Aqua; allows direct-to-window CoreGraphics drawing (e.g. > adding > support for colors with alpha). > > 2007-04-23 (platform support) Aqua: add all OS theme colors/brushes > (patterns) > as system colors. > > 2007-04-23 (platform support) Aqua: use OS theme for tk_dialog and > bgerror. > > 2007-04-23 (platform support) Aqua: add 'none' cursor & missing theme > cursors. > > 2007-04-23 (platform support) Aqua: [tk_getOpenFile -parent] uses > sheet dialog. > > 2007-04-23 (bug fix) Aqua: fix custom MDEF and tearoff menu display. > > 2007-04-23 (bug fix)[1620826] Aqua: fix <<MenuSelect>> support. > > 2007-04-23 (platform support) Aqua: add support for live window > resizing and > asynchronous window dragging; prevent window from becoming inacessible > offscreen or under Dock after dragging; use transparent grow box. > > 2007-04-23 (platform support) Aqua: improve event processing during > nested > event loops (e.g. modal dialogs, menu tracking, window resizing etc). > > 2007-04-23 (bug fix) Aqua: add support for all possible aqua > scrollbar arrow > positions, scrollbar variants and for "jump to here" scrollbar > behaviour; > correct scroll view size computation; enforce minimal scrollbar height. > > 2007-04-23 (platform support) Aqua: add [wm attributes] -topmost, - > fullscreen > and -transparent (allows fully transparent window via -bg > "systemTransparent"). > > 2007-04-23 (platform support) Aqua: determine win min/max sizes > dynamically; > correct size handling of gridded windows; improve computation of initial > window bounds; correct window size handling on multi-headed systems. > > 2007-04-23 (platform support) Aqua: correct composite attribute > handling in > [tk::unsupported::MacWindowStyle] and add new attributes; allow changing > window class of already existing windows. > > 2007-04-23 (platform support) Aqua: add tcl document extensions and > mime type > to Wish.app's Info.plist. > > ---------------------- from core-8-4-branch tk/ChangeLog > ----------------------- > > * generic/tkCanvas.c: allow -selectforeground option to be None; add > * generic/tkCanvText.c: fallback to fgColor when selFgColor is None > * generic/tkEntry.c: (new default on aqua to match native L&F). > * generic/tkListbox.c: > * generic/tkText.c: > > * generic/tkCanvas.c: add support for bypassing all of Tk's double > * generic/tkEntry.c: buffered drawing into intermediate pixmaps > * generic/tkFrame.c: (via TK_NO_DOUBLE_BUFFERING #define), it is > * generic/tkListbox.c: unnecessary & wasteful on aqua where all > * generic/tkPanedWindow.c: drawing is already double-buffered by the > * generic/tkTextDisp.c: window server. (Use of this on other > * macosx/tkMacOSXPort.h: platforms would only require implementation > * unix/tkUnixScale.c: of TkpClipDrawableToRect()). > > * library/bgerror.tcl: on aqua, use moveable alert resp. modal dialog > * library/dialog.tcl: window class and corresponding system > background pattern; fix button padding. > > * library/tearoff.tcl: correct aqua menu bar height; vertically offset > * library/tk.tcl: aqua tearoff floating window to match menu. > > * library/demos/menu.tcl: on aqua, use custom MDEF and tearoffs; > * library/demos/menubu.tcl: correct menubutton toplevel name. > > * library/demos/puzzle.tcl: fix button size & padding for aqua. > > * macosx/tkMacOSXCarbonEvents.c: add window event target carbon event > * macosx/tkMacOSXEvent.c: handler for all kEventClassWindow and > * macosx/tkMacOSXEvent.h: kEventClassMouse events; move all > * macosx/tkMacOSXNotify.c: remaining events except for > * macosx/tkMacOSXWindowEvent.c: kEventClassKeyboard from dispatcher to > application event handler; pass event handler callRef downstream; fix > debug event tracing; process all tcl event types in carbon event timer; > delay carbon event timer first fire; add TkMacOSXTrackingLoop() to mark > enter/exit of event tracking loop during which all tcl events but only > carbon update events should be processed by the timer (replaces various > calls to Tcl_SetServiceMode()); rename TkMacOSXReceiveAndProcessEvent() > to TkMacOSXReceiveAndDispatchEvent(), move it from tkMacOSXEvent.c to > tkMacOSXCarbonEvents.c and modify it to dequeue only update events > during a tracking loop; add TkMacOSXRunTclEventLoop() to standardize > the various ways in use to run the tcl event loop; add handling of > kEventClassAppearance events (for ScrollBarVariantChanged event). > > * macosx/tkMacOSXDialog.c: use new TkMacOSXTrackingLoop() around > * macosx/tkMacOSXEvent.c: blocking API that puts up modal dialogs > * macosx/tkMacOSXMenu.c: or when entering/exiting menu/control > * macosx/tkMacOSXMouseEvent.c: tracking, window dragging and other > * macosx/tkMacOSXScale.c: mouse tracking loops. > * macosx/tkMacOSXScrlbr.c: > * macosx/tkMacOSXWindowEvent.c: > * macosx/tkMacOSXWm.c: > > * macosx/tkMacOSXDialog.c: use new TkMacOSXRunTclEventLoop() > * macosx/tkMacOSXScale.c: instead of Tcl_DoOneEvent(), > * macosx/tkMacOSXScrlbr.c: Tcl_ServiceAll(), TclServiceIdle() > * macosx/tkMacOSXWindowEvent.c: and Tcl_GlobalEval("update idletasks"). > > * macosx/tkMacOSXColor.c: make available as Tk system colors all > * macosx/tkMacOSXPort.h: appearance manager brushes, text colors and > backgrounds with new and legacy names, as well as the fully transparent > color "systemTransparent"; add TkMacOSXSetColorIn{Port,Context}() to > directly set an X pixel color value in the current QD port resp. the > given CG context without requiring passage through rgb representation > (lossy for most system colors); modernize/remove Classic-era code; > replace crufty strcmp() elseifs by Tcl_GetIndexFromObjStruct(). > > * macosx/tkMacOSXButton.c: use new TkMacOSXSetColorInPort() > * macosx/tkMacOSXDraw.c: instead of setting rgb color directly > * macosx/tkMacOSXMenubutton.c: to allow for non-rgb system colors. > > * macosx/tkMacOSXCursor.c: implement "none" cursor as on other > platforms [Patch 1615427]; add all missing appearance manager cursors. > > * macosx/tkMacOSXDefault.h: set SELECT_FG_COLORs to None to match aqua > L&F; use standard system color names; use new 'menu' system font; > correct default scrollbar width. > > * macosx/tkMacOSXDialog.c: make -parent option of tk_getOpenFile et al. > use the sheet version of NavServices dialogs; ensure native parent win > exists before using StandardSheet API for tk_messageBox [Bug 1677611]; > force sheets to behave like app-modal dialogs via WindowModality() API; > use more modern ColorPicker API. > > * macosx/tkAboutDlg.r: use themed movable modal dialog, fix (c) year. > > * macosx/tkMacOSXFont.c: use appearance manager API to map system font > * macosx/tkMacOSXFont.h: names to TkFonts; add "menu" system font for > menu item text drawing from MDEF; disable broken QD stippling. > > * macosx/tkMacOSXMenu.c: large-scale rewrite of custom > * macosx/tkMacOSXMenu.r (removed): MDEF and related code that > * unix/Makefile.in: restores many longtime-MIA > features to working order (e.g. images, custom colors & fonts in menus > etc); implement compound menu items; use Appearance Mgr and ThemeText > APIs to mimic native MDEF as closely as possible when default "menu" > system font is used; remove now obsolete SICN drawing code and > resources. > > * macosx/tkMacOSXCarbonEvents.c: handle additional menu carbon events > * macosx/tkMacOSXEvent.c: in order to support <<MenuSelect>> in > * macosx/tkMacOSXMenu.c: the menubar and in menus that are not > * macosx/tkMacOSXMenus.c: using the custom MDEF [Bug 1620826]; > fix early and missing clearing of current Tk active menu entry; fix > extraneous sending of <<MenuSelect>> during active menu entry clearing. > > * macosx/tkMacOSXMouseEvent.c: add support for async window dragging by > the window server; set the corresponding window attribute by default. > > * macosx/tkMacOSXScrlbr.c: use appearance manager API to retrieve > scrollbar component metrics; add awareness of multiple possibilites for > scrollbar arrow position in aqua and handle user changes to arrow > position pref; handle difference in metrics of small & large scrollbar > variants; handle aqua "jump to here" scrollbar behaviour; correct > computation of scroll view size and position; enforce min scrollbar > height to avoid scrollbar component overlap; erase scrollbar area > outside of standard width; remove broken auto-adjust code; account for > window class when leaving space for grow box; remove code to manually > draw grow box; use modern API for thumb scroll proc; replace > HiliteControl() by modern API; replace control mgr constants with > appearance mgr equivalents. > > * macosx/tkMacOSXWindowEvent.c: handle only the first of a batch of > kEventAppAvailableWindowBoundsChanged events sent per transaction; > handle kEventWindowBoundsChanged event to support live window resizing > and centralized sending of location/size changed ConfigureNotify > events; ensure HIGrowBox is redrawn after bounds change; constrain > window after dragging to ensure titlebar is not inacessible > offscreen or under dock/menubar; handle kEventWindowGetRegion and > kEventWindowDrawContent for transparent windows to mark resp. paint > content region as transparent; handle kEventWindowConstrain for > fullscreen windows to ensure bounds match new screen size; enter/exit > fullscreen UIMode upon activation/deactivation of fullscreen window. > > * macosx/tkMacOSXWm.c: use live-resize and async-drag carbon window > * macosx/tkMacOSXWm.h: attributes for toplevels by default; implement > new [wm attributes] -topmost, -transparent and -fullscreen; refactor > WmAttributesCmd() parallelling the tkUnixWm.c implementation, use thus > factored proc to set proxy icon from [wm iconbitmap]; dynamically > determine default values for toplevel min and max sizes (similar to > tkWinWm.c impl): min sizes depend on window class & attributes to > ensure visibility of all titlebar widgets and grow box, max sizes > depend on maximal window bounds for all active displays; factor out > code that puts into effect changes to master or override_redirect; use > RepositionWindow() API to determine staggered initial window bounds; > correct resize limit calculations, handle gridding and use modern > resize API in TkMacOSXGrowToplevel(); remove sending of ConfigureNotify > after resize or zoom (now handled by BoundsChanged handler); correct > composite carbon window attribute handling, remove currently unusable > attributes and add new attributes in [tk::unsupported::MacWindowStyle]; > ensure validity of window class and attributes before use; apply > changes to window class when handling carbon window attribute changes > (if HIWindowChangeClass() API available); add debug build warning > message when deprecated window style is used instead of window class; > use transparent HIGrowBox for resizable windows; avoid unnecessary > calls to window structure width API; use tcl time API in TkpGetMS(); > add TkMacOSXEnterExitFullscreen() to enter/exit UIMode with dock and > menubar hidden; restrict wmTracing output to debug builds; remove > unneeded calls to TkMacOSXInvalClipRgns() and unnecessary setting of QD > port; workaround GetWindowStructureWidths() Carbon bug (bogus results > for never-mapped floating windows). > > * macosx/Wish-Info.plist.in: add tcl document extensions/mime types and > LSMinimumSystemVersion, LSRequiresCarbon & NSAppleScriptEnabled keys. > > * doc/colors.n: document new Mac OS X system colors. > * doc/cursors.n: document new Mac OS X native cursors. > * doc/font.n: document new Mac OS X 'menu' system font. > * doc/wm.n: document new Mac OS X [wm attributes]. > > -- > ** Daniel A. Steffen Dept. of Mathematics ** > ** Macquarie University NSW 2109 Australia ** |
From: Daniel A. S. <st...@ic...> - 2007-04-30 22:51:00
|
Sean, On 30/04/2007, at 23:56, Christopher Sean Morrison wrote: > If we wanted to duplicate your build from the 8.5a6 source snap, > would you > share what those steps/settings were? That is, what your configure > arguments were and/or what other steps would need to be taken would be > useful to know. I use my buildsystem from the BI distribution to build, package and generate the disk images all in one go... however, as far as building goes, all that does is follow the steps from tk/macosx/README, i.e. with the 8.5a6 tarballs unpacked in cwd: export CFLAGS='-Wno-deprecated-declarations -mmacosx-version- min=10.2 -arch ppc -arch ppc64 -arch i386 -arch x86_64' make -j 2 -C tcl8.5a6/macosx install DESTDIR=`pwd`/install/ make -j 2 -C tk8.5a6/macosx install DESTDIR=`pwd`/install/ (for the embedded build, use the 'install-embedded' target instead of 'install') Or you could use the unix configure/make directly: export CFLAGS='-Wno-deprecated-declarations -mmacosx-version- min=10.2 -arch ppc -arch ppc64 -arch i386 -arch x86_64' mkdir -p build/tcl build/tk; cd build/tcl ../../tcl8.5a6/unix/configure --cache-file=../config.cache -enable- threads --enable-framework make -j 2 && make -j 2 install DESTDIR=`pwd`/../../install/; cd ../tk ../../tk8.5a6/unix/configure --cache-file=../config.cache --with- tcl=../tcl --disable-symbols --enable-framework --enable-aqua make -j 2 install DESTDIR=`pwd`/../../install/ note that I built my binaries from the CVS HEAD and not the tarballs, as there is a small bug in 8.5a6 that causes some debugging code to be included in the Tk release build unless --disable-symbols is explicitly given to tk configure (as done in the unix buildsystem instructions above). Cheers, Daniel -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Daniel A. S. <st...@ma...> - 2007-04-30 23:22:17
|
On 01/05/2007, at 0:51, Daniel A. Steffen wrote: > export CFLAGS='-Wno-deprecated-declarations -mmacosx-version- > min=10.2 -arch ppc -arch ppc64 -arch i386 -arch x86_64' I should add that this is for 10.4 intel, on ppc you will need to add '-isysroot /Developer/SDKs/MacOSX10.4u.sdk' to CFLAGS. > make -j 2 install DESTDIR=`pwd`/../../install/ may want to use 'install-strip' instead of 'install' here to strip binaries automatically. Cheers, Daniel -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Christopher S. M. <mor...@ar...> - 2007-05-01 02:20:48
|
Daniel, Ah, perfect! Thanks for the exceptional details. It was exactly what I was hoping for. I'll hopefully have an update of how our testing goes real soon. Thanks again for the great work! Cheers! Sean Morrison BRL-CAD Open Source http://brlcad.org On Tue, 1 May 2007, Daniel A. Steffen wrote: > Sean, > > On 30/04/2007, at 23:56, Christopher Sean Morrison wrote: > >> If we wanted to duplicate your build from the 8.5a6 source snap, would you >> share what those steps/settings were? That is, what your configure >> arguments were and/or what other steps would need to be taken would be >> useful to know. > > I use my buildsystem from the BI distribution to build, package and generate > the disk images all in one go... > > however, as far as building goes, all that does is follow the steps from > tk/macosx/README, i.e. with the 8.5a6 tarballs unpacked in cwd: > export CFLAGS='-Wno-deprecated-declarations -mmacosx-version-min=10.2 > -arch ppc -arch ppc64 -arch i386 -arch x86_64' > make -j 2 -C tcl8.5a6/macosx install DESTDIR=`pwd`/install/ > make -j 2 -C tk8.5a6/macosx install DESTDIR=`pwd`/install/ > (for the embedded build, use the 'install-embedded' target instead of > 'install') > > Or you could use the unix configure/make directly: > export CFLAGS='-Wno-deprecated-declarations -mmacosx-version-min=10.2 > -arch ppc -arch ppc64 -arch i386 -arch x86_64' > mkdir -p build/tcl build/tk; cd build/tcl > ../../tcl8.5a6/unix/configure --cache-file=../config.cache > -enable-threads --enable-framework > make -j 2 && make -j 2 install DESTDIR=`pwd`/../../install/; cd ../tk > ../../tk8.5a6/unix/configure --cache-file=../config.cache > --with-tcl=../tcl --disable-symbols --enable-framework --enable-aqua > make -j 2 install DESTDIR=`pwd`/../../install/ > > note that I built my binaries from the CVS HEAD and not the tarballs, as > there is a small bug in 8.5a6 that causes some debugging code to be included > in the Tk release build unless --disable-symbols is explicitly given to tk > configure (as done in the unix buildsystem instructions above). > > Cheers, > > Daniel > > -- > ** Daniel A. Steffen Dept. of Mathematics ** > ** Macquarie University NSW 2109 Australia ** > > |
From: Daniel A. S. <st...@ma...> - 2007-04-30 23:28:04
|
On 30/04/2007, at 22:34, Daniel A. Steffen wrote: > To ease testing, I have built disk images of the framework > installers and of the standalone Wish for both 8.4.15 (to be) and > 8.5a6, as 4-way universal (Tcl) resp. 2-way universal (Tk) binaries: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- > preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.4.15-preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.5a6.dmg forgot to mention that while these binaries work best on 10.4, they should run on 10.3 and 10.2 as well. I would particularly appreciate testing on those older OS releases, as I no longer have GUI access to any such systems... Thanks! Cheers, Daniel -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Kevin W. <kw...@co...> - 2007-04-30 23:52:16
|
Daniel, Wow! You've done fantastic work. Pinstripes on windows without Tile! Tearoff menus work! Images in menus! I did a bit of stress-testing on the 8.4.15 build with SnackAmp, which is a complex app from a UI standpoint (and which was previously broken under Aqua). It works quite well. No bugs to report at present, but I will keep at it... Thanks again. --Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |
From: Mats B. <ma...@pr...> - 2007-05-01 14:07:07
|
On 10.2.8 it crashes right from the start. >From http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAquaStandalone-8.4.15-preview.dmg (gdb) run Starting program: /Users/matben/Tcl/Wish 8.4.15-preview/Wish.app/Contents/MacOS/Wish Reading symbols for shared libraries ............................................... done Program received signal EXC_BAD_ACCESS, Could not access memory. 0x9012d8bc in ?? () (gdb) bt #0 0x9012d8bc in ?? () Cannot access memory at address 0x9012d8bc Cannot access memory at address 0x9012d8bc #1 0x0a07c0a4 in Tcl_InitNotifier () #2 0x0a00cef8 in Tcl_CreateInterp () #3 0x00010fc4 in ?? () #4 0x00010bc0 in ?? () #5 0x000108c4 in ?? () (gdb) /Mats |
From: Daniel A. S. <st...@ic...> - 2007-05-01 14:13:52
|
Hi Mats, On 01/05/2007, at 16:08, Mats Bengtsson wrote: > On 10.2.8 it crashes right from the start. hmm, not good, would you mind getting a backtrace with the symboled libs from the full framework install? i.e. DYLD_IMAGE_SUFFIX=_debug gdb /Library/Frameworks/Tk.framework/ Resources/Wish.app/Contents/MacOS/Wish Thanks! Cheers, Daniel -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Mats B. <ma...@pr...> - 2007-05-02 11:53:43
|
This is what I got. Couldn't figure out how to dig deeper since file references seem to be your local disk. I'm willing to investigate this further since I'm eager to use it. /Mats [Mats-Bengtssons-dator:~] matben% gdb /Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish GNU gdb 5.3-20030128 (Apple version gdb-282) (Fri Jun 13 03:33:07 GMT 2003) Copyright 2003 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-apple-darwin". Reading symbols for shared libraries ...... done Reading symbols for shared libraries ..... done (gdb) run Starting program: /Library/Frameworks/Tk.framework/Versions/8.4/Resources/Wish.app/Contents/MacOS/Wish Reading symbols for shared libraries ..................................................... done 2007-05-02 12:11:38.067 Wish[502] CFLog (0): Assertions enabled InitCarbonCore: assertion build Reading symbols for shared libraries . done Program received signal EXC_BAD_ACCESS, Could not access memory. 0x9012d8bc in ?? () (gdb) bt #0 0x9012d8bc in ?? () Cannot access memory at address 0x9012d8bc Cannot access memory at address 0x9012d8bc #1 0x0a0d6f9c in Tcl_InitNotifier () at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../macosx/tclMacOSXNotify.c:353 #2 0x0a059210 in TclInitSubsystems (argv0=0x0) at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclEvent.c:759 #3 0x0a015f14 in Tcl_CreateInterp () at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclBasic.c:312 #4 0x00010fc4 in ?? () #5 0x00010bc0 in ?? () #6 0x000108c4 in ?? () (gdb) list 312 /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclBasic.c: No such file or directory. in /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclBasic.c (gdb) |
From: Dorothy R. <mo...@ar...> - 2007-05-01 16:35:00
|
With tkcvs and TclTkAqua-8.4.15-preview.dmg on PPC/Tiger/MacMini, as soon as I select an item in the main window's "listbox" (which is really a canvas) I get a beachball and have to kill it. I didn't try a debug build or anything - I won't have time until next week anyway but maybe then I could try. - dorothy Daniel A. Steffen wrote: > I have recently committed a very large TkAqua patch to the HEAD (just > in time for 8.5a6), as well as a backport to core-8-4-branch on the > weekend. > > I have been working on this for several months and the AS folks have > graciously been testing it for a while, but given the large number of > changes, it would be very useful to have wider testing before 8.4.15 > resp. 8.4b1 go final. > > To ease testing, I have built disk images of the framework installers > and of the standalone Wish for both 8.4.15 (to be) and 8.5a6, as 4- > way universal (Tcl) resp. 2-way universal (Tk) binaries: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- > preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.4.15-preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.5a6.dmg > > Please test and file any new problems in the SF tktoolkit bugtracker. > |
From: Kevin W. <kw...@co...> - 2007-05-01 20:16:04
|
Daniel, Are there any changes/updates to the bitmap-rendering code in tkMacOSXBitmap.c? I'm looking for the ability to render Mac-native system icons, which was supported under Classic (and references to IconSuite/IconFamily in the code suggest that this should work under Aqua). This code is my test: label .label -bitmap stop label .label1 -bitmap folder pack .label .label1 This code displays the old black-and-white stop sign, and a blank image where I would expect to see a folder. It appears that the monochrome bitmaps still display under Aqua, but not color bitmaps. Any thoughts on this? Is it a low priority, technically too complex, or just something no one has investigated? How difficult would it be to have Tk display icons via the IconServices API (GetIconRef et. al) with the current code base? I would love to be able to display Mac-native icons in my apps, but my code-fu at the C level isn't good enough, and I have no idea how to implement this. --Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |
From: Kevin W. <kw...@co...> - 2007-05-01 20:21:44
|
P.S. I'm envisioning a command like this: set myfile ~/Desktop/file.txt label .label -text $myfile -image [::tk::mac::geticon $myfile 16 16] where, given a file path, the command ::tk::mac::geticon retrieves and displays an IconRef for the file, with the image size passed on as an argument. Perhaps this is too much to implement--I have no idea. --Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |
From: Revar D. <rev...@gm...> - 2007-05-01 20:28:45
|
Yay! I'm glad to see this set of patches. I'm testing it on 10.4.9. Here's some things I noticed so far: The first set are all related, based on my personal belief that by default, Tk dialogs should Just Look Native for the platform: * Default toplevel background color is currently white, not pinstriped. * Default frame background color is white, not pinstriped. * Default highlightbackground for buttons, labels, checkbuttons, radiobuttons are white, not pinstriped. * Etc., etc. Stuff that's still broken, that was broken before: * Man page for wm attributes still doesn't mention the -notify attribute. * Focus rings still aren't drawn, or aren't drawn correctly for buttons, checkbuttons and radiobuttons. * Menubuttons -compound still doesn't work. Only the image shows, and not the text. New bugs that I hadn't seen before, so I don't know if they already existed or not: :-) * Spinbox's buttons use the -background color for their background, when they should instead use -highlightbackground. This makes for odd spinbox looks when you try to make it look native. I'm seeing if I can adapt my HITheme button and menubutton patches to fit on top of the new code. Your patches let me remove a lot of stuff from my own patches, but I still want to fix the focus and - compound stuff. Hope this feedback has been helpful. - Revar On Apr 30, 2007, at 1:34 PM, Daniel A. Steffen wrote: > I have recently committed a very large TkAqua patch to the HEAD (just > in time for 8.5a6), as well as a backport to core-8-4-branch on the > weekend. > > I have been working on this for several months and the AS folks have > graciously been testing it for a while, but given the large number of > changes, it would be very useful to have wider testing before 8.4.15 > resp. 8.4b1 go final. > > To ease testing, I have built disk images of the framework installers > and of the standalone Wish for both 8.4.15 (to be) and 8.5a6, as 4- > way universal (Tcl) resp. 2-way universal (Tk) binaries: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- > preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.4.15-preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.5a6.dmg > > Please test and file any new problems in the SF tktoolkit bugtracker. > > Some details on the changes visible at script-level (for more, c.f. > excerpts from 'changes' & 'ChangeLog' below): > > - triple-buffered drawing eliminated: by removing useless & wasteful > roundtrip through QD, most drawing is now CoreGraphics all the way to > the window, which improves performance and e.g. adds support for > colors with alpha. > > - all appearance colors/brushes available as system colors, as well > as the fully transparent "color" 'systemTransparent': see colors.n > and screenshots at: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ > (note highlight color was purple for aqua theme and green for > graphite theme) > This allows use of windows with pinstripe backgrounds etc. from pure > Tk, e.g. [tk_dialog] has been modified to use the background > appropriate for a moveableModal dialog by adding the following: > if {[tk windowingsystem] eq "aqua"} { > ::tk::unsupported::MacWindowStyle style $w moveableModal {} > option add *Dialog*background systemDialogBackgroundActive > widgetDefault > option add *Dialog*Button.highlightBackground > systemDialogBackgroundActive widgetDefault > } > the color names (past the 'system' prefix) are those from > Appearance.h, without the 'kThemeBrush' prefix, resp. without > 'kThemeBackground' prefix but 'Background' suffix, resp. without > 'kThemeTextColor' prefix but 'Text' suffix. Legacy system color names > also still supported. > > - all appearance cursors available, as well as the 'none' cursor: see > cursors.n, the cursor names are those from Appearance.h, in > lowercase, with 'kTheme' prefix and 'Cursor' suffix stripped. > > - app modal sheet versions of tk_getOpenFile et al. dialogs when - > parent option given (but only if parent toplevel already exists): > making these app modal violates Aqua UI guidelines, but the current > tcl API does not support modeless dialogs (TIP needed to add a > callback scheme?). > > - custom MDEF and tearoff menus fixed, compound menu items > implemented: to enable, [set ::tk::mac::useCustomMDEF 1] before menu > creation; with the (new) defaults of 'systemMenu' background and > 'menu' font, the custom MDEF should look identical to the OS menus, > but adds of course support for custom colors & fonts, bitmaps etc. > As the MDEF code (and API) is very gnarly and a large amount needed > to be rewritten, this needs to be tested esp. carefully; for instance > I already know that menu scrolling is still buggy. For a quick test, > try the widget demo's menu and menubutton sections, they now have the > custom MDEF enabled. > > - <<MenuSelect>> support added for menubar and menus without custom > MDEF; extraneous sending of <<MenuSelect>> fixed. > > - asynchronous window dragging: windows can be dragged even when Tk > is not processing events; windows are constrained after dragging to > ensure titlebar is not inaccessible offscreen or under dock/menubar. > > - live window resizing: enabled by default, window contents redraw > continuously during resizing, disable by removing 'liveResize' > attribute with [::tk::unsupported::MacWindowStyle style]. > > - transparent GrowBox: eliminates growbox borders but is not actually > transparent until we implement compositing. > > - fix background event processing during tracking loops: timers, > fileevents, animations etc. are processed/displayed during mouse > tracking and other nested event loops (e.g. menutracking, modal > dialogs, window resizing etc). > > - scrollbar fixes: all scrollbar variants and arrow positions now > supported as well as "jump to here"; changes to scrollbar variant > during app lifetime supported; min scrollbar height enforced to avoid > scrollbar component overlap. > > - [wm attributes -topmost]: puts window into utility window group, > i.e. above the windows of all applications. > > - [wm attributes -transparent]: makes window content region > transparent - before any Tk drawing takes place, i.e. need to use > partially or fully transparent background color for effect to show, > e.g. [. configure -bg systemTransparent]: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/sysCols/ > transparentCanvas.png > (note that this is a png with transparency...) > > - [wm attributes -fullscreen]: enlarges window to fill main screen > and enters 'suppressed' UI Mode when window is frontmost (i.e. menu > bar and dock hidden); adapt fullscreen window size when screen size > changes. > > - window min/max size fixes: min size enforces visibility of titlebar > widgets & grow box, max size takes multiple displays into account; > add support for gridding. > > - default initial window bounds determined by RepositionWindow() API, > cascaded on current frontmost window. > > - [::tk::unsupported::MacWindowStyle style]: unusable attributes > removed and new attributes added; fixed composite attributes; allow > changing window class of already existing windows (if supported by > HIWindowChangeClass() API). > > > Cheers, > > Daniel > > > ----------------------------- from HEAD tk/changes > ----------------------------- > > 2007-04-23 (enhancement) Allow empty value for -selectforeground > option. > > 2007-04-23 (platform support) Aqua: remove Tk-internal double > buffering that is > wasteful on Aqua; allows direct-to-window CoreGraphics drawing (e.g. > adding > support for colors with alpha). > > 2007-04-23 (platform support) Aqua: add all OS theme colors/brushes > (patterns) > as system colors. > > 2007-04-23 (platform support) Aqua: use OS theme for tk_dialog and > bgerror. > > 2007-04-23 (platform support) Aqua: add 'none' cursor & missing theme > cursors. > > 2007-04-23 (platform support) Aqua: [tk_getOpenFile -parent] uses > sheet dialog. > > 2007-04-23 (bug fix) Aqua: fix custom MDEF and tearoff menu display. > > 2007-04-23 (bug fix)[1620826] Aqua: fix <<MenuSelect>> support. > > 2007-04-23 (platform support) Aqua: add support for live window > resizing and > asynchronous window dragging; prevent window from becoming inacessible > offscreen or under Dock after dragging; use transparent grow box. > > 2007-04-23 (platform support) Aqua: improve event processing during > nested > event loops (e.g. modal dialogs, menu tracking, window resizing etc). > > 2007-04-23 (bug fix) Aqua: add support for all possible aqua > scrollbar arrow > positions, scrollbar variants and for "jump to here" scrollbar > behaviour; > correct scroll view size computation; enforce minimal scrollbar > height. > > 2007-04-23 (platform support) Aqua: add [wm attributes] -topmost, - > fullscreen > and -transparent (allows fully transparent window via -bg > "systemTransparent"). > > 2007-04-23 (platform support) Aqua: determine win min/max sizes > dynamically; > correct size handling of gridded windows; improve computation of > initial > window bounds; correct window size handling on multi-headed systems. > > 2007-04-23 (platform support) Aqua: correct composite attribute > handling in > [tk::unsupported::MacWindowStyle] and add new attributes; allow > changing > window class of already existing windows. > > 2007-04-23 (platform support) Aqua: add tcl document extensions and > mime type > to Wish.app's Info.plist. > > ---------------------- from core-8-4-branch tk/ChangeLog > ----------------------- > > * generic/tkCanvas.c: allow -selectforeground option to be None; add > * generic/tkCanvText.c: fallback to fgColor when selFgColor is None > * generic/tkEntry.c: (new default on aqua to match native L&F). > * generic/tkListbox.c: > * generic/tkText.c: > > * generic/tkCanvas.c: add support for bypassing all of Tk's double > * generic/tkEntry.c: buffered drawing into intermediate pixmaps > * generic/tkFrame.c: (via TK_NO_DOUBLE_BUFFERING #define), it is > * generic/tkListbox.c: unnecessary & wasteful on aqua where all > * generic/tkPanedWindow.c: drawing is already double-buffered by the > * generic/tkTextDisp.c: window server. (Use of this on other > * macosx/tkMacOSXPort.h: platforms would only require implementation > * unix/tkUnixScale.c: of TkpClipDrawableToRect()). > > * library/bgerror.tcl: on aqua, use moveable alert resp. modal dialog > * library/dialog.tcl: window class and corresponding system > background pattern; fix button padding. > > * library/tearoff.tcl: correct aqua menu bar height; vertically offset > * library/tk.tcl: aqua tearoff floating window to match menu. > > * library/demos/menu.tcl: on aqua, use custom MDEF and tearoffs; > * library/demos/menubu.tcl: correct menubutton toplevel name. > > * library/demos/puzzle.tcl: fix button size & padding for aqua. > > * macosx/tkMacOSXCarbonEvents.c: add window event target carbon event > * macosx/tkMacOSXEvent.c: handler for all kEventClassWindow and > * macosx/tkMacOSXEvent.h: kEventClassMouse events; move all > * macosx/tkMacOSXNotify.c: remaining events except for > * macosx/tkMacOSXWindowEvent.c: kEventClassKeyboard from > dispatcher to > application event handler; pass event handler callRef downstream; fix > debug event tracing; process all tcl event types in carbon event > timer; > delay carbon event timer first fire; add TkMacOSXTrackingLoop() to > mark > enter/exit of event tracking loop during which all tcl events but only > carbon update events should be processed by the timer (replaces > various > calls to Tcl_SetServiceMode()); rename > TkMacOSXReceiveAndProcessEvent() > to TkMacOSXReceiveAndDispatchEvent(), move it from tkMacOSXEvent.c to > tkMacOSXCarbonEvents.c and modify it to dequeue only update events > during a tracking loop; add TkMacOSXRunTclEventLoop() to standardize > the various ways in use to run the tcl event loop; add handling of > kEventClassAppearance events (for ScrollBarVariantChanged event). > > * macosx/tkMacOSXDialog.c: use new TkMacOSXTrackingLoop() around > * macosx/tkMacOSXEvent.c: blocking API that puts up modal dialogs > * macosx/tkMacOSXMenu.c: or when entering/exiting menu/control > * macosx/tkMacOSXMouseEvent.c: tracking, window dragging and other > * macosx/tkMacOSXScale.c: mouse tracking loops. > * macosx/tkMacOSXScrlbr.c: > * macosx/tkMacOSXWindowEvent.c: > * macosx/tkMacOSXWm.c: > > * macosx/tkMacOSXDialog.c: use new TkMacOSXRunTclEventLoop() > * macosx/tkMacOSXScale.c: instead of Tcl_DoOneEvent(), > * macosx/tkMacOSXScrlbr.c: Tcl_ServiceAll(), TclServiceIdle() > * macosx/tkMacOSXWindowEvent.c: and Tcl_GlobalEval("update > idletasks"). > > * macosx/tkMacOSXColor.c: make available as Tk system colors all > * macosx/tkMacOSXPort.h: appearance manager brushes, text colors and > backgrounds with new and legacy names, as well as the fully > transparent > color "systemTransparent"; add TkMacOSXSetColorIn{Port,Context}() to > directly set an X pixel color value in the current QD port resp. the > given CG context without requiring passage through rgb representation > (lossy for most system colors); modernize/remove Classic-era code; > replace crufty strcmp() elseifs by Tcl_GetIndexFromObjStruct(). > > * macosx/tkMacOSXButton.c: use new TkMacOSXSetColorInPort() > * macosx/tkMacOSXDraw.c: instead of setting rgb color directly > * macosx/tkMacOSXMenubutton.c: to allow for non-rgb system colors. > > * macosx/tkMacOSXCursor.c: implement "none" cursor as on other > platforms [Patch 1615427]; add all missing appearance manager cursors. > > * macosx/tkMacOSXDefault.h: set SELECT_FG_COLORs to None to match aqua > L&F; use standard system color names; use new 'menu' system font; > correct default scrollbar width. > > * macosx/tkMacOSXDialog.c: make -parent option of tk_getOpenFile et > al. > use the sheet version of NavServices dialogs; ensure native parent win > exists before using StandardSheet API for tk_messageBox [Bug 1677611]; > force sheets to behave like app-modal dialogs via WindowModality() > API; > use more modern ColorPicker API. > > * macosx/tkAboutDlg.r: use themed movable modal dialog, fix (c) year. > > * macosx/tkMacOSXFont.c: use appearance manager API to map system font > * macosx/tkMacOSXFont.h: names to TkFonts; add "menu" system font for > menu item text drawing from MDEF; disable broken QD stippling. > > * macosx/tkMacOSXMenu.c: large-scale rewrite of custom > * macosx/tkMacOSXMenu.r (removed): MDEF and related code that > * unix/Makefile.in: restores many longtime-MIA > features to working order (e.g. images, custom colors & fonts in menus > etc); implement compound menu items; use Appearance Mgr and ThemeText > APIs to mimic native MDEF as closely as possible when default "menu" > system font is used; remove now obsolete SICN drawing code and > resources. > > * macosx/tkMacOSXCarbonEvents.c: handle additional menu carbon events > * macosx/tkMacOSXEvent.c: in order to support <<MenuSelect>> in > * macosx/tkMacOSXMenu.c: the menubar and in menus that are not > * macosx/tkMacOSXMenus.c: using the custom MDEF [Bug 1620826]; > fix early and missing clearing of current Tk active menu entry; fix > extraneous sending of <<MenuSelect>> during active menu entry > clearing. > > * macosx/tkMacOSXMouseEvent.c: add support for async window > dragging by > the window server; set the corresponding window attribute by default. > > * macosx/tkMacOSXScrlbr.c: use appearance manager API to retrieve > scrollbar component metrics; add awareness of multiple possibilites > for > scrollbar arrow position in aqua and handle user changes to arrow > position pref; handle difference in metrics of small & large scrollbar > variants; handle aqua "jump to here" scrollbar behaviour; correct > computation of scroll view size and position; enforce min scrollbar > height to avoid scrollbar component overlap; erase scrollbar area > outside of standard width; remove broken auto-adjust code; account for > window class when leaving space for grow box; remove code to manually > draw grow box; use modern API for thumb scroll proc; replace > HiliteControl() by modern API; replace control mgr constants with > appearance mgr equivalents. > > * macosx/tkMacOSXWindowEvent.c: handle only the first of a batch of > kEventAppAvailableWindowBoundsChanged events sent per transaction; > handle kEventWindowBoundsChanged event to support live window resizing > and centralized sending of location/size changed ConfigureNotify > events; ensure HIGrowBox is redrawn after bounds change; constrain > window after dragging to ensure titlebar is not inacessible > offscreen or under dock/menubar; handle kEventWindowGetRegion and > kEventWindowDrawContent for transparent windows to mark resp. paint > content region as transparent; handle kEventWindowConstrain for > fullscreen windows to ensure bounds match new screen size; enter/exit > fullscreen UIMode upon activation/deactivation of fullscreen window. > > * macosx/tkMacOSXWm.c: use live-resize and async-drag carbon window > * macosx/tkMacOSXWm.h: attributes for toplevels by default; implement > new [wm attributes] -topmost, -transparent and -fullscreen; refactor > WmAttributesCmd() parallelling the tkUnixWm.c implementation, use thus > factored proc to set proxy icon from [wm iconbitmap]; dynamically > determine default values for toplevel min and max sizes (similar to > tkWinWm.c impl): min sizes depend on window class & attributes to > ensure visibility of all titlebar widgets and grow box, max sizes > depend on maximal window bounds for all active displays; factor out > code that puts into effect changes to master or override_redirect; use > RepositionWindow() API to determine staggered initial window bounds; > correct resize limit calculations, handle gridding and use modern > resize API in TkMacOSXGrowToplevel(); remove sending of > ConfigureNotify > after resize or zoom (now handled by BoundsChanged handler); correct > composite carbon window attribute handling, remove currently unusable > attributes and add new attributes in > [tk::unsupported::MacWindowStyle]; > ensure validity of window class and attributes before use; apply > changes to window class when handling carbon window attribute changes > (if HIWindowChangeClass() API available); add debug build warning > message when deprecated window style is used instead of window class; > use transparent HIGrowBox for resizable windows; avoid unnecessary > calls to window structure width API; use tcl time API in TkpGetMS(); > add TkMacOSXEnterExitFullscreen() to enter/exit UIMode with dock and > menubar hidden; restrict wmTracing output to debug builds; remove > unneeded calls to TkMacOSXInvalClipRgns() and unnecessary setting > of QD > port; workaround GetWindowStructureWidths() Carbon bug (bogus results > for never-mapped floating windows). > > * macosx/Wish-Info.plist.in: add tcl document extensions/mime types > and > LSMinimumSystemVersion, LSRequiresCarbon & NSAppleScriptEnabled keys. > > * doc/colors.n: document new Mac OS X system colors. > * doc/cursors.n: document new Mac OS X native cursors. > * doc/font.n: document new Mac OS X 'menu' system font. > * doc/wm.n: document new Mac OS X [wm attributes]. > > -- > ** Daniel A. Steffen Dept. of Mathematics ** > ** Macquarie University NSW 2109 Australia ** > > > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Tcl-mac mailing list > tc...@li... > https://lists.sourceforge.net/lists/listinfo/tcl-mac |
From: Mats B. <ma...@pr...> - 2007-05-02 14:25:02
|
Just updated my core-8-4-branch and the problematic code referenced in: Cannot access memory at address 0x9012d8bc #1 0x0a0d6f9c in Tcl_InitNotifier () at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../macosx/tclMacOSXNotify.c:353 Seems to be: LOCK_NOTIFIER_INIT which defines to #define LOCK_NOTIFIER_INIT SpinLockLock(¬ifierInitLock) It also says: /* * We use the Darwin-native spinlock API rather than pthread mutexes for * notifier locking: this radically simplifies the implementation and lowers * overhead. Note that these are not pure spinlocks, they employ various * strategies to back off and relinquish the processor, making them immune to * most priority-inversion livelocks (c.f. 'man 3 OSSpinLockLock' and Darwin * sources: xnu/osfmk/{ppc,i386}/commpage/spinlocks.s). */ But on my box 10.2.8 I don't get the man page: man 3 OSSpinLockLock No entry for OSSpinLockLock in section 3 of the manual If this is of any help, Mats |
From: Daniel A. S. <st...@ic...> - 2007-05-02 14:38:36
|
Hi Mats, On 02/05/2007, at 13:54, Mats Bengtsson wrote: > This is what I got. Couldn't figure out how to dig deeper since > file references seem to be your local disk. you can give gbd paths to search for sources with the 'directory' command, but you need to recreate the hierarchy encoded in the binary somewhere on your disk, e.g. d=/Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4- branch mkdir -p /tmp/$d ln -s /path/to/your/tcl /tmp/$d/tcl ln -s /path/to/your/tk /tmp/$d/tk this way you should be able to use my binary with your sources... On 02/05/2007, at 16:26, Mats Bengtsson wrote: > Just updated my core-8-4-branch and the problematic code referenced > in: > > Cannot access memory at address 0x9012d8bc > #1 0x0a0d6f9c in Tcl_InitNotifier () at /Volumes/Local/Users/ > steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../ > macosx/tclMacOSXNotify.c:353 > > Seems to be: > LOCK_NOTIFIER_INIT > which defines to #define LOCK_NOTIFIER_INIT SpinLockLock > (¬ifierInitLock) yes, I found the same location, which is puzzling SpinLockLock is set to either OSSpinLockLock or _spin_lock at runtime, depending on availability (OSSpinLockLock is Tiger or later only), this happens in SpinLockLockInit() at startup, maybe you could try to trace in gdb if anything goes wrong there? I have however confirmed that this works fine in 10.3 (where OSSpinLockLock is also not available), so I'm not sure SpinLockLockInit() is at fault, it could be that the call to _spin_lock itself goes wrong? Maybe you could try compiling tcl on your box to see if the problem appears there as well? if built on 10.2, the runtime selection of spinlock API will be bypassed and _spin_lock will always be used. Thanks! Cheers, Daniel -- ** Daniel A. Steffen Dept. of Mathematics ** ** Macquarie University NSW 2109 Australia ** |
From: Mats B. <ma...@pr...> - 2007-05-02 15:14:28
|
Daniel A. Steffen wrote: > Hi Mats, > > On 02/05/2007, at 13:54, Mats Bengtsson wrote: >> This is what I got. Couldn't figure out how to dig deeper since file >> references seem to be your local disk. > > you can give gbd paths to search for sources with the 'directory' > command, but you need to recreate the hierarchy encoded in the binary > somewhere on your disk, e.g. > d=/Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch > > mkdir -p /tmp/$d > ln -s /path/to/your/tcl /tmp/$d/tcl > ln -s /path/to/your/tk /tmp/$d/tk > this way you should be able to use my binary with your sources... > Got a little bit more: Program received signal EXC_BAD_ACCESS, Could not access memory. 0x9012d8bc in ?? () (gdb) list 1 /SourceCache/Csu/Csu-45/icplusplus.c: No such file or directory. in /SourceCache/Csu/Csu-45/icplusplus.c (gdb) bt #0 0x9012d8bc in ?? () Cannot access memory at address 0x9012d8bc Cannot access memory at address 0x9012d8bc #1 0x0a0d6f9c in Tcl_InitNotifier () at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../macosx/tclMacOSXNotify.c:353 #2 0x0a059210 in TclInitSubsystems (argv0=0x0) at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclEvent.c:759 #3 0x0a015f14 in Tcl_CreateInterp () at /Volumes/Local/Users/steffen/Documents/Development/TclTk/core-8-4-branch/tcl/unix/../generic/tclBasic.c:312 #4 0x00010fc4 in ?? () #5 0x00010bc0 in ?? () #6 0x000108c4 in ?? () Will try to build tomorrow. /Mats |
From: Mats B. <ma...@pr...> - 2007-05-03 06:38:52
|
Daniel A. Steffen wrote: > > Maybe you could try compiling tcl on your box to see if the problem > appears there as well? if built on 10.2, the runtime selection of > spinlock API will be bypassed and _spin_lock will always be used. > First, I did a few more tries with your build but couldn't get 'list' list the sources. Anyway, I single stepped from Tcl_InitNotifier and it seems that it bails out where we discussed before. Second, made a build on my 10.2.8 box and building worked fine. However, if I just double click wish it launches alright but any toplevel title bar is non responsive (can't drag it); traffic light work. Also a tk_messageBox can be dragged around. Console works. Sourced my Coccinella app which worked fine, and now toplevels were responsive, but a few seconds later it crashed. Third, using my own build I launched it in gdb and it crashed right away: (gdb) run Starting program: /Library/Frameworks/Tk.framework/Versions/8.4/Resources/Wish.app/Contents/MacOS/Wish Reading symbols for shared libraries ..................................................... done 2007-05-03 08:25:38.447 Wish[12063] CFLog (0): Assertions enabled InitCarbonCore: assertion build Reading symbols for shared libraries . done DebugAssert: Third Party Client: err == noErr BAD_VECTOR_INDEX_Error [line 852, file ATSUnicode/ATSGlueClasses.cp] DebugAssert: ATS: (err == noErr) GetGlyphVectorIndex_Err GetGlyphVectorIndex returned an error in GetSingleRangeMetrics.[line 337, file ./LayoutCore/LLCUtilities.c] DebugAssert: ATS: (err == noErr) GetSingleRangeMetrics_Err [line 270, file ./LayoutCore/LLCUtilities.c] DebugAssert: ATS: (err == noErr) GetRangeMetrics_Err [line 505, file ./LayoutCore/LLCUtilities.c] DebugAssert: ATS: !(err ) GetMetricsForGlyphs [line 921, file ./LayoutCore/LLCMain.c] DebugAssert: Third Party Client: result == noErr ATS LayoutCore failed when called by ATSUI LayoutGlyphs.[line 1080, file ATSUnicode/ATSULayoutAndDraw.cp] Hope this is of any help, Mats |
From: Neil M. <nem@Cs.Nott.AC.UK> - 2007-05-02 14:52:51
|
Hi Daniel, Firstly, Wow! This is great! Having correct pinstripe backgrounds, including e.g. systemToolbarBackground is great. I also love the transparent backgrounds, which even allow you to click through the transparent bits to the window behind (and systemSheetBackgroundTransparent is very cool). Playing around in an interactive wish session, though, it seems that the backgrounds don't come into effect until you resize the window. For instance, if I try this in an interactive shell: % . configure -background systemTransparent % pack [canvas .c -background systemTransparent -bd 0 - highlightthickness 0] -fill both -expand 1 % .c create oval 0 0 200 200 -fill black 1 % wm attributes . -transparent 1 The canvas background remains white until I resize the window, at which point it disappears. I think this is the wm attributes - transparent that doesn't kick in properly until the window changes. Also, after installing the 8.5a6 full package, my colors.n etc still list just the old colours (in /Library/Tcl/man/mann). Am I looking in the wrong place or are the new manpages not being installed properly? Cheers, -- Neil This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. |
From: David Z. <kr...@kr...> - 2007-05-02 15:50:46
|
Le 30 avr. 07 =E0 22:34, Daniel A. Steffen a =E9crit : > I have recently committed a very large TkAqua patch to the HEAD (just > in time for 8.5a6), as well as a backport to core-8-4-branch on the > weekend. > Great job! > I have been working on this for several months and the AS folks have > graciously been testing it for a while, but given the large number of > changes, it would be very useful to have wider testing before 8.4.15 > resp. 8.4b1 go final. > > To ease testing, I have built disk images of the framework installers > and of the standalone Wish for both 8.4.15 (to be) and 8.5a6, as 4- > way universal (Tcl) resp. 2-way universal (Tk) binaries: > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.4.15- > preview.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.4.15-preview.dmg > = http://rutherglen.ics.mq.edu.au/~steffen/tcltk/TclTkAqua-8.5a6.dmg > http://rutherglen.ics.mq.edu.au/~steffen/tcltk/ > TclTkAquaStandalone-8.5a6.dmg > I've updated and uploaded tclkit lite with these changes: http://www.kroc.tk/tclkit/current/inter.rvt > Please test and file any new problems in the SF tktoolkit bugtracker. > The only one I found actually: double-cliking on titlebar doesn't =20 minimize window anymore (8.4 and 8.5). Regards, --=20 David Zolli kr...@kr... http://www.kroc.tk= |
From: Uwe K. <ml...@ko...> - 2007-05-22 20:35:12
|
Am Mittwoch, 2. Mai 2007 schrieb David Zolli: > I've updated and uploaded tclkit lite with these changes: > > http://www.kroc.tk/tclkit/current/inter.rvt Great -- thank you! Have you incorporated the switches to make the tclkits run on 10.3, too? The current versions tclkit-gui-8.4.15-Darwin 3.5 Mb 05/22/2007 tclkit-gui-8.5a6-Darwin 4.7 Mb 05/10/2007 only work on 10.4. 10.3 gives the following error: undefined reference to _OSSpinLockLock and this was mentioned here http://www.nabble.com/Tclkit-darwin-univ-aqua-on-10.3.9--t1712241.html to be a 10.4 <> 10.3 conflict. Unfortunately, I don't have direct access to a 10.3 machine to test, but I have to deliver to a 10.3 ... Have you looked into this? And by the way: wouldn't it be nice to make the tclkit-lite per default built 10.3 friendly? Regards Uwe Koloska |
From: Russell E. O. <ro...@ce...> - 2007-05-02 19:19:56
|
In article <E71...@ma...>, "Daniel A. Steffen" <st...@ma...> wrote: > I have recently committed a very large TkAqua patch to the HEAD (just > in time for 8.5a6), as well as a backport to core-8-4-branch on the > weekend. > > I have been working on this for several months and the AS folks have > graciously been testing it for a while, but given the large number of > changes, it would be very useful to have wider testing before 8.4.15 > resp. 8.4b1 go final. This is great news! I'm really hoping it fixes the problem with losing mouse position. However, I can't tell yet. In initial testing I found the following Python/Tkinter call fails: tk_setPalette(background = 'White') The traceback is: "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/T kinter.py", line 390, in tk_setPalette + _flatten(args) + _flatten(kw.items())) _tkinter.TclError: unknown color name "" This code has worked with every version of 8.4 I've tried in the past. (Which is not to say it's correct -- and if I'm mis-calling the function then I should fix that). If you have a suggested workaround I can try testing other aspects. But I hope you'll be able to fix this issue for 8.4.15 because backward compatibility would really help Python users (at least those of us who use tk_setPalette). Let me know if I can help diagnose this. Regards, -- Russell P.S. I see some folks are having problems with 10.2.8. At risk of sounding like a jerk, I'd suggest not spending significant resources keeping tcl/tk that backwards compatible. Surely keeping it compatible with the two most recent versions of MacOS X is enough work? |
From: Russell E. O. <ro...@ce...> - 2007-05-02 19:34:45
|
In article <row...@se...>, "Russell E. Owen" <ro...@ce...> wrote: > tk_setPalette(background = 'White') > > The traceback is: > "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/T > kinter.py", line 390, in tk_setPalette > + _flatten(args) + _flatten(kw.items())) > _tkinter.TclError: unknown color name "" I tried the obvious equivalent test in wish (as I should have done before posting the first time) and it fails. Also note the interesting error message when I repeat the command... % tk_setPalette background white unknown color name "" % tk_setPalette background white window name "___tk_set_palette" already exists in parent -- Russell |
From: Russell E. O. <ro...@ce...> - 2007-05-03 18:45:55
|
In article <row...@se...>, "Russell E. Owen" <ro...@ce...> wrote: > % tk_setPalette background white > unknown color name "" > % tk_setPalette background white > window name "___tk_set_palette" already exists in parent Other than this one bug, preview TkAqua 8.4.15, preliminary test with my application have all gone well. My application works Tcl/Tk pretty hard so this is very good news (and will be even better once I can get more time on it). But no word yet on losing mouse position yet (it mostly shows up on Intel Macs and I don't have one; I have asked a friend to test the app but he hasn't done it yet). -- Russell |
From: Russell E. O. <ro...@ce...> - 2007-05-04 19:10:14
|
In article <row...@se...>, "Russell E. Owen" <ro...@ce...> wrote: > But no word yet on losing mouse position yet (it mostly shows up on > Intel Macs and I don't have one; I have asked a friend to test the app > but he hasn't done it yet). Just got word..the preview TkAqua 8.4.15 appears to have fixed the bug of losing mouse position! Halleljah! That bug has been present in every version of TkAqua since I can remember (at least as far back as 8.4.7) with the sole exception of 8.4.11. I sure hope it stays fixed in the released version of 8.4.15. I could finally release a universal version of my app, plus enjoy the many other improvements since 8.4.11. Now I'm *really* looking forward to 8.4.15 Regards, -- Russell |