Upgrade version makes buttons dissapear (possible bug?)

Hello, I have installed a new gateway with latest version 8.1.13, and imported a project from version 8.1.7. All my buttons dissapeared (not really, they are there, but invisible).

I think that the visual effect when mousing over the object has been enabled in these new versions when the colors from buttons are changed from default, as described in this topic from 2020. In fact i had a test button with all default properties and that one was restored perfectly.

Going to my invisible buttons in the new gateway, and clearing the “Fill Area” checkbox under appearance, and enabling it back again made my buttons go visible again with the new effect.

As well noticed that in this new version, with the buttons, even if i have the option “No Border” selected, a border always appear, seems that cannot get rid of it.

Is there any “easy” way to disable this new effect?


Can you show what you have, and what you’re expecting to have?

Do you have a .gwbk or project export from the system before the upgrade?

We tweaked the look and feel (and removed a few Vision properties) in that timeframe, so it’s possible there’s something wrong in the ‘upgrade’ conversion logic.

Just the project. Trying to keep my gateway “clean” and start from scratch as the old one had a lot of old stuff.

As Irose suggested, will attach some images to explain. Just did the whole thing again:

First, in the thumbnails of the welcome screen indeed i can see the buttons (showing just a portion because of privacy):


But then i open the screen and… the buttons are invisible (if i click in the area the button should be, i can select it without any problem:


The properties of the button:

After clearing the “Fill Area” checkbox, and enabling it back again, my button appears:


I have to go trough each screen, do this procedure, save it and then is good (takes a lot of time going trough all).

As i said, i had one button with the default background in a test screen, and that one seems to be fine after importing:


Finally, before i was able to remove the border if i select the option “no border” in the properties. This is a default button, just with the background color changed and the option “no border” selected in the new version (border is still there):


This is the same thing in 8.1.7, no border at all when that option is selected.


Finally, i would know if there is any way to disable that “highlight” visual effect that has been added in the new versions when the mouse moves over the buttons, even if the backgroud color has been changed (the effect discussed in the topic linked in my first post).

Thanks all for your replies.

It would be interesting to compare the window XML before and after fixing the problem manually.

good idea, will test that first time tomorrow when i am back in the office.

The only difference i can see between them is that in the new version this line is not there:

<c-c m="setBorderPainted" s="1;b"><false/></c-c>

Everything else for the button object seems to be the same.

Sounds like an experiment. Take a fresh, non-working window, extract the XML, delete those, and set the window XML. See if it now works.

1 Like

Yes, absolutely forgot to say that in my last reply. I have tested that, and after deleting that line and pasting again the code, voila, all the buttons appear. Still takes some time to go trough each but is quicker than doing the fill area “trick” to make the buttons appear back again.

@PGriffith any idea about why in the new versions is impossible to delete the border around the buttons, even when the option “no border” is selected?


Okay, let’s make sure I have things correct.
By my count, there’s three problems you’re describing in this thread.

  1. Upon upgrade, some of your buttons disappear outright.
    I think I understand what’s gone wrong. There’s an issue in the LaF with the borderPainted property (causing the button to become invisible) so we removed the property entirely. However, older windows could still have a change from the default value serialized, so you end up with your issue - invisible buttons. We’ll see if we can fix the core problem there.

  2. Upon upgrade, your buttons now are highlighting on hover, and this is not what you want?
    This is somewhat backwards from pretty much everyone’s desired behavior in the previous version, but c’est la vie. You could try changing the background blend mode via UIManager key in a client startup script, e.g. set Synthetica.background.blendMode to a different blend mode - I’d start with ALPHA:

  3. You want to still be able to disable the border around the button entirely for a flat look.
    The good news is, setting the blend mode should do that as well, e.g. this is a button I set to ALPHA in 8.1.15:
    You can do this to individual components, via putClientProperty, but you’ll have to do it every time you open the window. Setting it on the UIManager in a startup script will work for each client, just be aware that the styling will be “wrong” in the designer still.

1 Like

Yes, those are exactly the problems I am asking about you are right.

OK, for the invisible buttons i will be doing the “trick” of the .xml or the “fill area” to make them visible again for the moment.

But with the appaerance of the buttons, would like to get rid of the border,that’s all. I am trying to set the blendmode as you suggest but I cannot do it in a client startup script. Found a thread that talked about this but still i am unable to do so.

from com.inductiveautomation.ignition.client import IgnitionLookAndFeel
from de.javasoft.plaf.synthetica.util.Synthetica2DUtils import BlendMode 

IgnitionLookAndFeel.setBlendMode(button, BlendMode.ALPHA)


You should try a UIManager key, as I mentioned above.

from javax.swing import UIManager
UIManager.put("Synthetica.background.blendMode", "ALPHA")

Try just that, in a client startup script.

Sorry for the late reply.

That worked like a charm. Will use that workaround for the moment.

Many thanks.

For anyone finding/being linked to this thread in the future; if you want a ‘middle ground’ solution between a global UI manager key and setting every button up with scripting, you could use a technique like this to recursively modify every button in the window (e.g. in visionWindowOpened):

from javax.swing import AbstractButton
from com.inductiveautomation.ignition.client.IgnitionLookAndFeel import setBlendMode
from de.javasoft.plaf.synthetica.util.Synthetica2DUtils import BlendMode

def getComponents(window):
	def walkComponents(component):
		for component in component.components:
			yield component
	return walkComponents(window.rootContainer)
isButton = lambda component: isinstance(component, AbstractButton)

def updateBlendMode(component, blendMode):
	setBlendMode(component, blendMode)

In use:

win = system.gui.getWindow("buttons")
for button in filter(isButton, getComponents(win)):
	updateBlendMode(button, BlendMode.ALPHA)