Troubles with Wine (WS_POPUP window style)

More than once I received a warning that Math-o-mir does not behave perfectly under Wine (Wine is a software that enables running Windows programs on Linux machines). Specifically:

  • The toolbox and toolbar remain displayed at the top of the screen even if Math-o-mir main window gets deactivated and is buried below other windows
  • In addition, once the main window gets minimized and then restored again, the toolbox/toolbar will be missing and there is no action that will show them  except to restart the software.

The last precise bug report, with screenshots, came from Adam H. (thanks Adam). At the moment we found out that declaring a toolbox/toolbar window as a child window (WS_CHILD) will work fine, but declaring a windows as a popup window (WS_POPUP) causes the described problems in Wine. I can easily declare the overhead toolbar as WS_CHILD and this is what I will do. The left-side toolbox is more problematic as it should be drawn even outside the main window area and should be therefore declared WS_POPUP.

So, if anyone reading this have any idea what is going on with WS_POPUP style windows in Wine, please let me know.


The source code available on GitHub

Until now I did not distribute the software under any specific license. However this caused concerns in certain schools/academic institutions. I therefore decided that I will distribute the Math-o-mir under the MIT License from now on (this is actually the Expat License, to be more specific). I guess it is among the most permissible licenses around and is quite popular. You can thus still do whatever you want with the software.

Until now the software source code as available on request. Today I added it on GitHub and is publicly available from there… The reason I didn’t do this before is because I was hoping that I could find some time to make the code more beautiful. This never happened so I uploaded the software as is. (Haha… the code is not obfuscated, it just looks that way.)

I hope that with time I will slowly upgrade the source code and make it really readable to others. Then again, there might be some geniuses around that could decipher it even in the current state.

FYI, the MIT license text is here:

Copyright  2017, Danijel Gorupec

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.



Math-o-mir 2.0 (official release)

You can download the new official Math-o-mir 2.0 from the download page or from the software homepage.

The main reason I increased the version number from 1.xx to 2.xx is because there are changes in the .mom file format that might compromise the backward compatibility. The new file format 2.xx is more compact and produces files half the size than the older 1.xx format. It is even much more efficient when storing documents that contain bitmaps – which is the main reason why I decided to change the file format in the first place.

However, being concerned about backward compatibility, I decided that the new MoM 2.0 will still store its files into 1.xx format by default (except bitmaps). If you explicitly want to use the new 2.xx format, you should choose “save as…” and then choose the 2.xx format… Maybe I was too much of a coward, I admit. Anyway, in the next version the Math-o-mir will save in 2.xx format by default. And in some even further version, it will loose the ability to save 1.xx format altogether…. The ability to read the 1.xx format will remain ‘forever’.

Other major news are as follows:

  • Toolbox options are rearranged. New symbols are added (corresponds to, D’Alambert, triangle, real part, imaginary part), some symbols are deleted
  • The “very large” toolbox size option is added to support high-resolution monitors
  • New commands: \varpi (inserts pi variant); \Ups, \ups (generates upsilon)
  • Spacebar+Enter keystroke can be used to toggle text/math typing mode (in addition to the Alt+Spacebar keystroke)
  • New variable decorations are available: triple dot, tilde, hacek
  • The function plotter is speed up and improved. Up to 4 functions can now be plotted simultaneously. Numerical integration of the plotted function is implemented.
  • The uppercase delta sign is handled in a special way – no automatic separation from the following variable. The double ‘u’ stroke generates Greek mi letter (not the upsilon)
  • Redesigned the drawing box handy menu
  • 45 degree lines can now be drawn using the section-line drawing tool
  • keyboard arrow key handling improvement

I eradicated some bugs. I also removed several features: the auto-clipboard-semi-transparent menu, snap-to-grid option (it is now always active when the grid is displayed), parentheses-height options… The documentation is updated: the Users Manual, the Brief Guide and the Tutorial. All in English language. (However the German version of the software itself is also released).

For following days I will be lurking for bugs that I generated with the new version. Please report any that you find… I wish a happy new year to everyone reading this!

Math-o-mir Brief Guide (and exams in Finland)

Well, I decided to write a Brief Guide to Math-o-mir. It is a PDF file that you can download from here (234kB). This Brief Guide is 15 pages long. I believe that the Brief Guide was necessary because I am convinced, and several potential users also mentioned it, that the existing Users Manual is just too voluminous – the Users Manual is almost 100 pages long.

If you have the opportunity to check the Brief Guide, I would be happy to hear your comments. Especially about how to make it shorter and clearer. I am aiming at 12 pages. I am already aware that my English is broken, so don’t be ashamed when it must be pointed out.

In the Brief Guide, I decided to first explain the keyboard entry methods, and only then to explain the mouse usage. I am not sure if this is a good idea, but I think that it will be clearer to readers that it is the keyboard entry they should concentrate about.

I also think that the Brief Guide can be friendly to teachers and their students. Asking a student to read the Users Manual would be too cruel.


Did you know that in Finland they will have math matriculation exams completely digital from 2019. Students, age 19 mostly, will bring their own computers and boot them into exam-environment OS (Debian/Linux). There they will have selection of math software that they will be able to use when taking the exam. No paper will be used… Very brave, I would say. I wish them a good luck. It would be interesting to see how the things will turn out… I did not find much background information about this idea (in English), particularly about motivation and expectations. In any case, I hope that Math-o-mir will be one of tools students will be allowed to use during the exam.

Math-o-mir 2.0 beta 5

The new beta can be downloaded from here.

There are two news in this beta 5. First I improved borderline handling in tables and matrices. When you insert new rows/columns the borderlines of matrix cells should now behave in a more predictive way. This required some deeper changes in underlying data structures so please let me know if you find a bug when working with tables/matrices.

Secondly, I tried to refine handling of cursor movement when using keyboard arrow keys. It is quite difficult to implement a predictable cursor movements within irregular structure of a math expression. The most important new thing is that if you hit the opposite arrow direction key than in the very previous stroke, the cursor will return back to where it originally was. I hope this will help when correcting unwanted cursor moves.

In addition, pressing the left or right arrow key will always put the cursor into the fraction numerator (or denominator) – until now the cursor would jump over the fraction if the fraction was quite short. Plus, when moving cursor through multi-line text field it will move in a way more similar to standard text processor.

Math-o-mir 2.0 beta4

The new beta can be downloaded from here.

There was an annoying bug where Math-o-mir would display unary minus sign incorrectly when showing results of some simple mathematical operations. For example, when asked to compute -(-3/4) it would display –0.75 (with two minus signs in front of the number). I hope I took care of it in this beta.

Several other bugs are also exterminated, like the inability to put asterisk after parentheses: [x]*. One new minor feature is implemented – when you enter a single-letter function using the dot method, like typing f., then the function is always generated with round parentheses, like f( ). Now if you type [ or { immediately after you created the function, the parentheses shape will be altered.

I am still undecided if I should discontinue the Courier New font and replace it with some script font. I think that a script font might be of greater usage than a mono-spaced font when typing mathematics. However, no script font seem to be used as widely as the Courier New font (or Arial, or Times New Roman…). The Lucida Handwriting and Lucida Calligraphy seem common (I prefer the later), but are they common enough?

Math-o-mir 2.0 beta 3

You can download the new beta from here.

I was forced to quickly update the Math-o-mir beta due to a bug find. The bug existed for some time including the last official version. It remained undetected until today. Today I received a report stating that Math-o-mir crashes whenever any of the following is entered:

  •     d.x[spacebar]
  •     \d x[spacebar]
  •     par.x[spacebar]
  •     \par x[spacebar]

The bug is easily reproducible and thus I was able to correct it quickly. I introduced the bug when I was implementing support to toggle Math/Text typing mode using the Spacebar+Enter keystroke. I apologize.

In addition to the above, I corrected several other bugs:

  • right-mouse-click on vertical scroll bar did not work correctly every time if function plotters were used within the document. The  bug had potential to crash the software.
  • Plotting an almost-constant function would cause software to hang or crash under certain circumstances (if the difference between function minimum and function maximum value was more than about 16 orders of magnitude smaller than function mean value on that range).
  • displaying line lengths and rectangle sizes in the Drawing Box is corrected.