|
|
commit 5af2d77b8468bc585ac350b53d704f030b74fe1d
Author: Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Mon Mar 18 23:23:49 2024 +0100
Commit: Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Mon Mar 18 23:23:49 2024 +0100
Add more public accessor methods to Fl_Grid (#937)
Some of these accessor methods should be private so they can't be used
by user code but - due to compiler issues - they must be public for
HP-UX 11.11 (for details see GitHub Issue #937).
FL/Fl_Grid.H | 36 ++++++++++++++++++++++++++++++++----
src/Fl_Grid.cxx | 12 ++++++------
2 files changed, 38 insertions(+), 10 deletions(-)
diff --git FL/Fl_Grid.H FL/Fl_Grid.H
index 7473ae0..3661977 100644
--- FL/Fl_Grid.H
+++ FL/Fl_Grid.H
@@ -151,7 +151,7 @@ public:
class Cell {
friend class Fl_Grid;
private:
- Cell *next_; // next cell in row
+ Cell *next_; // next cell in the same row
short row_; // row number
short col_; // column number
short rowspan_; // row span (1 - n)
@@ -163,7 +163,7 @@ public:
public:
- void Cell_() {
+ void Cell_() { // common initialization
next_ = NULL;
row_ = 0;
col_ = 0;
@@ -175,21 +175,49 @@ public:
align_ = 0;
}
- Cell(int row, int col) {
+ Cell(int row, int col) { // constructor
Cell_();
row_ = row;
col_ = col;
}
- Cell(Fl_Widget *w, int row, int col) {
+ Cell(Fl_Widget *w, int row, int col) { // widget assignment
Cell_();
widget_ = w;
row_ = row;
col_ = col;
}
+ /**
+ The destructor deletes the cell.
+
+ \todo Fl_Grid's cell destructor should remove the cell from the grid.
+ Currently it does nothing!
+ */
~Cell() {}
+ /**
+ Returns the next widget cell of the same row of this cell.
+ */
+ Cell *next() {
+ return next_;
+ }
+
+ /**
+ Sets the \c next pointer of a grid's cell.
+
+ \b Internal use only!
+
+ Do not use this method, it may corrupt the allocated memory.
+
+ \internal
+ This method is public due to issue #937 but should be private or
+ at least protected. For more info see GitHub issue #937.
+ */
+ void next(Cell *c) {
+ next_ = c;
+ }
+
Fl_Widget *widget() const { return widget_; }
short row() const { return row_; }
diff --git src/Fl_Grid.cxx src/Fl_Grid.cxx
index e5259be..95b1d2e 100644
--- src/Fl_Grid.cxx
+++ src/Fl_Grid.cxx
@@ -2,7 +2,7 @@
// Fl_Grid widget for the Fast Light Tool Kit (FLTK).
//
// Copyright 2021-2022 by Albrecht Schlosser.
-// Copyright 2022-2023 by Bill Spitzak and others.
+// Copyright 2022-2024 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -70,23 +70,23 @@ class Fl_Grid::Row {
void free_cells() {
Cell *cel = cells_;
while (cel) {
- Cell *next = cel->next_;
+ Cell *next = cel->next();
delete cel;
cel = next;
} // free_cells()
cells_ = 0;
}
- // Fl_Grid::Row::remove_cell() - remove all cells of column col from list of cells
+ // Fl_Grid::Row::remove_cell() - remove all cells of column col from the list of cells
void remove_cell(int col) { //
Cell *cel = cells_;
Cell *prev = 0;
while (cel) {
- Cell *next = cel->next_;
- if (cel->col_ == col) {
+ Cell *next = cel->next();
+ if (cel->col() == col) {
if (prev) {
- prev->next_ = next;
+ prev->next(next);
} else {
cells_ = next;
}
[ Direct Link to Message ] | |
|
| |