diff --git a/src/dorkbox/systemTray/ui/gtk/GtkMenu.java b/src/dorkbox/systemTray/ui/gtk/GtkMenu.java index 62951cb..be32bde 100644 --- a/src/dorkbox/systemTray/ui/gtk/GtkMenu.java +++ b/src/dorkbox/systemTray/ui/gtk/GtkMenu.java @@ -252,7 +252,7 @@ class GtkMenu extends GtkBaseMenuItem implements MenuPeer { // is overridden by system tray setLegitImage(menuItem.getImage() != null); - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -273,7 +273,14 @@ class GtkMenu extends GtkBaseMenuItem implements MenuPeer { Gtk2.gtk_widget_show_all(_native); } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } // is overridden in tray impl @@ -378,7 +385,7 @@ class GtkMenu extends GtkBaseMenuItem implements MenuPeer { @Override public void remove() { - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -401,6 +408,13 @@ class GtkMenu extends GtkBaseMenuItem implements MenuPeer { parent.createMenu(); // must be on EDT } } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } } diff --git a/src/dorkbox/systemTray/ui/gtk/GtkMenuItem.java b/src/dorkbox/systemTray/ui/gtk/GtkMenuItem.java index a23a9b7..5b4d74c 100644 --- a/src/dorkbox/systemTray/ui/gtk/GtkMenuItem.java +++ b/src/dorkbox/systemTray/ui/gtk/GtkMenuItem.java @@ -185,7 +185,7 @@ class GtkMenuItem extends GtkBaseMenuItem implements MenuItemPeer, GCallback { @Override public void remove() { - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -201,6 +201,13 @@ class GtkMenuItem extends GtkBaseMenuItem implements MenuItemPeer, GCallback { parent.remove(GtkMenuItem.this); } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } } diff --git a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemCheckbox.java b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemCheckbox.java index 1ec98e1..31011b6 100644 --- a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemCheckbox.java +++ b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemCheckbox.java @@ -291,7 +291,7 @@ class GtkMenuItemCheckbox extends GtkBaseMenuItem implements CheckboxPeer, GCall @Override public void remove() { - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -306,6 +306,13 @@ class GtkMenuItemCheckbox extends GtkBaseMenuItem implements CheckboxPeer, GCall parent.remove(GtkMenuItemCheckbox.this); } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } } diff --git a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemSeparator.java b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemSeparator.java index 104a9aa..91e8c86 100644 --- a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemSeparator.java +++ b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemSeparator.java @@ -37,7 +37,7 @@ class GtkMenuItemSeparator extends GtkBaseMenuItem implements EntryPeer { @Override public void remove() { - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -45,7 +45,14 @@ class GtkMenuItemSeparator extends GtkBaseMenuItem implements EntryPeer { parent.remove(GtkMenuItemSeparator.this); } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } @Override diff --git a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemStatus.java b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemStatus.java index be359a4..717cd1e 100644 --- a/src/dorkbox/systemTray/ui/gtk/GtkMenuItemStatus.java +++ b/src/dorkbox/systemTray/ui/gtk/GtkMenuItemStatus.java @@ -61,7 +61,7 @@ class GtkMenuItemStatus extends GtkBaseMenuItem implements StatusPeer { @Override public void remove() { - GtkEventDispatch.dispatch(new Runnable() { + Runnable runnable = new Runnable() { @Override public void run() { @@ -71,6 +71,13 @@ class GtkMenuItemStatus extends GtkBaseMenuItem implements StatusPeer { parent.remove(GtkMenuItemStatus.this); } - }); + }; + + if (GtkEventDispatch.isDispatch.get()) { + runnable.run(); + } + else { + GtkEventDispatch.dispatch(runnable); + } } }