Conversation
Test Results 24 files 24 suites 4d 0h 6m 24s ⏱️ For more details on these failures, see this check. Results for commit b81948f. ♻️ This comment has been updated with latest results. |
linev
force-pushed
the
pad_interactive_next
branch
2 times, most recently
from
September 28, 2026 14:27
776886c to
21bf660
Compare
linev
marked this pull request as ready for review
September 28, 2026 14:35
linev
force-pushed
the
pad_interactive_next
branch
from
September 28, 2026 14:39
21bf660 to
8f5a118
Compare
silverweed
reviewed
Sep 30, 2026
| } | ||
|
|
||
| if (abs(px1 - px) + abs(py1 - py) < kMaxDiff) { | ||
| selectPoint = 1; |
Contributor
There was a problem hiding this comment.
Should use an enum for the bitmask
Member
Author
There was a problem hiding this comment.
It is protected member and not leaked outside.
Code will be more tricky if I only can use mask operations.
In GL case do Flush only if there are any reasons for that. And in TPad::IsAnyNeedRepaint() method take into account only new draw actions, stored XOR actions are not relevant for repaint
Instead adding temporary zoombox to list of primitives just draw interactive box on the pad - which can be rectangle or filled box. Use TPad::Interactive to store interim data for that. Tested on all platforms: gVirtualX, GL, Qt6Canvas
Use TPad::Interactive() to store all necessary intermediate values In non-opaque mode use direct gPad painting without complex logic as before. Fully avoid use of static variables now
Use for event handling in TLine and TCurlyLine
Partially reuse logic from TEllipse where similar code is used.
Avoid static methods usage, use new interactive painting
No need to handle XOR operations via painter, just use "i" paint options
Used for XOR painting of pie chart outline during moving. Now TPad method can be used which simplify drawing
Was using global pointers too much, therefore need fully redesign event loop
Use TPad::Interactive and direct TPad::PaintPolyLine with "i" option
To change line attributes in painting one better use TAttLine::ModifyOn() method
Fully avoid usage of global and static variables which are not guarantee to be set correctly. Old functionality was highly depend from call to DistanceToPrimitive. So one cannot be sure if global variables were set correctly. Instead use new `TPad::Interactive()` functionality and store all interim values there.
provide TPie::GetSumOfEntriesValues() method to be able caclualte sum of all entries. It is used in different places for angles caclulations and for printouts
Instead keeping up-to-date internal array of slices angles just calculate it every time when necessary. Simplifies complete logic around events handling and painting of TPie
Implement better TPieSlice::DistanceToPrimitive It returns 0 if wider part of slice is selected Allows to activate context menu for the slice correctly. At the same correctly redirect event execution from TPieSlice to TPie where all sectors/slices handled
Most of calculation are uses this therefore convert to it
There are minimal rounding changes after redesign of TPie
linev
force-pushed
the
pad_interactive_next
branch
from
September 30, 2026 16:21
0db264f to
b81948f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Using new interactive functionality of TPad, one can simplify logic of many
ExecuteEventmethods:TVirtualPadPainter(XOR operations)Use
TBoxInteractivefor more classes, introduceTLineInteractivefor several use-casesRedesign interactivity and painting in
TPieclass. Fully avoid global and static variables,do not rely on sequence of calls for
ExecuteEventorDistanceToPrimitive.Adjust interactivity in
THistPainterfor zooming - also use new functionality there.Now all classes in
graf2d/grafwill use new interactivity logic.