=== modified file 'src/com/goldencode/p2j/ui/client/gui/ComboBoxGuiImpl.java'
--- src/com/goldencode/p2j/ui/client/gui/ComboBoxGuiImpl.java	2015-11-24 18:44:43 +0000
+++ src/com/goldencode/p2j/ui/client/gui/ComboBoxGuiImpl.java	2015-11-24 23:01:14 +0000
@@ -48,7 +48,8 @@
 **                  GUI mode ignoring SESSION:DATA-ENTRY-RETURN value.  The combo-box does not
 **                  react to the ENTER key in GUI.  Key processsing fixes for GUI mode.
 ** 014 EVL 20151120 Fix for drop-down line spacing issue. And fix for button incorrect drawing
-**                  over 3d border.
+**                  over 3d border.  Drop-down button fix for pressed state drawing.  Pressing
+**                  the drop-down button need to be painted accordingly.
 */
 
 package com.goldencode.p2j.ui.client.gui;
@@ -396,9 +397,20 @@
       {
          requestFocus();
          pressed = true;
+
          // drop-down is opening on mouse press
          if (config.mode != ComboBoxConfig.Mode.SIMPLE)
          {
+            // first need to display the button pressing effect 
+            ThinClient.getInstance().independentEventDrawingBracket(this, new Runnable()
+            {
+               public void run()
+               {
+                  repaint();
+               }
+            });
+
+            // depending on current state activate or dismiss drop-down 
             if (dropDownActive)
             {
                // second click to drop-down button or area dismisses the active drop-down

=== modified file 'src/com/goldencode/p2j/ui/client/gui/ScrollBarGuiButton.java'
--- src/com/goldencode/p2j/ui/client/gui/ScrollBarGuiButton.java	2015-10-21 00:45:41 +0000
+++ src/com/goldencode/p2j/ui/client/gui/ScrollBarGuiButton.java	2015-11-25 00:45:21 +0000
@@ -24,6 +24,10 @@
 ** 010 EVL 20151010 Fix for thumb drawing issues. Also reworked image loader specifically for
 **                  small images.  Optimization for button painting on mouse press, release.  In
 **                  these cases we do not need to repaint whole window.
+** 011 EVL 20151124 The button pressed state needs repaint() call to properly display pressed mode
+**                  when running indide drop-down life cycle.  Improved mouse handling, in 4GL
+**                  if to press mouse, move inside button and release - this generates click.  So
+**                  we have to track the mouse release, not click.
 */
 
 package com.goldencode.p2j.ui.client.gui;
@@ -31,6 +35,7 @@
 // this usage of AWT events is intentional, they are being used separately from the
 // AWT/Swing event model itself; no other AWT/Swing usage is occurring in this class
 import java.awt.event.MouseEvent;
+import java.util.concurrent.*;
 
 import com.goldencode.p2j.ui.*;
 import com.goldencode.p2j.ui.chui.ThinClient;
@@ -67,6 +72,9 @@
    /** Button state */
    boolean up = true;
       
+   /** Executor for handling mouse input. */
+   private static ExecutorService mouseInputExecutor = Executors.newSingleThreadExecutor();
+   
    /**
     * This constructor creates a scroll bar button.
     * 
@@ -198,23 +206,6 @@
    }
 
    /**
-    * Notification of a mouse clicked event occurred for this widget.
-    * 
-    * @param    e
-    *           The mouse event.
-    */   
-   @Override
-   public void mouseClicked(MouseEvent e)
-   {
-      // check if the scrollbar widget is enabled
-      if (owner.isEnabled())
-      {
-         // call scroll bar
-         owner.onButtonClick(position, false);
-      }
-   }
-
-   /**
     * Notification of a mouse pressed event occurred for this widget.
     * 
     * @param    e
@@ -227,7 +218,39 @@
       if (owner.isEnabled())
       {
          up = false;
-         refresh();
+         // need to use repaint() here instead of refresh() because for example inside combo-box
+         // drop-down standalone event loop the screen synchronization is not happening
+         repaint();
+
+         // for holding mouse we need to genereate scroll events
+/*         mouseInputExecutor.execute(new Runnable()
+         {
+
+            @Override
+            public void run()
+            {
+               while (!up)
+               {
+                  try
+                  {
+                     // wait to see if not a click event
+                     Thread.sleep(GuiConstants.REPEAT_MILLIS);
+
+                     // fire mouse clicked
+                     // call scroll bar
+
+                     if (!up)
+                     {
+                        owner.onButtonClick(position, false);
+                     }
+                  }
+                  catch (InterruptedException ex)
+                  {
+                     // nop
+                  }
+               }
+            }
+         });*/
       }         
    }
 
@@ -244,7 +267,9 @@
       if (owner.isEnabled())
       {
          up = true;
-         refresh();
+         repaint();
+         // call scroll bar
+         owner.onButtonClick(position, false);
       }         
    }
    

