Commit Graph

550 Commits

Author SHA1 Message Date
Dimitrie O. Paun c6e988eaa0 Fix custom draw for item 0. 2003-05-11 03:29:25 +00:00
Adam Gundy 06d610ec9b Check the mask flags in the item structure to determine how much
memory to read/write.
2003-05-02 20:14:33 +00:00
Dimitrie O. Paun dfdeaaf922 Generate custom draw notifications for ownerdraw listviews (based on a
patch by Maxime Bellengé).
Reorganize the custom draw code for better reuse.
2003-04-30 00:49:44 +00:00
Dimitrie O. Paun a50bd8117f Send LVN_ODCACHEHINT notification for LVS_OWNERDATA style in all modes
(based on a patch by Vitaliy Margolen).
2003-03-24 19:28:50 +00:00
Vitaliy Margolen eded087e4e Changes for Icon and SmallIcon modes:
- fix typo causing wrong scroll boundaries
 - reverse mouse wheel scroll directions
 - fix navigation with keyboard when auto arranged
2003-03-15 00:05:46 +00:00
Dimitrie O. Paun d39af613a3 Spacing information is signed (debugged and fixed by Vitaliy
Margolen).
Decode spacing information in the window procedure.
Some spelling fixes.
2003-03-14 22:58:22 +00:00
Adam Gundy 64eff97f51 When shifting the list's indices, we must not send notify messages if
we have to refocus. Item modification handlers are not supposed to be
called here.
2003-03-07 20:35:30 +00:00
Duane Clark 65a9f4daac Support the undocumented behavior of deleting column zero. 2003-02-14 23:31:45 +00:00
Dimitrie O. Paun 00ccf38987 Correctly remember the first paint event, but delay item metrics
calculation until we actually have some items.
2003-02-14 19:24:11 +00:00
Gerald Pfeifer 820157b836 Avoid warnings caused by assert(...). 2003-02-12 21:28:04 +00:00
Dimitrie O. Paun 15e0657f6b Compute matrix of first paint when we actually have some items
(problem first spotted & debugged by Duane Clark).
2003-02-11 22:17:31 +00:00
Alexandre Julliard 43690e9e47 Removed no longer needed inclusion of heap.h. 2003-01-24 00:54:58 +00:00
Francois Gouget 9b0b1e078a Remove (POINTER)NULL casts. 2003-01-14 23:43:41 +00:00
Dan Kegel 0fd521fee3 Change RECT to use LONG to match win32 standard headers and fix format
strings to use %ld for RECT elements.
2003-01-08 21:09:25 +00:00
Chris Morgan fa93b446d0 Listview should scroll by at least one column, fixes bug where item
being wider than listview prevents any scrolling from occuring.  Added
printing of the scroll code text during tracing of scroll functions.
2003-01-03 03:04:22 +00:00
Duane Clark 3d2e380244 Report mode padding tweaks.
Fix to LISTVIEW_GetSubItemRect.
2002-12-23 02:02:06 +00:00
Dimitrie O. Paun 5720007370 - Plug a bunch of memory leaks.
- Make ranges_destroy behave more like free().
- Fix messed up indentation from tabs set to 4 chars.
- Updated the documentation.
2002-12-10 19:07:27 +00:00
Francois Gouget d2667a4ce3 Removed unnecessary HANDLE typecasts. 2002-12-02 18:10:57 +00:00
Aric Stewart eb56d81956 LVN_GETDISPINFO seems to always be Ansi. 2002-11-25 01:11:11 +00:00
Alexandre Julliard bb0fd59674 Setting the horizontal scrollbar can change the values for the
vertical one so make sure we compute them separately.
2002-11-18 19:51:11 +00:00
Dimitrie O. Paun add721769b Do not draw the text of the item being edited. 2002-11-06 22:32:00 +00:00
Dimitrie O. Paun c6ff9064d0 Fix the 'jumping selection' bug (#1108).
Misc small cleanups.
2002-11-06 22:01:56 +00:00
Dimitrie O. Paun 40dab82a13 Append columns with large column indices. 2002-10-31 22:01:33 +00:00
Rein Klazes d9310e76c4 Fix for listview wheelmouse message handling. 2002-10-29 23:08:33 +00:00
Alexandre Julliard 26a470e1f0 set_main_item: ignore meaningless bits in stateMask for LVS_OWNERDATA
instead of failing.
2002-10-28 21:21:42 +00:00
Dimitrie O. Paun 2d2e6acbbd We should always have a main item in report mode. 2002-10-28 20:40:21 +00:00
Dimitrie O. Paun 7e12841030 Properly fill lParam in NMLISTVIEW. 2002-10-28 20:38:39 +00:00
Dimitrie O. Paun 173d40a493 Fix crash-inducing typo/thinko. 2002-10-28 20:38:03 +00:00
Dimitrie O. Paun 5574e750c5 Mark immutable objects as const. Fix inconsistent *-style. 2002-10-28 20:37:28 +00:00
Dimitrie O. Paun f5221578f6 Add LVHITTESTINFO debug helper. More tracing. 2002-10-28 20:36:52 +00:00
Dimitrie O. Paun 17b97eb929 Despite what the docs say, we have to invalidate the list on
WM_SETREDRAW(TRUE).
2002-10-28 20:36:16 +00:00
Dimitrie O. Paun ccc8f7dca9 Eliminate flicker when resizing, docs updates. 2002-10-28 20:35:44 +00:00
Dimitrie O. Paun 19a1c42386 Cleanup, and simplification of UpdateSize. 2002-10-28 20:35:09 +00:00
Dimitrie O. Paun 9a9fcab763 Handle focus item properly in SetItemCount. 2002-10-28 20:34:34 +00:00
Dimitrie O. Paun f9e70d8b81 Remove only the necessary selections when setting the item count. 2002-10-28 20:34:00 +00:00
Dimitrie O. Paun 28a2f193a3 Rewrite of the SetItemCount: bugs got squashed,
LVSICF_{NOSCROLL,NOINVALIDATEALL} implemented.
2002-10-28 20:33:18 +00:00
Andreas Mohr 6e256c72fe - fix some pselling
- enhance some TRACEs
2002-10-25 19:09:02 +00:00
Dimitrie O. Paun 5a11b009f1 Do not invalidate list on WM_SETREDRAW.
Update size info even if redrawing is disabled.
Trivial cleanups, and some tracing.
2002-10-25 03:21:25 +00:00
Dimitrie O. Paun 221398344e We can avoid flicker on column resize only if it's left align. 2002-10-25 03:20:43 +00:00
Dimitrie O. Paun fa5b29acd3 Always draw the main item in full row select. 2002-10-25 03:20:03 +00:00
Dimitrie O. Paun f7441d00ed Use iterators to render over the columns, in report mode. 2002-10-25 03:19:24 +00:00
Dimitrie O. Paun 863d6a87f5 Small iterator-over-range[s] cleanup. 2002-10-25 03:18:47 +00:00
Dimitrie O. Paun 83679e6b88 Eliminate most of the flicker when resizing columns.
More debug tracing.
2002-10-25 03:18:07 +00:00
Dimitrie O. Paun ab97b86902 Fix subitem background color in full row select. 2002-10-25 03:17:36 +00:00
Dimitrie O. Paun b14c82a8b8 We should callback for inexistent subitems.
Do not store callback items for subitems, even if we're asked to.
Small cleanup.
2002-10-25 03:17:04 +00:00
Dimitrie O. Paun 16db256923 Fix crash when computing the item width of a report with no columns.
Override custom draw bkgnd color for selection items.
Fill background for all items that have a bkgnd colour.
2002-10-25 03:16:26 +00:00
Dimitrie O. Paun 3520c83275 Keep autoarranging items until one is moved. 2002-10-25 03:15:51 +00:00
Dimitrie O. Paun 01e82f2b27 Abstract autoarranging decision to a helper function. 2002-10-25 03:15:18 +00:00
Dimitrie O. Paun 5b8361463d Do not do screen work if refreshing is disabled.
Reimplement SetRedraw to cope with the changes.
2002-10-25 03:14:44 +00:00
Dimitrie O. Paun c4e45d7f94 Rewrite the UpdateScroll function: simpler, faster.
Add debugging helper for SCROLLINFO.
Fix potential bug in debugging helpers.
2002-10-25 03:14:06 +00:00
Dimitrie O. Paun 89ab25a737 Avoid division by 0 by initializing the item size in on creation.
Rename update_icon_size to set_icon_size, fix parameters order.
Assorted cleanups.
2002-10-23 23:32:50 +00:00
Dimitrie O. Paun b894605987 Fix thinko that slipped in with the prev patch (reenables refresh).
Mark a few things that needs looking at.
Small cleanup.
2002-10-23 22:32:25 +00:00
Dimitrie O. Paun 9cdcd44eaa Do not invalidate the window before the first paint job.
Assorted cleanups.
2002-10-23 22:31:47 +00:00
Dimitrie O. Paun f7051c88ae Use InvalidateItem instead of explicit InvalidateRect, it is cleaner,
and faster when redraw is disabled.
2002-10-23 22:31:13 +00:00
Dimitrie O. Paun c093196c05 Transform the invalidation macros to proper functions. 2002-10-23 22:30:39 +00:00
Dimitrie O. Paun bf46fab650 Delay some size computations until after first paint. 2002-10-23 22:29:47 +00:00
Rein Klazes 7d9b04dbe2 Reorganize the item size calculation (a bit simpler, and faster). 2002-10-23 22:28:44 +00:00
Rein Klazes 1fd077939f Search through all items when LISTVIEW_FindItemW is called with
LVFI_PARAM flag.
2002-10-23 22:28:03 +00:00
Dimitrie O. Paun bf761a331c Delete the items if we actually own them. 2002-10-23 22:25:42 +00:00
Dimitrie O. Paun 8f15b6e6b3 Do not callback to the parent for lParam when in LVS_OWNERDATA.
Docs update.
2002-10-23 22:25:10 +00:00
Michael Stefaniuc 353529b2c8 - fix the "int format, HANDLE arg" type of warnings for comctl32
- compile the comctl32 dll with -DSTRICT
2002-10-23 22:19:10 +00:00
Michael Stefaniuc 85e40cf37a Add casts to compile with -DSTRICT. 2002-10-23 20:58:33 +00:00
Dimitrie O. Paun 5acd96bb4e Do not crash if callback text is not filled (behave like native).
Render report mode from top to bottom (easier on the eye).
Docs updates, type fixes, more traces.
2002-10-23 20:57:13 +00:00
Dimitrie O. Paun 6608328f76 Collect all bugs, missing features, etc in the header doc.
Minor cleanups.
2002-10-23 20:56:30 +00:00
Dimitrie O. Paun 9ff0da09ff Do not autoarrange if we insert/delete from the end of the list. 2002-10-23 20:55:05 +00:00
Dimitrie O. Paun c5da549d10 Rework SetItemPosition, bunch of bugs squashed in the process.
Complete icon alignment rewrite: cleaner, incremental, etc.
Completely avoid aligning all icons on every insert
  - icon placement is incrementally computed now: it's fast.
Small cleanups, docs update, etc.
2002-10-23 20:54:23 +00:00
Dimitrie O. Paun c5e2731939 Rename LISTVIEW_ITEM to ITEM_INFO for consistency.
Rename LISTVIEW_SUBITEM to SUBITEM_INFO for same reason.
Fix type in comment spotted by Bobby Bingham.
2002-10-23 20:53:42 +00:00
Patrik Stridvall cf07e10017 Don't use wine/unicode.h in the header files, include it directly
where needed instead.
2002-10-23 20:20:59 +00:00
Dimitrie O. Paun a87b685350 Do not send uninitialized lParams on notification msgs (found by Rein
Klazes <rklazes@xs4all.nl>).
2002-10-21 19:46:46 +00:00
Dimitrie O. Paun 6deae0b86d Complete rewrite of the rcView implementation.
Lots of bugs fixed in rcView computation.
Assorted cleanups, and simplifications.
2002-10-21 19:46:08 +00:00
Dimitrie O. Paun c9e0133357 Split ranges_destroy in ranges_clear, and ranges_destroy.
Rewrite DeleteAllItems, for cleaner, faster, more correct code.
2002-10-21 19:45:29 +00:00
Dimitrie O. Paun 62f4c61d22 Updated header documentation to the latest, and greatest. 2002-10-21 19:44:51 +00:00
Dimitrie O. Paun 06701fb09e Optimize invalidation on insert.
Share the invalidation code between {Delete,Insert}Item.
2002-10-21 19:44:18 +00:00
Dimitrie O. Paun f18e271bff Rewrite DeleteItemT: cleaner, a lot faster.
Number of bug were fixed.
The minimum possible is redrawn.
2002-10-21 19:43:37 +00:00
Dimitrie O. Paun c859242ac8 Implement most of LVM_ARRANGE.
Make use of it, where it was appropriate.
Use infoPtr->dwStyle directly, in most places.
Assorted cleanups.
2002-10-21 19:43:03 +00:00
Dimitrie O. Paun 56c17651a0 Proper (type wise) return types. 2002-10-21 19:42:30 +00:00
Dimitrie O. Paun 214c721160 Reorganize header notifications.
Support notifications that don't have embedded size info.
Invalidate columns on format change (if needed).
Assorted cleanups.
2002-10-21 19:41:56 +00:00
Dimitrie O. Paun 713d0a061f Crash on internal NULL pointers, don't test all over the place. 2002-10-21 19:41:00 +00:00
Dimitrie O. Paun e37692bd33 When removing focus, no need to go through all elements. 2002-10-21 19:40:26 +00:00
Dimitrie O. Paun feb326118f Fix colors for selected items in full row select mode.
Fix bug caused by use of uninitialized state.
2002-10-21 19:39:45 +00:00
Dimitrie O. Paun 7c26e53ac0 Fix computation of subitem box, when invalidating it. 2002-10-21 19:34:38 +00:00
Dimitrie O. Paun 2223014df3 Assert on inconsistent range list states.
Various code cleanups, few potential bugs fixed.
2002-10-21 19:33:59 +00:00
Dimitrie O. Paun 074e2b4caa Do not grow the item list to arbritary index: if requested index is
larger than current count, just append.
Miscellaneous cleanups.
2002-10-21 19:33:14 +00:00
Dimitrie O. Paun be0641face SetColumnWidth rewrite: simpler, cleaner code. Bugs squashed. 2002-10-21 19:32:38 +00:00
Dimitrie O. Paun bf965278b5 Handle generic column width changes.
Fix bug in SetColumnT which rendered it unusable.
Column code cleanup.
2002-10-21 19:32:07 +00:00
Dimitrie O. Paun 0acaf0e961 Assert on internal invariants, rather than fail gracefully. 2002-10-21 19:31:34 +00:00
Dimitrie O. Paun 88c26b9c01 More docs compliant alignment handling for subitems. 2002-10-21 19:31:01 +00:00
Dimitrie O. Paun 0def1dd4e4 Do not create a range list for an empty range. 2002-10-19 19:26:17 +00:00
Dimitrie O. Paun 0613b7212a Store the entire format bitmap in the column info.
Rewrite GetColumnT to take advantage of that.
Related cleanups, and simplifications.
2002-10-19 19:25:41 +00:00
Dimitrie O. Paun 569de03864 Column zero has the image enabled always, irrespective of format. 2002-10-19 19:25:01 +00:00
Dimitrie O. Paun 231e9ef25b Unify {Insert,Set}ColumnT as much as possible.
Fix a bunch of problems in SetColumnT.
2002-10-19 19:24:24 +00:00
Dimitrie O. Paun 3893cb7fb2 Fix function header documentation. 2002-10-19 19:23:31 +00:00
Dimitrie O. Paun e877b77a9d Better report mode.
Use the new column information to simplify, and speed up the code.
Enable support for images in subitems (in LVS_REPORT mode).
2002-10-19 19:20:35 +00:00
Dimitrie O. Paun 0dbab63fa6 When deleting an item, remove selection, don't add it! 2002-10-19 00:59:34 +00:00
Dimitrie O. Paun 0ba3dc7589 More traces to help us make sense of the output.
Faster, cleaner ranges_{add,del}.
2002-10-19 00:21:02 +00:00
Dimitrie O. Paun c79eb2de5f Fix ranges insertion bug (specify DPAS_SORTED when searching).
Add a lot of assert-ed consistency checks.
Add bunch of trace messages.
2002-10-19 00:20:21 +00:00
Dimitrie O. Paun a2dd8ecc33 Inspect style bits independently on style change. 2002-10-19 00:19:28 +00:00
Dimitrie O. Paun b50692ee82 Rewrite StyleChanged procedure
o some bugs have been fixed
  o cleaner, simpler code
Fix some corner case, icon size computation bugs.
Assorted docs updates.
2002-10-19 00:18:48 +00:00
Dimitrie O. Paun 323f9c23f0 Keep track of per-column information inside the listview.
Cache header rectangles.
Used the cached info instead of calling to the header each time.
Update the listview as we track column width changes.
Unify column handling between {Insert,Delete}Column, and width
changes.
Simplify RefreshReport, by using the new column info.
2002-10-19 00:18:11 +00:00
Dimitrie O. Paun a72e9f617e Do not query items that are just being inserted. 2002-10-19 00:17:24 +00:00
Dimitrie O. Paun f8f559fa3c Reorganize things a bit so that we no longer need the 'valid' flag on
each item.
Small comments update.
2002-10-19 00:16:37 +00:00
Dimitrie O. Paun c18c7332b8 Instrument SetItemT to change only _one_ item at a time. That is, if
we have to change focus, we call it recursively to first remove the
focus from the item that has it. This allows simpler, and more correct
invalidation handling.
2002-10-17 21:55:41 +00:00
Dimitrie O. Paun 8f38417376 Unify set_{owner,main}_item functions.
Fix {old,new}state and lParam reporting in LVN_ITEMCHANG{ING,ED}.
Fix sanity check conditions for LVS_OWNERDATA.
2002-10-17 21:54:57 +00:00
Dimitrie O. Paun 96dca36cc8 More, better tracing to help nail down some crashes.
Fix typo in GetItemT (found, and fixed by Huw Davies).
Exit right away from GetItemT if nothing is asked (mask == 0).
Assorted code cleanups.
2002-10-17 21:53:56 +00:00
Dimitrie O. Paun 305fb4c3dd Deal with sparsely populated listviews.
Crash on internal corruption.
2002-10-17 21:38:21 +00:00
Dimitrie O. Paun ef4a6fc7e5 Add ability to create an iterator over a range list.
Fix memory leak when destroying ranges.
Add function that will to a 'deep' clone of a range list.
Add function that will subtract a range list from another.
Do not crash on NULL ranges (similar in spirit to HDPAs).
Fancy deselection routines uses the above infrastructure to deselect
the minimum possible.
Modify SetGroupSelection to take advantage of all this new
infrastructure, to avoid flicker on selection extension.
2002-10-17 21:37:24 +00:00
Dimitrie O. Paun fa81ec674b Change the definition of ranges to exclude the upper bound. 2002-10-17 21:36:29 +00:00
Dimitrie O. Paun bac35001fe Handle range tracing in a consistent fashion. 2002-10-17 21:35:47 +00:00
Dimitrie O. Paun 58b2ad925b Remove dated comments. 2002-10-17 21:35:08 +00:00
Dimitrie O. Paun 66dd824dbc Better encapsulation of the ranges concept. 2002-10-17 21:34:15 +00:00
Dimitrie O. Paun be8189bd9c Notification code cleanup, more traces, etc. 2002-10-17 01:20:18 +00:00
Dimitrie O. Paun 89eb8fdba3 We need to provide focus info always in ICON mode (spotted by Huw
Davies).
2002-10-16 19:57:31 +00:00
Mike McCormack bcfffe7b08 Duplicate selected items list in LISTVIEW_RemoveAllSelections to
prevent infinite loops.
2002-10-16 19:56:06 +00:00
Dimitrie O. Paun 3dd4dabffb Remember the global colors in custom draw mode. 2002-10-16 19:05:43 +00:00
Dimitrie O. Paun ef9adbb6f5 Compute only the old state that we're gonna look at. 2002-10-16 19:05:02 +00:00
Dimitrie O. Paun 8d2f7224f1 Instrument SetItemT to avoid repainting if nothing changed.
Teach RemoveAllSelections to skip an item, so we can eliminate the
flicker when we click on a selected item.
2002-10-16 19:04:07 +00:00
Dimitrie O. Paun 3c9591b413 Fix bug in edit label when sending the text to the app.
Cleanup the handling of nEditLabelItem.
2002-10-16 19:03:25 +00:00
Dimitrie O. Paun 07a6a3975a Edit label cleanup. 2002-10-16 19:02:32 +00:00
Dimitrie O. Paun 6b4a11af0a Fix bug in ranges_shift which was corrupting selections.
Fix click notification (found and fixed by Alexandre Julliard).
Fix bug in setting item's state (some selection changes were lost).
Simplify selection code substantially.
Add a lot of debug tracing.
2002-10-16 19:01:38 +00:00
Dimitrie O. Paun db14dbf12b Fix iterator creation for LVS_LIST mode.
Do not update the infoPtr->nItemWidth in set_main_item.
Better handling of text bk colour in custom draw.
Rename GetItemListOrigin to GetItemOrigin.
A bunch of code cleanups, simplifications, etc.
2002-10-15 21:08:09 +00:00
Dimitrie O. Paun 17dce17a58 No longer compute the ill-defined bounds in GetItemMetrics.
Fix a bunch of bug in subitem metrics computation.
Properly implement GetSubItemRect in terms of GetItemMetrics.
Documentation updates, and code cleanups.
2002-10-15 21:07:01 +00:00
Dimitrie O. Paun 3a5105c957 Teach GetItemMetrics to deal with subitems in report mode as well.
Unify Draw{,Sub}Item, simplify RefreshReport.
2002-10-15 21:06:14 +00:00
Dimitrie O. Paun f378bbd5a5 Fix iterator creation for LVS_LIST mode.
Use assert() instead of hand-made hack.
2002-10-15 21:05:29 +00:00
Dimitrie O. Paun 3baa344a43 Fix iterators to properly deal with LVS_{,SMALL}ICON modes.
Unify the Refresh{List,Icon} functions.
Simplify HitTest to make full use of the iterators.
Fix selection bounds in HitTest.
Avoid empty default to silence warning in gcc 3.2.
2002-10-15 21:03:10 +00:00
Dimitrie O. Paun 50b4688c7e Iterator updates:
Add the notion of a special item which sits at the start of the
   list.
   Add the ability to iterate in both directions through the list.
   Document the iterator interface.
   Remove iterator_visibleitems.
   Rename iterator_clippeditems to iterator_visibleitems for
   consistency.
Use the new bidirectionality to paint the items in decreasing order.
2002-10-15 21:01:57 +00:00
Dimitrie O. Paun 00ea0868ba Rename GetItemHeight to CalculateMaxHeight, for consistency
Fix usage of nItemWidth vs. iconSpacing.cx
Misc cleanups.
2002-10-11 23:34:32 +00:00
Dimitrie O. Paun a1ca0122b9 Use the item box rather than the bounds when invalidating.
Implement 'bPartial' in EnsureVisible.
2002-10-11 23:33:25 +00:00
Dimitrie O. Paun ed29ffdea4 Unify DrawLargeItem with DrawItem. 2002-10-11 18:47:03 +00:00
Dimitrie O. Paun 0b93d5c4c5 Use GetItemMetrics instead of GetItemMeasures.
Remove GetItemMeasures.
Add GetItemBox which only returns the boundary of the item.
2002-10-11 18:46:21 +00:00
Dimitrie O. Paun ac756afcc2 Be real tough on internal programming errors. 2002-10-11 18:00:28 +00:00
Dimitrie O. Paun dda1e31ce7 Remove support for owner drawn listviews in non-REPORT mode. We need
to do this since Windows supports owner draw *only* in report mode,
and hence apps are not prepared to handle drawing in other modes.
2002-10-11 17:59:39 +00:00
Dimitrie O. Paun 4150f31f58 Use GetItemMetrics instead of GetItemMeasures when drawing. 2002-10-11 17:58:56 +00:00
Dimitrie O. Paun 01b5226508 Make use of the new GetItemMetrics in HitTest, to avoid code
duplication.
2002-10-11 17:58:11 +00:00
Dimitrie O. Paun f1f447931e Separate item metrics computation from positioning
Add support for computing state icon metrics.
2002-10-11 17:57:27 +00:00
Alexandre Julliard 5feaff534b LVS_OWNERDRAWFIXED should only take effect in REPORT mode. 2002-10-11 04:19:20 +00:00
Dimitrie O. Paun 1c6c29e313 Fix drawing bug introduced with the custom notification
reorganization.
2002-10-10 22:57:45 +00:00
Dimitrie O. Paun 01dbe3999e Simplify the report mode, and item drawing considerably.
Fix full row select in report mode.
2002-10-10 22:55:21 +00:00
Dimitrie O. Paun ffd4bd37d0 Handle custom draw notifications properly.
Various cleanups, and simplifications.
2002-10-10 22:54:06 +00:00
Dimitrie O. Paun d2d4baf96b Remove superfluous abstractions which make the code harder to
understand.
2002-10-10 22:52:56 +00:00
Dimitrie O. Paun 6d6be0e1d4 Move the custom draw notifications into the Draw.*Item functions. 2002-10-10 22:52:12 +00:00
Dimitrie O. Paun a994fb8135 Move the custom draw item notifications down into DrawLargeItem. 2002-10-10 22:51:27 +00:00
Dimitrie O. Paun 7ac890984d Fix silly redraw bug introduced in previous patch.
Tidy up, and simplify large item drawing.
2002-10-10 22:50:49 +00:00
Dimitrie O. Paun 50ed9b9962 Implement WM_SETREDRAW properly. 2002-10-10 22:50:09 +00:00
Dimitrie O. Paun 12dca97b9d Rework the mouse click notifications
Assorted cleanups, and simplifications.
2002-10-10 22:49:29 +00:00
Dimitrie O. Paun 1094c63c0e Use (semi)standard HitTest, rather then our own little invention.
Get rid of GetItemAtPt.
Fix HitTest but in REPORT mode.
2002-10-10 22:48:36 +00:00
Michael Stefaniuc bc54d78532 - change the internal functions in windows/cursoricon.c to use 32bit
handles
- move the implementation of ExtractAssociatedIcon16 to
  ExtractAssociatedIconA
- convert HICON to a void*
- fixed some handle conversions that happened to be in the way while
  doing the above
2002-10-10 21:22:09 +00:00
Paul Rupe 8b3da5e3ba Scroll the listview when doing multiple selections. 2002-10-10 18:56:50 +00:00
Dimitrie O. Paun 05b4a09357 Narrow down the items we iterate over in LIST, and REPORT mode.
Fix a Client --> List coordinate transformations in FindItem.
Fix bug in HitItem (in LIST and REPORT mode).
Avoid the last bit of drawing in REPORT mode.
2002-10-10 03:13:14 +00:00
Dimitrie O. Paun 9d678ff740 Draw _only_ the items that are invalidated.
Fix serious bug when deleting from a range.
Pass in a range to the ranges_{add,del} functions.
Tidy up the RefreshIcon function.
Assorted cleanups.
2002-10-10 03:12:05 +00:00
Dimitrie O. Paun 0295e4fceb Reimplement FindItem (cleaner, faster, more compliant with MSDN). 2002-10-10 03:10:20 +00:00
Dimitrie O. Paun 1313431b1b Rewrite HitTest to make it pretty, and very fast. 2002-10-10 03:08:45 +00:00
Dimitrie O. Paun a80ced02e9 Introduce the notion of item iterators, and use them to clean up code. 2002-10-10 03:07:04 +00:00
Dimitrie O. Paun 00e3435f54 Separate range manipulation functions from selection ranges. 2002-10-10 03:05:28 +00:00
Dimitrie O. Paun 764607d931 Fix large item label calculation when not focused.
Fancy focus rectangle handling.
2002-10-10 03:04:34 +00:00
Dimitrie O. Paun b2056c22b5 Fix focus handling when deleting items, or changing modes.
Better label rect calculation in ICON mode.
2002-10-10 03:03:39 +00:00
Dimitrie O. Paun c95b2a0202 Fix large item handling focus in ICON mode. 2002-10-10 03:02:30 +00:00
Dimitrie O. Paun bbf878ded6 No need to go through the heavy duty rect computation when in OWNERDRAW. 2002-10-10 03:01:10 +00:00
Dimitrie O. Paun a625dd394d Factor out owner draw code, so that it works for all modes.
Documentation updates.
2002-10-10 02:59:34 +00:00
Dimitrie O. Paun b8d5715bc1 Factor out the computation of item position, so it can be used
independently of the rectangles.
2002-10-10 02:58:47 +00:00
Dimitrie O. Paun f29d0ce05b Unify LISTVIEW_UpdateLargeItemLabelRect, and GetItemMeasures.
Optimize GetItemMeasures to the max.
Centralize the DrawText's DT_* flags.
2002-10-10 02:57:50 +00:00
Dimitrie O. Paun 1fc91d2d65 Get rid of 'goto's in GetItemMeasures.
Move LISTVIEW_UpdateLargeItemLabelRect close to where it's used.
2002-10-10 02:56:57 +00:00
Dimitrie O. Paun cf4670cba2 Fix braino in calculation of LVS_LIST origin.
Invalidate the entire window when we are invalidating the list.
2002-10-10 02:56:13 +00:00
Dimitrie O. Paun 74e43dd023 Fixed bug that caused item texts to be empty. 2002-10-08 01:55:32 +00:00
Dimitrie O. Paun 783bab61de Fix nasty bug generated by UINT vs. INT (resulted in bogus
comparisons).
Fix LVIR_SELECTBOUNDS computation, for REPORT mode.
Fix dependency generation in GetItemMeasures.
Fix rectangle computation for REPORT mode (corner case problems).
Better debug messages.
Assorted cleanups.
2002-10-07 22:43:42 +00:00
Dimitrie O. Paun 97ffbfad72 Cleaned up the rectangle handling, and fixed numerous bugs in
rectangle calculations.
2002-10-07 22:42:44 +00:00
Paul Rupe 1446a06ce9 Fix inaccurate listview scrolling with PgUp/Down and Home/End keys. 2002-10-07 21:44:01 +00:00
Dimitrie O. Paun 3ac601d52b Fix silly bug in SetItemPosition (we should set it, not create a new
one).
2002-10-07 18:51:52 +00:00
Dimitrie O. Paun b9cacc438a Maintain the item position in {,SMALL}ICON mode separataly from the
item, so that we have it even in LVS_OWNERDATA.
2002-10-07 18:50:21 +00:00
Dimitrie O. Paun 6cfd83b985 Cleanup the SetItemPosition interface. 2002-10-07 18:48:47 +00:00
Dimitrie O. Paun 7f77992091 Remove the COUNT_OF macro.
Indentation fixes, and minor cleanups to notify_dispinfoT.
2002-10-07 18:44:55 +00:00
Dimitrie O. Paun 6a6310d099 Fixes bug which rendered virtual listboxes always empty.
Smarter focus rectangle drawing.
Fix focus handling when we add/delete a column.
Fix silly bug in GetSubItemRect.
Elimiante flicker in Report mode.
2002-10-07 18:43:49 +00:00
Dimitrie O. Paun 95f2799537 Cleanup, and clarify the handling of the various rectangles.
Fix handling of large items in ICON mode.
Fix calculation of LVIR_SELECTBOUNDS.
Various cleanups, and simplifications.
2002-10-07 18:42:52 +00:00
Dimitrie O. Paun 914aac36b5 Cleanup of the way we maintain/lookup the item count.
Rename GetItemWidth to CalculateMaxWidth.
Misc trivial changes.
2002-10-07 18:41:00 +00:00
Dimitrie O. Paun 1c7bf6229f Fix focus handling for owner draw listviews. 2002-10-07 18:38:17 +00:00
Dimitrie O. Paun d308a8d4fe Fix potential bug in RemoveAllItems.
Fix report-mode ONWERDRAW bug (with help from Alexandre Julliard).
Fix multiple selection bug (in report and list mode).
Remove code duplication for removing selections.
2002-10-07 18:36:34 +00:00
Dimitrie O. Paun 769f6a8c0f Reimplement GetSubItemRect, subitem setting optimizations. 2002-10-05 18:05:27 +00:00
Dimitrie O. Paun 76f397e3a1 Fix bug in OWNERDATA selection handling.
Fix critical performance bug in GetSelectedCount.
Fix critical performance bug in SetGroupSelection.
Fix problems for OWNERDRAW report.
Fix hidden/latent bugs in state handling.
Better debug messages.
2002-10-05 18:04:30 +00:00
Dimitrie O. Paun f645727afe Fix onwer-draw REPORT for broken apps. 2002-10-05 18:02:54 +00:00
Dimitrie O. Paun d2b526ed33 Streamline the GetItem usage.
Fix fatal bug for ICON mode in LVS_ONWERDATA.
Documentation updates, marking places which need work.
2002-10-05 17:46:30 +00:00
Dimitrie O. Paun 86e92428fb Fix condition so we actually store the state in virtual listviews.
Assorted code cleanups.
2002-10-05 17:44:51 +00:00
Dimitrie O. Paun 3547087c70 - Effective optimization in GetNextItem (speeds up Xnews).
- Misc cleanups.
2002-10-05 17:43:26 +00:00
Dimitrie O. Paun a656944875 Rewrite the begin/end label edit procedures.
Better support of OWNERDRAW.
Cleaner, simpler code.
2002-10-05 17:42:14 +00:00
Dimitrie O. Paun 530793ff4d Fixed large item focus handling for virtual listviews. Since at most
_one_ item can have the focus at any time, we can maintain one such
rectangle per list, rather than per item. This is both more efficient,
and works for LVS_OWNERDATA listviews as well.
2002-10-04 17:54:22 +00:00
Dimitrie O. Paun c1b1a296ff Do not blindly trust GetItem to succeed -- check the return value, and
fail gracefully.
2002-10-04 17:51:42 +00:00
Dimitrie O. Paun 45387e3a6c Do not send uninitialized data in notification to application. 2002-10-04 17:49:29 +00:00
Dimitrie O. Paun dd0c4c16ae - Fix nasty bug in REPORT mode, when calculating the label rect.
- Lots of cleanups, and simplifications.
2002-10-04 00:25:55 +00:00
Dimitrie O. Paun df6bcfbe57 - Reorganize DrawItem.
- Unify text attribute selection between Draw{Sub,}Item.
- Usual cleanups, and simplifications.
2002-10-02 23:53:04 +00:00
Dimitrie O. Paun 91d41c7fe3 Fancy/optimized EnsureVisible method that eliminates flicker.
Minor cleanups.
2002-10-02 23:45:50 +00:00
Dimitrie O. Paun fc01fcd25a - Fix the subitem drawing code.
- A lot faster drawing in report mode.
- A great deal of cleanup, and simplifications.
2002-10-02 19:59:55 +00:00
Dimitrie O. Paun feae6c3ea4 - Fix the state icon handling.
- Fix handling of new image lists.
- Small cleanups.
2002-10-02 18:38:11 +00:00
Dimitrie O. Paun 25bf08267a - Rework the {Insert,Delete}Column functions.
- Drawing optimizations when adding/removing columns.
- More cleanups, and simplifications.
2002-10-02 18:32:08 +00:00
Dimitrie O. Paun e7c82c2711 - Fix LIST mode, broken by previous changes.
- Implement GetItemRect in terms of GetItemMeasurements.
- Improvements in debug traces.
- Many bug fixes, compelete implementation for GetItemMeasurements.
- Lots of code cleanups, simplifications.
- Documentation updates.
2002-10-01 18:06:15 +00:00
Paul Rupe 4ee2e9e989 Prevent crash when listview trace logging is on. 2002-09-30 18:52:33 +00:00
Guy Albertelli 7e1e62de1c - Eliminate extra background fills.
- Eliminate bogus error messages.
2002-09-29 18:34:51 +00:00
Dimitrie O. Paun a4f580b74b - Cache GWL_STYLE, to avoid fetching in virtually every function.
- Separate GetOrigin from GetAllMeasures as it is item independent,
  and rename function to reflect the change.
- Small cleanups.
2002-09-29 18:02:21 +00:00
Dimitrie O. Paun 81beb955c8 Remove item from the list, if we fail to initialize it at insert
time.
2002-09-27 22:47:00 +00:00
Dimitrie O. Paun e65eb61419 - Fix crashes in debug mode.
- Fix some focus rectangle problems.
- Better debugging output.
- More cleanups.
2002-09-27 22:02:16 +00:00
Paul Rupe 7f32a8d176 - Initialize memory to prevent crashes when -debugmsg +listview is on.
- Fix various array bounds related errors.
2002-09-25 03:20:01 +00:00
Guy L. Albertelli e2e5097648 - Localize origin, location, and rectangle computation.
- Support state icons in LVS_ICON style.
- Draw only items that are in the clip box.
- Draw non-selected items first then the selected ones because large
  icons may overlap each other.
- Correct invalidation rectangles for items.
- Correct drawing of large icons.
- Eliminate divide by zero cases in scrolling.
- Invalidate selected items prior to setting window losing focus.
2002-09-24 18:27:21 +00:00
Dimitrie O. Paun 70c6cecef9 Remove some more superfluous ZeroMemory calls, small cleanups. 2002-09-23 20:59:42 +00:00
Dimitrie O. Paun e3e404296e - Fix outputting of a text pointer in debug mode (by Rein Klazes).
- Remove a large bunch of superfluous ZeroMemory calls.
- Fix a couple of bugs.
2002-09-23 20:55:22 +00:00
Dimitrie O. Paun df28ddf309 - Better implementation for GetTopindex/GetOrigin/SetIconSpacing.
- Drawing optimizations, better scrolling.
- A few more bugs squashed without mercy.
- Many cleanups, simplifications, doc updates.
2002-09-18 18:29:28 +00:00
Dimitrie O. Paun 1edcfe1fa9 - Optimize the heck out of Report drawing.
- A bit of organization, for sanity's sake.
- Many simplifications, cleanups, etc.
2002-09-17 18:29:17 +00:00
Sander van Leeuwen 6b25723cf7 Listview_ProcessLetterKeys: fixed never ending loop when end index is
zero.
2002-09-17 01:30:13 +00:00
Dimitrie O. Paun 31aefe4036 - Reorganization and cleanup of selection code.
- Complete rewrite of focus handling and drawing code.
- Many bugs fixed (including a serious memory corruption).
- Many performance fixes.
- Lots of cleanups, simplifications, etc.
- Documentation updates.
2002-09-16 22:37:40 +00:00
Dimitrie O. Paun 43baa0acd8 - Grand rewrite for {Get,Set,Insert}Item & Co.
- Many bugs fixed.
- Callback items are better supported.
- Improvements in rendering speed.
- Change VOID to void.
- Many code cleanups, and simplifications.
- Documentation updates.
2002-09-16 19:25:41 +00:00
Guy L. Albertelli b9df08216a - Improve LVM_GETITEMRECT values for LVS_ICON style. Now mostly
correct (or at least matches native).
- Handle focused and selected large icon text better.
- Handle internal erase.
- Additional debugging code.
2002-09-13 17:41:32 +00:00
Dimitrie O. Paun 1da4ea287d Fix a bunch of bugs related to scrolling. 2002-09-12 22:26:08 +00:00
Dimitrie O. Paun ee3fdd8038 - Complete rewrite of scrolling code: smaller, faster, cleaner.
We now properly scroll the window, rather than invalidating it on
  every scroll action.
- A bug or two got squashed.
- Many code cleanups, simplifications, etc.
- Some documentation updates.
2002-09-12 18:10:41 +00:00
Dimitrie O. Paun 70b2f44a47 Code cleanups and simplifications, documentation updates. 2002-09-11 00:47:09 +00:00
Dimitrie O. Paun db6c9b0d8e - Pass infoPtr around, instead of hwnd.
- Implement hot cursor.
- Update list of unimplemented messages.
- Simplify the code for editing labels.
- Start working towards more type-safe functions.
- Small code cleanups.
- Some docu updates.
2002-09-09 19:22:19 +00:00
Michael Stefaniuc 025c0b716b Prepare dlls/{comctl32,gdi,msvideo,setupapi,shell32,twain,winmm} for
the conversion of HWND to a void*.
2002-09-06 19:41:17 +00:00
Guy L. Albertelli 027034e221 - Reduce the number of messages being passed to itself by using the
internal routines.
- Fix problem in _SetIconSpacing found by recent change.
- Add initial support for correct icon sizing.
- A few extra traces.
2002-08-29 23:58:42 +00:00
Mike McCormack d1b24defdc Change the icon spacing when setting the image list. 2002-08-27 19:41:56 +00:00
Aric Stewart 86198965ad Windows expects the edit window to hang around and be valid. 2002-08-27 19:36:33 +00:00
Guy L. Albertelli 6737a5926a - Implement LVM_SCROLL and adjust scrolling for all formats.
- Implement standard Comctl32 color handling.
- Eliminate bogus ERR messages for application messages.
2002-07-23 20:54:52 +00:00
Bill Medland b99101230f DeleteColumn should return success even for uOwnerData. 2002-07-16 01:10:26 +00:00
Guy L. Albertelli 073d09a17f - Improve traces.
- Changed default column width to 128 to match native and make that
  the mimimum for LVS_SMALLICON and LVS_LIST styles.
- Corrected max value for LVS_LIST style scroll info.
- Issue our own ShowScrollBar like the native with proper test.
- Correct alignment when using LVS_ICON style.
- Correct FIXMEs for unimplemented styles.
- Correct rect size computation for LVS_LIST.
- Reset scroll bars when changing styles.
- Implement WM_WINDOWPOSCHANGED.
2002-07-10 03:00:22 +00:00
Vincent Béron e35580f4c9 Fixed some various comparisons wrt signedness. 2002-06-21 22:25:17 +00:00
Paul Rupe 21fbb40cb7 Support for LVM_SUBITEMHITTEST; check for out-of-bounds subitem index
in LISTVIEW_GetSubItemRect.
2002-06-10 22:47:41 +00:00
Vincent Béron 9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Steven Edwards fb2a70463e Fixed snprintf warnings. 2002-05-16 18:31:27 +00:00
Aric Stewart 5679be34d9 Do not invalidate the rect while drawing.
Implemented GetSubItemRect and a quick change to notifications sent
for OwnerData items.
2002-05-14 03:58:46 +00:00
Uwe Bonnes 07a308d606 LISTVIEW_GetColumnT: care for the format of the string.
LISTVIEW_Create: send HDM_SETUNICODEFORMAT message.
2002-04-11 17:31:45 +00:00
Duane Clark b7d819953e Add LVS_NOSORTHEADER support.
Sort column on HDN_ITEMCLICKA too.
Do not edit labels if icon was clicked.
Fix the incorrect icon width in my earlier patch.
2002-03-20 00:53:42 +00:00
Duane Clark b6c28ff62f Add support for report mode text justification. 2002-03-11 05:02:11 +00:00
Alexandre Julliard 0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Duane Clark ad079d6cbb Ask for correct number of chars in EditLblWndProcT. 2002-02-28 21:42:25 +00:00
Duane Clark bdd77388b9 LISTVIEW_InsertColumnT can be called with a width of
LVSCW_AUTOSIZE_USEHEADER.
Use the correct strings when column autosizing on columns other than
column 0.
LVSCW_AUTOSIZE_USEHEADER uses both item and header strings.
2002-02-28 20:41:39 +00:00
Bill Medland df0f236038 Centre text correctly for the selected item.
Draw complete background for the selected item.
Calculate the size of a large icon more correctly (including multiline
labels).
2002-02-27 01:24:39 +00:00
Gerard Patel 019ae8a22f LVM_GetItemRect should not take text size in account for LVIR_LABEL in
report mode.
2002-02-25 19:00:03 +00:00
Bill Medland d10c9a47b8 Implement multiline labels in the Large Item view by using DrawText
Note that this now highlights weaknesses in the label measuring code
etc. which cannot correctly handle multiline labels.
2002-02-22 21:23:02 +00:00
Ondrej Macek 13f1fb23fe Fix of ListView invalidation in LISTVIEW_SetBkColor. 2002-02-19 18:32:12 +00:00
Guy L. Albertelli 8961f1624e Correct tests involved with processing the LVIF_DI_SETITEM flag. 2002-02-12 18:42:25 +00:00
Alexandre Julliard 7904acf1bd Authors: Guy L. Albertelli <galberte@neo.lrun.com>, Aric Stewart <aric@codeweavers.com>, Dmitry Timoshkov <dmitry@codeweavers.com>
Misc fixes:
- cache text metrics for the font we're using
- improved item hit detection
- more debugging output
- implement LVM_SETICONSPACING
- lots of bugs squashed
2002-02-05 18:13:57 +00:00
Dimitrie O. Paun d15ed230a8 Complete Listview Unicodification.
Simplify the setting of (sub)item text by using common code.
2002-02-04 18:44:16 +00:00
Huw D M Davies 83ff80b295 Flip A<->W conversion in dispinfo_notifyT. 2002-02-02 17:57:00 +00:00
Gerard Patel 776cb279f2 Don't repaint header when scrolling a listview vertically. 2002-01-31 20:38:25 +00:00
Gerard Patel 815997ffe0 Fix problems with listview notification. 2002-01-29 17:51:00 +00:00
Dimitrie O. Paun 6d694d8ed6 Simplify and fix listview ellipsification of large text labels. 2002-01-29 16:50:40 +00:00
Gerard Patel 3dbbb0b297 Avoid converting nonexistent text from A->W. 2002-01-29 03:08:24 +00:00
Dimitrie O. Paun 9e99d2b763 - Make the ListView control Unicode ready.
- Support both ANSI & Unicode ListView notifications.
- Fixed a few bugs.
2002-01-18 19:05:35 +00:00
Gerard Patel a02f3de89e Rect returned by LISTVIEW_GetItemRect should be total size in report
mode.
2001-08-21 17:04:02 +00:00
Guy L. Albertelli b0327f2b40 Remember response from LVN_GETDISPINFO if user sets LVIF_DI_SETITEM. 2001-07-02 01:20:28 +00:00
Francois Gouget e76218dd61 Add '\n' at the end of traces. 2001-05-09 17:31:31 +00:00
James Hatheway f3c93b805b Eliminate unitialized garbage being returned from LISTVIEW_GetItemA. 2001-04-18 17:40:04 +00:00
Francois Gouget dd30c5c282 GetItemSpacing(true): Return the default item spacing if the view is
LVS_ICON, and the current 'item size' otherwise.
2001-04-16 19:04:12 +00:00
Rein Klazes 4d7e26f9a2 Fixed scrolling of listview with a mouse wheel. 2001-04-04 18:25:46 +00:00
Francois Gouget d6f5ed273d Update nSelectionMark and nFocusedItem when inserting/deleting/sorting
items.
SortItems: If sorting less than 2 items, do nothing.
2001-03-05 22:11:17 +00:00
Francois Gouget f45d56912a In LISTVIEW_AddGroupSelection and LISTVIEW_SetGroupSelection, if no
selection mark has been set, just select the current item.
In LISTVIEW_SetGroupSelection we must also set the selection mark in
that case (and only in that case).
Removed a naughty ';' (spotted by Eric Pouech).
2001-03-04 01:04:35 +00:00