librnd 3.1.2 (r34089) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: do not uninstall genht headers twice when libgenht is system installed (causes error) [core] -Fix: wrong comment on temp file name creation fallback -Fix: conf: when creating a new empty list, do not create an empty item in it -Fix: uninitialized local var caused segfault on error branch while creating project file [doc] -Fix: typo in -dev package desc in packaging doc [gtk] -Fix: opengl rendering: line/arc gc width needs to be determined at draw time, not at gc set time; the gc may be configured once, then subsequent zooming would change coords-per-pixel -Fix: framed hbox/vbox expand/fill in the right direction [gtk2] -Fix: make opengl preview widget contexts share textures with top window drawing area gl context - needed for preview showing the same pixmaps work correctly with the same cached texture IDs [gtk4] -Fix: make sure window destroy callback runs when window is closed from code -Fix: tree view: while destroying a tree widget, avoid triggering set cursor to NULL (there's no real cursor change) -Fix: more advanced setup to avoid double close callbacks caused by glib async signal mess -Fix: when setting initial preview zoom/pan to zoom_win, do not assume x1;y1 being 0;0 [irc] -Fix: use app name instead of hardwiring pcb-rnd when saving the log [lib_hid_common] -Fix: when the preferences dialog is not active, do not attempt to refresh it from conf change callbacks -Fix: typo in win32-specific path handling of the new fileselect dialog -Fix: preferences config tree: save user config file or mark design changed if array type value changed [lib_hid_gl] -Fix: uninitialized gl version (on missing call) -Fix: refuse direct render backend on ES (where probably only vao would work) -Fix: opengl ES shader bugs: wrong name for texture2D() call, have to use "varying" instead of in/out for vertex->fragment communication, there's no f suffix for floats, use 3.0 for float comparison (thanks to Majenko) -Fix: vao init version check: accept anything >= 1.0 on ES , only desktop requires >=3.0 -Add: on some ES versions there's no way to get the major version as an integer; try to parse it out from the version string [script] -Fix: one-liner shouldn't segfault if language engine is not found -Add: print info line to log if no installed scripting language would be found (no puplug dir set in fungw) librnd 3.1.1 (r34045) ~~~~~~~~~~~~~~~~~~~~~ [core] -Fix: conf system shouldn't throw error on shifting 0-length array for prepend -Fix: suppress error message on duplicate action and choose the app's action to keep for the actions that got moved from pcb-rnd to librnd at librnd 3.1.0; this is how librnd 3.1.1+ will work with old pcb-rnd executables -Fix: comment description of the dialog box geo change event: it means geometry _may_ have changed (gtk4 for exmaple will flood with unchanged geo on leave/enter) -Fix: set as many of the -c plugins/ before gui/export initialization as possible, but then try again the ones that didn't work after export/gui initialization: they may be export/gui conf nodes; for exmaple this allows setting opengl backend via -c even tho it is a hid_gtk_* plugin conf node -Fix: input handler makes event with hidlib (when hidlib is known) -Fix: provide a new set of key input handler calls to pass on hidlib to the event handler -Fix: DAD: wrong parameter name in comment about "tree row append under" [doc] -Add: developer doc: drawing on DAD widget and rendering path through HIDs and libs -Fix: packager's: remove $C from packages.html when not used -Fix: packager's doc: remove duplicate $PREFIC/lib/librnd3/scconfig from file listing [gtk] -Fix: remove gtkx cflags and ldflags: gtk2 plugins should use gtk2 flags, gtk4 plugins should use gtk4 flags so it is possible to compile both as plugins -Fix: hidgl_init() needs to be called on an existing gl context so it needs to wait until the widget is created -Fix: force-realize the new dialog after creation and iterate so that it is really created before returning so that the caller can manipulate widget states -Fix: dlg_attr* widget implementations should be dispatched to per-version gtk common instead of directly including global common - this gives the version dependent layer a chance to override or extend dad widget implementations without a maze of #ifdefs -Fix: hid glue: call backend uninit on pixmap uninit to get bakcend caches free'd -Fix: don't use gdk pixmap type directly in common code, gtk4 won't have it -Fix: don't call implementation-specific pixmap uninit if it is not available -Cleanup: use hidgl reset at the end of crosshair draw instead of low level gl xor mode setting -Cleanup: do not include stencil and opengl headers directly, everyhting shall go through hidgl.h -Cleanup: gtk2-gl shall not incldue opengl.h as no low level drawing is done -Cleanup: top window placement function name reflects its timing nature -Cleanup: gdkc_window_get_pointer() should have no return value (not used at caller) -Cleanup: compat API: unify calling convention on paned: pass GtkWidget and cast in compat -Cleanup: const correctness on gdk key query -Cleanup: move gtk2-only tree table keyboard workaround to the gtk2 layer so common code doesn't need #ifdefs on gtk version -Add: abstract drawing area type and class for the preview widget: in gtk2 it's a drawing area in gtk4 it's a GLarea -Add: preview opengl rendering creates new context with low level draw before first draw -Add: support for sparse grid in gtk2 and gtk4 opengl render -Add: bind gl texture free [gtk2] -Del: remove top window resize grip widget: it's not a natural gtk thing, it never made into lesstif or the gtk4 port and poll shows nobody would miss it anyway -Fix: missing include for preview context init -Fix: wrong order of hidgl init and new context calls in top window drawing area -Fix: correct "top-left" coords of pixmap rendering when flipped -Fix: flip (mirror) content of pixmap if displayed on flipped board -Fix: when rendering pixmap in composite rendering mode, also calculate and set clip -Fix: don't let global grid extend beyond the drawing area even if board is flipped -Add: uninit pixmap call that frees local transformed caches [gtk4] -Fix: do not scale color for transparency, it makes the output too light -Fix: window placement: window x;y needs to be queried separately because allocation is in window-coordinates -Fix: drawing area realized signal doesn't have a return value -Fix: make sure lib_gtk_common conf file is specified only once to avoid redundant Makefile rules generating the C version of the file -Fix: always declare gtkc_event_* -Fix: when acquiring x;y from a widget for a non-mouse event, convert surface coords into widget coords (fixes pcb-rnd "del key jumps crosshair away" bug) -Cleanup: remove xor color tuning from high level: in the vao backend we do not have real xor, only some blending cheat so color needs to be tuned locally -Cleanup: compiler warnings: missing cast on paned -Cleanup: remove scrollbar dead code -Cleanup: const correctness in css bg color set -Cleanup: realize/unrealize singals do have void * user data even if the code doesn't use it at the moment -Cleanup: rnd_gtk_tree_table_arrow_width() is gtk2-only -Cleanup: missing casts for top window custom scrollbar -Cleanup: wrong number of arguments for wt_preview singal callback -Workaround: gtk4 bug: GUI locks up if popup menu is not hidden before executing actions, e.g. in case of context menu inserting new layer -Add: call gl render -Add: port wt_preview compat to gtk_gl_area -Add: comment about popdown memleak and gui lockup -Add: top window and attribute dialog delayed placement because gtk4 is fighting it -Add: top win scrollbar widget: "jump here" when clicked outside of the slider [lesstif] -Fix: correct "top-left" coords of pixmap rendering when flipped -Fix: flip (mirror) content of pixmap if displayed on flipped board -Add: prepare the code for sparse grid (disable it for now as it's a gtk-only config node) [lib_hid_common] -Fix: preferences dialog: remove references to pcb-rnd from text printed on GUI [lib_hid_gl] -Cleanup: remove PRIM_MASK_* code from direct draw: all users got deleted between pcb-rnd 2.1.2 and 2.1.3 back in 2019 -Split: original drawing backend into draw_direct and the API to draw.h to make room for alternate implementations -Cleanup: stencil calls to stencil_gl.[ch] -Cleanup: remove low level gl calls from anywhere else but backend code -Cleanup: rename colour to color - the codebase follows US English -Cleanup: functions with no arguments should be (void) in the low level draw API -Cleanup: do not use "static inline", it's not c89; use portable RND_INLINE instead -Cleanup: rename solid_rectangle to fillrect: shorter and more consistent with the codebase -Cleanup: rename texture_quad to textrect for consistency with other rect calls -Cleanup: rename "circular" cap drawing internals to be consistent with the rest of the code base: round cap -Cleanup: move stencil op reset from gtk gl to draw low level -Clenaup: view (translate+zoom) low level gl setup from gtk side to draw backend (new opengl does not have matrix transformations) -Cleanup: abstract push/pop matrix so that gtk doesn't need to do these with gl low level -Cleanup: disable a large chunk of dead code - seemingly some old stencil/mask draw code from before layer compositing -Cleanup: report error into the message log, not to stdout, when stencil bits are not available -Add: support for sparse grid -Add: hidgl_set_color() so that hids won't need to use low level draw .h directly -Add: error backend: in case no backend is available for rendering, print an error message and provide nop for all calls (better than a segf on NULL function ptr calls) -Add: vao backend for non-compat-mode opengl (gtk4), with ES and desktop shaders -Add: infrastructure for tracing opengl calls -Add: plugin configuration for backend selection logics -Add: stencil backends; config bools for disabling each stencil backend -Add: support for texture free (releases opengl texture name) [lohgid] -Fix: make_gc call-through should pass on delegatee hid instead of loghid's own hid - most GUI HIDs will store this pointer and make a check on USE_GC() to make sure no foreign gc is used and loghid would be considered foreign [scconfig] -Fix: lib_gtk_common is not compiled anymore, disable or depend on lib_gtk2_common and lib_gtk4_common -Fix: warn about missing lesstif only if the user explicitly requested it -Fix: warn about missing libstroke only if the stroke plugin is explicitly requested by the user -Fix: refine no-system-installed-fungw warning to tell it's librnd that needs to be reconfigured -Add: refine the gtk2+gl disable warning - opengl is much less generic than it seemed when that message was originally written: every version of gtk and probably every single HID using opengl will have different dependencies -Add: more accurate gtk2 vs. gtk4 warnings and notes for all combination of explicit and implicit requests -Add: more sophisticated gtk2 vs. gtk4 conflict resolvement: if the user expressed explicit interest in either version on the command line, prefer that one instead of the standard gtk2-over-gtk4 preference -Change: switch gtk4 from disable-all to disable so --all=plugin picks it up [script] -Fix: live script error message: request the user to system-install fungw (not necessarily from source) and reconfigure librnd, not pcb-rnd librnd 3.1.0 (r33720) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: build all objects of gensexpr so that all headers can be installed -Fix: install the two missing headers in src_3rd genht -Add: install headers of gensexpr when the lib plugin is compiled [core] -Fix: typo in anyload declaration -Add: publish safe_fs rnd_file_stat() for efficient but portable access to multiple stat fields -Add: event for bootstrapping a board change from the lib (required for preferences window to mark the board changed when config on design role changes) -Add: mark some menu item fields obsolete and scheduled removal [dad] -Add: publish RND_DAD_SUBDIALOG so that dialg boxes can be build to include caller supplied subdialogs -Add: publish RND_DAD_STRING_SELECT_REGION so that dialog box code can force-select a region of string entries [diag_rnd] -Import: conf related diag actions from pcb-rnd so that all Ringdove apps have them -Import: finish importing diag actions by enabling the plugin and triggering ./configure from tab [doc] -Add: start documenting wayland specific GUI limitations [fsd] -Fix: don't segfault in shortcut saving if there's no app dotdir [gtk] -Split: win resize binding in two, because gtk2 prefers it before show() and gtk4 needs it after show() -Add: abstract GDK_MOD1_MASK: gtk4 renamed MOD1 to ALT -Add: abstract mouse cursor names (enum or char * or both) to compat layer because gtk4 does it differently -Add: internal xpm creation API to allow scaling later -Add: configuration node to control icon_scale - optional -Cleanup: replace ghid_ prefix with rnd_gtk_ -Cleanup: replace rnd_hid_gtk_ prefix with rnd_gtk_ -Cleanup: replace prefix with rnd_gtkg_ in glue API -Cleanup: remove _port_ from function names not dealing with ports directly -Cleanup: replace GHID_ prefix with RND_GTK_ -Add: extend the doc to explain the source code split in lib_gtk_common -Del: drawing_area_size_allocate_cb() - it's a noop -Del: gtkc_widget_get_preferred_height() - no caller -Add: API to abstract drawing area configure event, installed on the top window's drawing area -Cleanup: rename the dwg resize compatibility event struct to a more generic xy event since it can be reused for mouse as well -Change: xy event delivers coords in long (strictly speaking: an int can be 16 bit) -Change: do the top window scroll wheel binding through the event xy wrapper for gtk4 compatibility -Change: extend the xy event call API to xyz so that mouse scroll wheel key modifiers can be passed back -Change: do the top window drawing area enter/leave events using compat.h (for gtk4 transition) -Change: do the top window drawing area mouse motion events using compat.h (for gtk4 transition) -Cleanup: remove gdk event type dependency from rnd_gtk_note_event_location() so it would work in gtk4 too -Change: generalize drawing area event setup, preparing for gtk4 -Cleanup: switch over preview widget motion, scroll and resize from direct signal binding to compat binding for portability to gtk4 -Change: do the preview drawing area mouse press/release events using compat.h (for gtk4 transition) -Add: generalize event setup so it can be reused independently of drawing widgets -Move: resize grip into a separate function; creation to compat layer since gtk4 likely won't have it -Move: resize grip xpm from gtk-common to gtk2-common; it won't be supported in gtk4 in any form -Move: resize grip: move out from gtk2 topwin - it's a large chunk of unrelated code and may be removed later -Update: "who did what" kind of historic banner to reflect changes made for pcb-rnd -Split: low level input singal connect/disconnect from common gtk to version-specific gtk as signal handling changed in gtk4 -Cleanup: use compat layer for top window mouse press/release signals for gtk4 portability -Cleanup: figure and pass on modifier keys with mouse button press event from the compat layer so less version-dependent queries are made in gtk-common -Cleanup: use version-portable mouse press event for the get location loop -Add: compatibility layer for key press event handling -Cleanup: top window key presses go through the compatibility layer -Cleanup: use compat event bindings for location loop key events -Cleanup: switch over preview widget key handling to compat layer -Cleanup: bu_command uses the compat layer for key bindings -Split: move label wrapper for click bind to the compat layer, it works differently in gtk4 -Add: compat API for tracking window size changes instead of gtk2-only configure event -Add: compat layer for window and widget destroy and delete signals -Cleanup: use compat layer for enter event on top window drawing area -Split: keyboard translation to gtk version generic and specific halves for gtk4 porting -Cleanup: strict match event callback function signature with (void *) user data -Cleanup: reclassify private bu_menu functions to static -Del: unused rnd_gtk_create_menu_widget_path() -Del: remove accel group support from bu_menu: we are not using menu accel for hotkey handline -Del: unused action group from global gtk state (we took away hotkey handling from gtk long ago) -Cleanup: menu API: don't depend on the custom menu type, pass GtkWidget (gtk4 will use a different widget) -Cleanup: move custom menu widget implementation into the .c file to make it private and remove it from the API; gtk4 will not need it -Cleanup: move menu toggle callback to private as the glue code always called it with one specific implementation; this removes GtkAction from the API (which is really an internal implementation detail and gtk4 doesn't have) -Cleanup: bu_menu: move API doc from .c to .h -Cleanup: bu_menu: mark all private functions static -Move: bu_menu to lib_gtk2_common - it will be a totally different implementation for gtk4 -Add: abstract GdkCursorType into compat.h because it's changed in gtk4 -Move: adjustment tune from ui_zoompan to the compat layer as it has to be done differently in gtk4 -Add: abstract entry set/get into the compat layer because gtk4 changed the API -Add: abstract gtk_entry_set_width_chars() into the compat layer because gtk4 made this more complicated too -Del: gtkc_widget_add_class_style() - only the gtk3 port depended on it -Split: RND_GTK_KEY() into a gtk2 and a gtk4 variant; only gtk2 needs scconfig detection on this -Add: compatibility call for widget background color set - gtk4 doesn't have this (maybe we will need to use css) -Add: port wrap-click-bind on labels and picture boxes to use the centralized signal handler macros isntead of manual bindings so they will work with gtk4 -Cleanup: get rid of end-packing, always use start-packing (in preparation of packing abstraction needed for gtk4) -Add: compat API for packing widgets; switch over from gtk2/gtk3 API to the compat API for packing widgets -Cleanup: use compat rnd_gtk_color_t instead of GdkColor -Add: compat API for frame-set-child -Cleanup: use compat api for setting frame child when creating top window -Add: abstract creating scrolled windows (gtk2 requires 2 args, gtk4 requires no arg) -Add: abstract "get entry widget from combo-box-with-entry" into compat.h because gtk4 does this differently -Add: abstract adding a child to a scrolled window - gtk4 requires a specific call for it -Add: disable gtk2-specific tree-table workarounds for other versions of gtk -Add: abstract tree-table key press binding, event forwarding included -Fix: tree table key handler: use librnd's control key modifier to check if control is pressed for ctrl+c -Add: abstract copy-text-to-clipboard into compat -Add: abstract button child set for picture buttons -Add: abstract gtk window destroy: in gtk2 it's widget destroy, in gtk4 a specific window destroy call -Add: abstract packing paned children into compat (as gtk4 changed the functions slightly) -Add: dad label creation API because truncated/rotated labels are different in gtk4 -Add: abstract window set id to compat because gtk4 doesn't have it -Add: abstract window resize and move - gtk4 has removed this API because of wayland -Add: abstract "add main vbox in the content area of a dialog box" mechanism into compat; gtk4 needs different packing -Add: abstract show_all(), gtk4 doesn't have that -Add: abstract run dialog because gtk4 doesn't have it -Move: old, gtk2-only, native gtk file selector from gtk common to gtk2 common - gtk4 won't have a native version at all -Add: abstract widget destroy (gtk4 doesn't have it) -Add: abstract waiting for destroy events to get delivered (gtk4 removed APIs) -Cleanup: move top bar theming to compat layer, hopefully gtk4 can implement it as a no-op -Add: abstract gtk_main_quit() (gtk4 removed the API) -Add: abstract button set image (not present in gtk4) -Add: abstract top window set child (gtk4 doesn't have containers) -Cleanup: replace event box with a plain box and remove container based population of it in the top window upper bar - the event box was used earlier to a theme-update trick that was disabled years ago because of risk of unreproduciable crash -Add: abstract box that is created only for setting the background color - in gtk2 it was an event box, but there's no such thing in gtk4 -Cleanup: use compat layer for background color modification in top window alert section -Add: abstract widget set focusable -Add: abstract scrollbar creation for gtk4 API change -Add: abstract left ptr named mouse cursor -Add: abstract custom mouse cursor index-to-shape conversion because shape type differs between gtk2 and gtk4 -Cleanup: remove long unused mouse cursor name defs -Add: abstract setting custom mouse cursor call -Add: abstract widget-set-cursor -Add: abstract cursor warp - gtk4 doesn't have that API because of their bondage&discipline approach -Add: abstract wt preview redraw (invalidate) -Fix: preview widget: use compat layer for making the widget focusable -Add: abstract one more level of preview expose event as it's very different in gtk4 -Add: abstract main and quit because gtk4 had to change the API on this too -Add: abstract parse arguments callback: gtk app initialization changed in gtk4 -Add: abstract low level top window creation call, gtk4 has it differently -Add: abstract window origin query -Move: top window drawing update to compat layer as gtk4 changed render mechanism -Change: get_origin abstraction: pass on a widget, not a window, let the version-dependent backend figure how to get the window for that -Add: abstract clipboard get text, it's going to be different in gtk4 -Add: abstract beep -Add: abstract explicit iterate call -Add: abstract benchmark (gtk4 needs to do flushes differently) -Add: abstract opening popup menus -Add: abstract mod1 mask apple fix - gtk4 likely won't need it -Add: abstract checkbutton set -Add: abstract check button signal name -Add: abstract check button get -Add: abstract setting scrollbar value - gtk4 doesn't have "range" for adjustment -Add: abstract scrollbar getvalue -Cleanup: rename adj to scb because our internal API is about scrollbars, adjustment is just the gtk2 implementation -Fix: zoom adjustment compat API: expect a scrollbar because gtk4 won't have ranges -Add: workaround button minimal size and image border (in gtk4) for image buttons -Fix: when adding dock box (not frame), don't make it expand: the main drawing area should take all extra space -Fix: pack attribute dialog widgets with alignment 'start' instead of 'fill' in the non-expfill direction to match DAD alignment expectations -Move: gtk gl common code from gtk2 gl hid to lib_gtk_common so that it is available for gtk4 as well -Fix: don't include gtk2-specific header in common code -Cleanup: don't hardwire gtk2_gl where hid is easily available -Fix: remove gtk2_gl direct reference where it can be avoided -Cleanup: remove gtk2 hid hardwirings from the common gtk gl code -Move: color-to-name function from common to gtk-version-specific plugin as color type changed from gtk2 to gtk4 -Add: abstract the whole scrollbar+adjustment creation code from top-dialog - gtk4 needs it differently to work around yet another gtk4 bug -Change: generalize rnd_gtk_menu_widget() into rnd_gtk_menu_popup_pre(); in gtk4 it won't return a widget as popup widgets are not yet created -Fix: port color literal (gtk2 uses 16 bit int, gtk4 uses float 0..1) -Add: unify top window scrollbar thickness on default theme -Fix: use portable check button get active in DAD code for bools -Fix: symmetric keyboard unbinding macro for gtk4 event controller -Fix: symmetric mouse button unbinding macro for gtk4 event controller -Fix: symmetric gtk window destroy unbinding macro for gtk4 event controller -Add: set paned position on widget creation: workaround for async widget creation (gtk4) [hid] -Add: rnd_hid_fileselect(), wrapper aroud hid->fileselect that long term will obsolete hid->fileselect() -Cleanup: move hid->fileselect() description comment to rnd_hid_fileselect() and mark hid->fileselect() obsolete -Cleanup: use rnd_hid_fileselect() instead of direct hid call [hid_gtk2_gl] -Fix: uninitialize menu on exit -Del: long unused subcomposite start/end calls -Del: remove long unused dummy functions for line cap angle and faded color -Cleanup: split up main and preview expose gl code, move out the common gl context initialization code into a separate function (removes code dup) -Cleanup: remove unused variable from crosshair rendering -Change: crosshair draw function replaced interactive gl functions with vertex array -Change: draw the background using vertex array instead of interactive GL functions -Change: ghid_gl_draw_bg_solid_color() shouldn't take hidlib but x1,y1, x2,y2 because it's a generic low level gl rectangle draw function really -Split: preview expose code into a gtk2 specific and a common (zoom-setup + gl draw) part -Split: gtk2-specific code from common gtk-gl code -Add: comment to explain why ghid_gl_set_line_cap() is empty [lib_hid_common] -Import: generic part of preferences window, including the last four tabs from pcb-rnd so thye are available in all ringdove apps -Cleanup: remove the temporary Rnd_ prefixes, use rnd_ for the public API -Fix: preferences: do the initialization with 0 app specific tabs on the first call to Preferences() action if the app did not initialize - this makes it easier and safer to use preferences dialogs for simple apps that don't have specific preferences tabs [lib_hid_gl] -Change: replace GL_QUADS with GL_TRIANGLE_FAN since GL_QUADS is deprecated -Change: direct-draw a rectangle using vertex array instead of interactive GL functions -Move: expose init and Z_NEAR from lib_gtk2_gl (this is generic gl utility code useful for any gl rendering) -Move: background filled rectangle draw function from gtk2_gl -Cleanup: use line cap enum type for line end cap instead of int to make the API self-documenting -Cleanup: prefix Z_NEAR to avoid namespace pollution -Split: low level crosshair draw moved to generic gl draw code - it would be used independently of the toolkit [scconfig] -Add: include full version string in config.h so apps can print it for easier debugging -Add: explicit variable for libarchdir in librnd.mak -Add: gtk4 detection logic -Fix: don't let both gtk2 and gtk4 configured as builtin; porefer gtk2 over gtk4 for now librnd 3.0.2 (r33224) ~~~~~~~~~~~~~~~~~~~~~ [core] -Fix: don't crash on NULL string in rnd_conf_print_native_field() (ConfDump() action) [dad] -Add: HATT for subdialog: allows a DAD dialog to place a subdialog in the widget tree (subdialog typically received from the caller) -Add: assert on subdialog can not be set() -Add: new, DAD based file selection dialog (default on all HIDs) [doc] -Add: user manual for the new fsd -Add: define what exactly the CHANGE_CB does for a tree [gtk] -Cleanup: util_watch doesn't depend on in_mouse -Fix: tree table: add the tree view widget directly in the scrolled window so they can interact; this way moving the cursor will automatically update scroll -Fix: do not omit tree table when RND_HATF_SCROLL is not set (did not set wltop) -Fix: uninitialized pixels in custom mouse cursor imported from xbm smaller than 24x24 -Fix: DAD tree click release should stop gtk from double-opening the given subtree -Fix: more robust fix for subtree expand when the arrow is clicked: let gtk handle the arrow -Fix: tree table enter_cb is called only on double click or enter on a row -Add: implement the subdialog HATT -Add: implement internal DAD API for widget poke: entry selection [gtk4] -Del: comment referring to gtk3 -Del: trunc_text custom widget for gtk3 - there's a different one for gtk4 -Add: mark rules-hint not to be used with gtk4 [hid] -Fix: describe what really rnd_hid_fsd_flags_t fields do (most of them are deprecated and have no effect) -Add: mark RND_HID_FSD_IS_TEMPLATE obsolete and schedule removal -Add: fileselect descr argument is not really used at the moment -Add: API for optional DAD widget poke [hid_gtk2_gl] -Fix: gdk_color_parse() doesn't handle alpha, remove it when it is present in the input color string [lesstif] -Fix: remember if popup is open and don't lose get_xy coords (crosshair coords) so that actions triggered from the right context popup won't ask for new coords -Fix: close the popup menu when an item is selected and mark the popup inactive after the corresponding action finished -Fix: tree table: call DAD CHANGE_CB on enter pressed -Fix: tree table: double click on entry should call change cb -Fix: memory handling error on HATT_STRING set() -Add: HATT_SUBDIALOG implementation [lib_hid_common] -Import: plus and minus xpm's from pcb-rnd (layer selector) [scconfig] -Fix: do not accept lesstif installation if it doesn't have XmEXTERNAL_HIGHLIGHT (required for picture buttons and toggle buttons) [script] -Fix: use the 'selected' callback instead of the 'changed' callback for DAD_TREE() because the API around 'changed' is not clear librnd 3.0.1 (r32954) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: running 'make' in any plugin changes to the right source directory to rebuild that plugin [core] -Fix: change internal GUI HID load mechanism: do not autoload HID plugins, but try to selectively load only the ones that are requested by the user or preferences; when there is absolutely no preference, load them all, but make sure to load lesstif first because it is broken and order of -lXm and -lXt matters even in dynamic linking [dad] -Fix: coord spin: print values to at most 6 decimal digits to reduce rounding errors [doc] -Add: link edakrill from the -rnd box -Add: mention genht and fungw in INSTALL for extended user scripting [gtk_common] -Fix: implicit declaration of tool function in dlg_topwin [hid] -Fix: don't ever fall back to automatically pick a GUI hid if it's marked hidden [lib_gtk_common] -Fix: implicit declaration of tool calls in bu_menu -Add: center view after the initial zoom-to-extent [lib_hid_common] -Fix: Zoom() without arguments is "auto zoom" which should zoom to extent _and_ center (pan) [loghid] -Fix: do not let loghid hook itself (would lead to infinite loop) -Fix: sanity check on all loghid calls to avoid infinite loop (loghid calling loghid) -Fix: mark loghid's GUI sniffer hidden so it's never picked up as default/fallback HID [poly] -Fix: excess semicolon ruined strict C89 validity [scconfig] -Cleanup: const correctness: don't make char * const if it's malloc'd and free'd [tests] -Fix: don't mind if some files are already removed in make clean's make uninstall of the local librnd installation librnd 3.0.0 (r32916) ~~~~~~~~~~~~~~~~~~~~~ [action] -Add: API CHANGE: introduce RND_APP_PREFIX() for RND_ACT_FAIL() and other ACT macros to know the host application namespace prefix -Cleanup: rename from pcb_act* prefix to rnd_act* prefix for clarity and namespace [anyload] -Add: spare fields [conf] -Fix: don't crash if native node is queried before the hash is initialized -Fix: don't crash if app didn't specify user conf dir -Fix: conf ignores should be coming from the app using rnd_app.*, not hardwired in librnd -Cleanup: rename pcb_conf_merge_all to rnd_conf_merge_all to keep namespace clean -Cleanup: API CHANGE: rename RND_CFR_DEFAULTPCB to RND_CFR_DEFAULTDSG because librnd is not about PCBs only but abotu any design a CAD-like app does -Cleanup: fix up the symbol name of rnd_conf_pcb_hid_uninit() in internal public API (remove the _pcb from the middle, probably an earlier renaming error) -Add: comment to explain a status bit left-over from pcb-rnd -Add: spare fields in callback struct [core] -Fix: don't crash on action uninitialization if the action system was not initialized -Fix: API CHANGE: typo in public symbol prefix (rnd_pcphl_*) -Fix: use %lx for printing unsigned long on version mismatch error msg -Del: pcb_compat.h: it was relevant in the 2.x.x series for backward compatibility, but 3.0.0 has other breaking API changes as well -Del: pre-3.0.0 compatibility layers -Change: lib versioning scheme for detaching from pcb-rnd -Cleanup: API CHANGE: rename pcb_conf_internal to rnd_conf_internal to clean the namespace -Cleanup: rename pcb_long64_t to have rnd_ prefix -Cleanup: remove unused PCB_PACKAGE, rename PCB_VERSION and PCB_REVISION to RND_* for namespace purity (internal public API) -Cleanup: remove references to pcb from public API comments -Cleanup: prefix pcbhl_ with rnd_ for keeping the namespace clean -Cleanup: rename pcb_color_* to rnd_color_* in internal API for clarity -Cleanup: namespace: pcb_hid_dlg prefix changed to rnd -Cleanup: namespace: pcb_dad public internals to rnd_dad prefix -Cleanup: rename pcb_conf_* to rnd_conf_* for namespace cleanup -Cleanup: pcb_ -> rnd_ prefixes in actions, safe_fs, pixmap, internal hid APIs -Cleanup: pcb_ -> rnd_ prefixes in hidlib error init, macro of tools, macro of grid, macro of conf -Cleanup: PCB_ -> RND_ prefixes in PCB_OBJ_PROP -Cleanup: PCB_ -> RND_ prefixes in internal feature macro -Cleanup: rename pcb in internal APIs and comments -Cleanup: remove some pcb-rnd refs from anyload -Add: spare fields in pixmap structs, color cache and hidlib API -Add: rnd_coord_t spare to all struct with spare fields (rnd_coord_t size depends on configuration) -Add: SetGridOffs() action -Add: publish the prototype of rnd_pcbhl_conf_postproc() for pcb-rnd to be able to set the home dir -Add: install all funchash headers - pcb-rnd needs them [DAD] -Fix: don't use lable for DAD_COORD in gui actions -Cleanup: API CHANGE: make RND_DAD_CFG_NOLABEL the default and remove the feature macro -Add: spare fields in spin struct [doc] -Fix: doc link points to developer/, there's no user doc for the lib -Fix: refine the documentation on how menu file name is really used -Fix: broken link to minisvn (web svn cgi) -Fix: license title is not pcb-rnd but librnd -Del: key/menu related rules from Makefile (librnd doesn't come with a menu file) -Cleanup: remove $LP and $LC from packager's doc (we install only librnd, that's $P and $C) -Update: unix installation from pcb-rnd -Update: change README from pcb-rnd to librnd -Update: AUTHORS and INSTALL from pcb-rnd to librnd -Update: README with the dir layout -Update: html headers and main web page from pcb-rnd to librnd -Update: there's only one recommended init sequence now which is generic enough for all cases -Import: action doc from pcb-rnd for those actions that got moved from pcb-rnd to librnd -Add: document how spare fields are used to achieve better binary compatibility -Add: 'news' page -Add: test compilation result on IRIX -Add: packager's doc -Add: explain better why there's no windows binaries for the lib -Add: action/ in the dir listing -Add: logo, @ png for mail addresses -Add: change -rnd on the index page to Ringdove link collection -Add: mention ldconfig in INSTALL [gtk] -Fix: --help doesn't hardwire pcb-rnd -Cleanup: rename PCB_GTK_KEY() to RND_GTK_KEY() in the internal public API -Cleanup: rename PCB_WORKAROUND_* to RND_WORKAROUND_* (in internal public API) to clean the namespace -Cleanup: PCB_ -> RND_ prefixes in internals -Cleanup: PCB_ -> RND_ prefixes in preview widget -Cleanup: rename event coord converter macro so it doesn't have PCB in its name anymore -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_gtk) -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_conf_hid_gtk) -Cleanup: rename pcb_ -> rnd_ (file name pcb_gtk.h to rnd_gtk.h) -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb -> rnd in internal APIs -Cleanup: rename pcb -> rnd in internal APIs [hid_batch] -Fix: --help doesn't hardwire pcb-rnd -Cleanup: remove pcb terminology [hid_lesstif] -Fix: wrong FSF address in a non-unified address block in the license banner -Fix: invalid memory write on filling in lesstif command line arguments to other plugins in the wrong array -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs for motif box -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_x and pcb_y) -Cleanup: rename pcb_ -> rnd_ in internal APIs [hid_remote] -Fix: use rnd_config so that app prefix is defined for actions -Cleanup: rename pcb_ -> rnd_ in internal APIs [hidlib] -Fix: accept NULL for rnd_app.conf_internal, take it as if it was an empty string -Cleanup: code style/indentation after rnd_app refactoring -Cleanup: remove old/obsolete struct fields (now that we have a breaking API change for 3.0.0 anyway) -Change: API CHANGE: move package ver/name/url into rnd_app -Change: API CHANGE: move conf paths into rnd_app -Change: API CHANGE: move crosshair move/suspend/restore into rnd_app -Change: API CHANGE: move crosshair attached/marks draw into rnd_app -Change: API CHANGE: move expose callbacks into rnd_app -Change: API CHANGE: move conf_internal into rnd_app -Move: rnd_conf_lib_dir and rnd_conf_dot_dir into rnd_app as these need to be filled in by the app -Move: conf postproc hook to rnd_app -Add: move menu related back references to rnd_app -Add: explain where the API wrapper is called from -Add: rnd_fix_locale_and_env() is rewritten as a macro so it can perform some checks that depend on app compilation -Add: rnd_fix_locale_and_env() throws an error on coord bit configuration mismatch between librnd and the app -Add: app revision field in rnd_app for better version report -Add: spare fields in hid_attrib and main arg struct [irc] -Cleanup: namespace pollution: use rnd_ instead of pcb_ for internal action names -Cleanup: remove unnecessary pcb-rnd references, generalize for ringdove -Cleanup: pcb_ -> rnd_ prefixes -Add: when reporting version on irc, include both host application and librnd versions [lib_gensexpr] -Change: buildin by default (apps will need it) -Change: move package into core (would be alone in the lib_io package) [lib_hid_common] -Fix: wrong plugin name in cookie string -Fix: remove plugins/dialogs from the conf system on uninit -Fix: missing header for the plugins dialog -Fix: zoom with =0.1mm broke because it did not convert with unit -Cleanup: API CHANGE: rename pcb_* to rnd_* in public API -Cleanup: API CHANGE: rename PCB_GUI_NOGUI to RND_GUI_NOGUI -Cleanup: rename pcb -> rnd in internal APIs -Cleanup: const correcness -Import: online-help xpm from pcb-rnd -Import: manage plugins dialog from pcb-rnd (the plugin infra is common to all ringdove apps) -Add: xpm name resolution action so that non-gui app plugins don't need to depend on lib_hid_common for optional GUI [lib_hid_gl] -Cleanup: remove prototype for non-existent function [lib_wget] -Cleanup: API CHANGE: rename pcb_* symbols to rnd_* (to clean the namespace) -Change: buildin by default (apps will need it) -Change: user agent should be more generic: librnd-wget -Add: spare fields [menu] -Cleanup: remove pcb_ and PCB_ prefix from the internal public API in favor of rnd_ and RND_ [poly] -Cleanup: rename pcb_ prefix to rnd_ in pline support, polyarea internals and poly offs -Cleanup: rename pcb_ prefix to rnd_ for pcb_poly_ in internal APIs -Cleanup: rename prefix pcbo_ to rndo_ [safe_fs] -Fix: API CHANGE: rnd_file_readable() needs to get a rnd_hidlib_t * first arg so it can do the access checks later [scconfig] -Fix: need to install typed double linked genlist's .c file as well, as it's a template included by the app -Fix: use genlist's own make install instead of manually listing a few files -Fix: make sure all parts of genlist ends up in the .so, some apps will use them -Fix: do not let librnd-specific argument parsing leak out to apps (e.g. coord type) -Fix: do not crash when value is missing for --key=value custom args -Fix: 'make map_plugins' moves the resulting plugins.h into librnd scconfig dig - this one is not installed -Fix: do not hardwire PREFIX/lib in librnd.mak, use libarchdir -Fix: all plugins are considered hidlib plugins - if they are builtin, link them in librnd-hid.so -Fix: LIBRND_LIBDIR from config.h shall use libarchdir instead of hardwired /lib -Fix: put plugin srcs on the dep list even if they are configured with --plugin and not --buildin -Fix: LIBRND_PLUGIN dir set with full path from trunk to fix up deps -Fix: missing return value for dep resolver -Fix: install genht's ht.c, it's part of the public API -Fix: proper pointer comparison for NULL -Fix: install/uninstall rule: don't do anything manually for genlist, it's installed using its own Makefile -Fix: install doc to $(SHAREDIR)/doc/librnd3 so different versions of the lib can be installed in parallel -Fix: the postarg hook needs special casing for when running from librnd's configure, since there's no librnd install yet -Fix: move -l's at the end of the command line for building the .so files - some C compilers are sensitive to this -Fix: save NULL as empty string when saving fungw ldflags in plugin state -Cleanup: split to-be-removed header installation from core header extra installation -Cleanup: require template users to define $(LIBRND_LIBDIR) so templates can cross-call -Cleanup: remove app-specific installation paths from config.h -Cleanup: prefix BINDIR with RND_ -Cleanup: move GUI hid related detectioins from public scconfig helper API into internal - ringdove apps won't need to deal with this anymore -Cleanup: move the coord bits logics back from public API to private - apps should use whatever librnd was configured with -Cleanup: remove hooks_gui.c from the public scconfig API: only librnd shoudl deal with gui details -Cleanup: move librnd-only help from public scconfig API to local implementation -Cleanup: remove unused LIBDIR_INSTALLED from Makefile.conf template -Del: obsolete fallback def of RND_DAD_CFG_NOLABEL that already got removed -Del: hidlib property of plugins: every plugin in librnd is hidlib, and no other plugin elsewhere is, no need to track this anymore; switch over central plugin list to no-hidlib syntax -Del: remove bison/yacc/byaccic detection, librnd doesn't have any grammar -Move: librnd-specific detections back from the public API to internal - apps shouldn't try to compile librnd anymore -Change: lib plugins that are of interest for apps are default built-in -Change: API CHANGE: librnd.mak doesn't depend on LIBRND_ROOT anymore (embedded checkout of librnd not supported now) but uses LIBRND_PREFIX which it also sets -Change: do not instal anything in /etc - host app will load from its own directory -Change: SHAREDIR should be $PREFIX/share/librnd3 to avoid collision with different versions -Change: libdir is $PREFIX/lib/librnd3 to allow multiple major versions -Add: install rnd_hook_detect.h, apps' hook.c depend on it -Add: install genregex template header, required by pcb-rnd -Add: install lib-like plugin header files so application plugins can depend on them -Add: save and install $(SHAREDIR)/plugin.state, which lists the 3state of each plugin in both scconfig importable way and shell script processable comments -Add: when running for an app, calculate plugin external dependencies -Add: mark librnd plugins external in the plugin state dump -Add: generate librnd.mak to have extra -I and -L for the case librnd is installed at some non-standard path -Add: API CHANGE: rnd_hook_postarg() needs to get librnd prefix so it can load plugin states -Add: export -rdynamic for tests -Add: save fungw ldflags in plugin state - the host app needs it in case of system installed fungw -Add: calculate default confdir when not specified (API CHANGE: postarg function needs to get the application name) -Add: install cquote in libdir/scconfig/ - apps need this to compile internal version of menu and config files -Add: install sccbox (for applications without scconfig) [script] -Cleanup: pcb_ -> rnd_ prefixes [stroke] -Cleanup: rename pcb_ prefix to rnd_ in internals [tests] -Fix: librnd link test gets dummy empty internal menu so it can initialize and return 0 -Fix: librnd test: more robust uninstall -Cleanup: simplify live test code app initialization -Update: rnd_printf test doesn't need any glue layer with librnd 3.0.0 API -Add: librnd test: tweak plugin path so the test runs with all-plugin builds and by default use the batch hid [tool] -Add: spare fields [util] -Fix: pup list util for the packager's doc: use the right package dir -Import: awk_on_formats for packager's doc