How to make Opera usable
Update: 31.01.01 Missing lines when saving pages as text
Update: 06.02.01 Mail client low resolution version
Update: 09.02.01 Missing linefeeds in copy & paste actions
Update: 12.02.01 Build 856 support Last Update: 23.02.01 Fullscreen vertical scrollbar

Important version information: There are different versions of Opera 5.02 out there. Eight days after the first release, the download sites changed from Build 855 to 856. The differences are negligible, except that mail headers are now inconveniently missing when viewing mails, so I continue to use Build 855. The patches for OPERA.EXE are for both Builds, but all mail client offsets are only valid for 855. However, the patched OMAIL32.DLL can also be used for 856. You can check your current build with "Help/About Opera".

Sadly, Opera 5.02 didn't make this page unnecessary. So again new patches can be downloaded. The list of things which I want Opera to do MY way has expanded, there are two sections below, the first deals with real bugfixes, the second with "adjustments".
The bytes which have to be changed in the appropriate file and the corresponding offsets are given in hexadecimal. If you don't know how to do byte patches (which by the way you SHOULD, there are quite enough tutorials and tools out there, for example the XVI32 Hex Editor), the fixed and tweaked files are available for download at the bottom, but of course just downloading and replacing them denies you the possibility of choosing which bugfixes/tweaks to apply and which not.
For those still interested in older versions of Opera, see the <../iixii50/old50.htm>4.02/5.0 version or the <../iixii501/old501.htm>5.01 version of this page. Feel free to submit this site to any mailing lists/search engines/discussion groups/FAQs, it is important to reach those desperate Opera users which would otherwise turn their backs on this good program and return to Nutscrape or Internet Exploiter.
If you have any suggestions concerning this site or discover/repair bugs which aren't addressed here yet, email me.

Hope this helps,
IIXII


To be sure you have exactly the same version, check the file sizes:
All byte changes apply to OMAIL32.DLL (299,071 bytes) or OPERA.EXE (1,904,701 bytes).
This page also can be found at Fravia's (Introduction/Tutti all'opera!).

Bugfixes:
Miscellaneous tweaks:
Downloads


Timezone correction
Up to Opera 5.01, the timestamp of incoming mails wasn't converted to local time, causing sort order anachronisms. In Opera 5.02, this was supposed to be fixed. Nice try. Here is the patch to make it WORK.
OMAIL32.DLL
OFFSET   1F8        2D -> 52        (increase code section)
OFFSET  3598     01 62 -> B1 74     (gmtime -> localtime)
OFFSET  FDCA        2D -> 2B
OFFSET  FDD6        2B -> 2D        (fix sign error)
OFFSET  FC7E  14 01 00 -> AB 2D 02  (call inserted code for incoming timestamp)
OFFSET 32A2D  5F 38 5E 02 74 18 8B F0 E8 C4 A1 FF FF 8B 87 1E
              97 02 00 99 B9 10 0E 00 00 F7 F9 29 46 08 E8 46
              D3 FD FF FF E7
Corrupted Drafts folder
While composing mails, they are automatically saved in the Drafts folder in a one minute interval as a backup. When they are finally moved into Outbox and deleted from the Drafts folder, the DRAFTS.MBS file is truncated to zero bytes, so the folder is completely emptied. To prevent that, this patch disables the autosave feature.
OMAIL32.DLL
OFFSET 12360     57 68 -> EB 0F
Column sort bug
In a mail folder window, you can click on the column headers of the mail list and the mails are sorted accordingly. This setting is saved, on opening a new mail folder window, the red arrow is where it should be, only the sorting isn't performed! On adding a new mail to the list, it is always inserted at the end of the list. A jump has to be inserted to force resorting of the list on opening a folder. If you apply the patch, the bug still occurs when unread mails are retrieved from the server. Just change to a different folder and back to Inbox, then they are sorted.
OMAIL32.DLL
OFFSET 187E1   74 2D -> EB 24
Word wrap bug
In the email preferences, you can specify the maximum characters per line, longer lines are automatically wrapped. The mail input field is a RichEdit control, which supports wrapping automatically, but the line width must be set in twips, which are calculated using the current screen resolution in dpi. On all three machines I tested this on, Windows tells Opera that the resolution is 96 dpi, while the RichEdit control seems to need different values according to the font size used. Can anyone give me a hint on this?? If you experience the same problem, that the lines are much longer than specified, use the following patch. The value 7B is for composing with Courier New 9, if you use any other font, you may have to experiment a little.
OMAIL32.DLL
OFFSET 1651A  75 03 6A 60 -> 90 90 6A 7B
MDI window redraw bug
While composing a mail, when the window bar is enabled at the bottom and windows are maximized, switching to a window containing a web page and then back to the compose window doesn't redraw the mail body. So you can't see what you typed before, but instead the contents of the web page are "shining through".
The culprit is the status bar at the bottom of the mail compose window, that little gray bar with the "sunken" middle where nothing is ever displayed, so I wonder why it's there anyway. When switching to the mail compose window, it is resized to full size, and immediatly resized again by 4 pixels to create the little border around the status bar. The second resize occurs while Windoze is still processing the first, and so it screws up.
This bug was definitely the most difficult to patch, and it took me a long debugging night to figure it out. Because most window functions are used for all windows in Opera, it wasn't possible to take out that second resize. Instead I inserted a bit of code checking all resize actions and cancelling that 4 pixel resize. Works fine.
OMAIL32.DLL
OFFSET   1F8        2D or 52 -> 78              (increase code section)
OFFSET 12A08  FF 75 10 8B CE -> E8 45 00 02 00
OFFSET 32A52  5F 8B 55 10 83 7D 08 05 75 17 8B CA 87 8F DB 1F
              03 00 2B CA 81 F9 00 00 04 00 75 05 83 C7 0B FF
              E7 52 8B CE FF E7
Wrong tabs and linefeeds in mails
If you ever wondered why tabs in mails show as little boxes, and two links separated by a line feed are concatenated to form a single line, it's time to grab a text editor and edit the file "email.css" in Opera's "Styles" subdirectory. In the section PRE.BODY you will find the line
white-space: -pre-wrap;
I really don't know why it's there, but removing it fixes the above-mentioned problems.

Missing lines when saving pages as text
When a page is saved as text, and it contains parts whose font size is set using a style sheet, then every 4th line of that text is missing. Try saving this document as text for demonstration. This is especially annoying when saving mails, because mails are converted to HTML to be displayed using the style sheet email.css, and then converted back to text when saved, instead of using the original text. The reason for the bug are wrong scaling factors inside Opera, and the workaround is to change the general scaling factors for plaintext saving:
OPERA.EXE
OFFSET 6B178  0A = vertical   positioning scaling factor
OFFSET 6772E  0A = horizontal positioning scaling factor
It's funny to play with those, and adjusting the vertical factor to 08 kind of fixes the problem, but on the other hand it causes normal text to be scaled by inserting empty lines. Oh well.

Missing line feeds for copy & paste actions
When trying to copy & paste text from emails or web pages, Opera removes multiple linefeeds completely, so if there are two lines of text with empty lines between them, the text lines are concatenated to a single line. Furthermore, when copying from a web page, linefeeds from the HTML source code are also copied although not visible on the page. The following patch cures the line concatenation.
OPERA.EXE
OFFSET    210     1B or CB -> DE
OFFSET  817E3  74 07 C6 04 -> 75 DA EB 05
OFFSET 164248     4F 2F 48 -> CB EF 55
OFFSET 15EFCB     00 00 .. -> 8B 45 E8 8B 55 08 C7 04 10 0D 0A 00 00 8D 40 02 C2 18 00
Vertical scrollbar missing in fullscreen mode
When browsing in fullscreen mode (F11), the scrollbar is off by default. It can be turned on by pressing CTRL+F7, or the cursor keys can be used for scrolling. But often, sites using frames can't be scrolled either way, so only the top portion is shown. Patch follows:
OPERA.EXE
OFFSET  76639  89 46 44 33 C0 -> 33 C0 89 46 44
Disable password warning
When entering passwords on a page, sometimes they are checked using JavaScript, and Opera will display the warning "A script wants to read the password(s) in the form. Do you want to give the script access to your password(s)?". This can get annoying, so with this patch the answer can be hardcoded as "yes" or "no".
OPERA.EXE
OFFSET A2B97  6A 00          -> EB 26           (yes)
              6A 00 68 D6 57 -> E9 16 F9 FF FF  (no)
Disable online mode message
If you are in Offline mode and want to preselect several bookmarks in several windows to load them all when finally going online, Opera will ask about switching to Online mode every time. Again, "yes" or "no" can be hardcoded.
OPERA.EXE
OFFSET AA2F4     68 FA -> EB 50  (yes)
                       -> EB 7C  (no)
Persistent download log
All entries in the transfer window are deleted after 48 hours. If you want them to be persistent, apply this patch.
OPERA.EXE
OFFSET 203CD     7C 71 -> 90 90
Characters per line when saving as text
When saving a page as text, the linefeeds aren't generated properly because the file is opened in "w" mode instead of "wb". Fix follows:
OPERA.EXE
OFFSET B5FF1  F8 7B -> 14 73
Additionally, the line width is always 80 characters. If you want to adjust the line width up to 127 characters, use the following patch, where xx is the new line width:
OPERA.EXE
OFFSET B6012     50 -> xx
For very long lines, use the following patch, where yy yy yy yy is the new line width in little endian format, e.g. 2C 01 00 00 for 300 characters:
OPERA.EXE
OFFSET B6002     85 FF 59 74 47 8B 46 4C 6A 00 68 FF 7F 00 00 6A 50
              -> 59 90 8B 46 4C 6A 00 68 FF 7F 00 00 68 yy yy yy yy
Exchanging mailbox columns
The columns can be resized, but not exchanged. This is bad because I'm used to having the subject appear before date and size. So what? BTW: There are quite a lot of bytes to change. The first three exchange the labels, the next three exchange the contents, and the rest are responsible for making the sort criteria work again.
OMAIL32.DLL
OFFSET 171D1   CC -> CB
OFFSET 171F6   CF -> CC
OFFSET 17225   CB -> CF (labels)
OFFSET 174ED   1C -> 20
OFFSET 174F7   20 -> 24
OFFSET 1750B   24 -> 1C (contents)
OFFSET 1819C   0F 84 9E 00 00 00 49 74 51 49 0F 85 09 02 00 00
            -> 74 0E 49 0F 84 9B 00 00 00 49 EB 4E 90 90 90 90
OFFSET 17D6A & 17D6D & 17D8A & 17D8D   1C -> 20
OFFSET 181BA & 181D4   06 -> 04
OFFSET 18204 & 1821E   05 -> 06
OFFSET 1824E & 18268   04 -> 05
OFFSET 181AF   AC -> A8
OFFSET 181F9   AA -> AC
OFFSET 18243   A8 -> AA (sort on header click)
Default mailbox column size
You can resize the columns, but the setting is not saved. So you can change the default sizes, the proposed values are best for the exchanged columns.
OMAIL32.DLL
OFFSET 170BE   14    -> 00    Column 1&2
OFFSET 17157   14    -> 13    Column 3
OFFSET 171A3   A0             Column 4  (lowres: 80)
OFFSET 171E5   78 00 -> 8B 01 Column 5  (lowres: 20 01)
OFFSET 17210   32    -> 78    Column 6  (lowres: 74)
OFFSET 17222   -1             Column 7
For low resolutions or small screens it is useful to reduce the hotlist width, but that causes the Unread and Total columns to disappear unless their size is permanently adjusted as well:
OFFSET 19E7A   8B 4D F4 6A 14 89 48 2A -> 6A 1A 59 6A 35 89 48 4C  Column 3&1
OFFSET 19E8A   7D 03 -> 90 90                ^^       ^^
OFFSET 1A3F7      14 -> 1A    Column 2
OFFSET 424D8      61 -> 00
OFFSET 424E6      65 -> 00
Downloads
DO NOT link to these downloads directly, FortuneCity doesn't like externally linked files. They have a rather annoying method to check if you visited this page before downloading: You must have a certain cookie ("rand=...") on your PC, containing a random ID assigned to you when visiting this page. If you get a "can't supply file" error page, please make sure that your browser accepts cookies (in Opera see File/Preferences/Privacy), then refresh this page so the cookie will be generated.
Download patched OMAIL32.DLL (archive 129 kB) for v5.02
Download patched OMAIL32.DLL 800x600 low resolution version (archive 130 kB) for v5.02
Warning: The DLL contains all bugfixes and tweaks mentioned above. It is compressed with ASpack, so it makes Opera even smaller on your hard disk because it is decompressed to memory every time you run Opera, and it loads faster, because decompression time is less than the time saved by shorter disk access due to smaller size. Still check the size of the file you replace.


Made with Norton Editor 2.0 for DOS [und vieeel Zeit]