view gtk/browser.cpp @ 928:43a5b3c78c41

Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues... because the groupbox border height couldn't be calculated until it was size. So first time we size the groupbox to 100x100 and calculate the border size... then the title calculation also works since it has been sized. Second is the first major update to the layout engine in probably 10 years. The layout engine has now been divided into 3 passes instead of 2. Previously the calculation and layout were done together in the second pass... but this could cause layout to happen before all the box variables were finalized causing occassional layout issues. Now the layout is done separately in a third pass after all the calculation is settled.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 23 Apr 2011 13:05:03 +0000
parents fb59f9eeeecd
children
line wrap: on
line source

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#define MOZILLA_INTERNAL_API

#include <gtk/gtk.h>
#include <gtkmozembed.h>
#include <gtkmozembed_internal.h>
#include "nsIDOMMouseEvent.h"

/**
 * Takes a pointer to a mouse event and returns the mouse
 *  button number or -1 on error.
 */
extern "C" gint mozilla_get_mouse_event_button(gpointer event)
{
   gint  button = 0;
   glong x,y;

   g_return_val_if_fail (event, -1);

   /* the following lines were found in the Galeon source */
   nsIDOMMouseEvent *aMouseEvent = (nsIDOMMouseEvent *) event;
   aMouseEvent->GetButton ((PRUint16 *) &button);
   aMouseEvent->GetClientX ((PRInt32 *) &x);
   aMouseEvent->GetClientY ((PRInt32 *) &y);


   /* for some reason we get different numbers on PPC, this fixes
    * that up... -- MattA */
   if (button == 65536)
   {
      button = 1;
   }
   else if (button == 131072)
   {
      button = 2;
   }

   return button;
}
extern "C" gint mozilla_get_mouse_location( gpointer event, glong *x, glong *y)
{
   g_return_val_if_fail (event, -1);

   /* the following lines were found in the Galeon source */
   nsIDOMMouseEvent *aMouseEvent = (nsIDOMMouseEvent *) event;
   aMouseEvent->GetClientX ((PRInt32 *) x);
   aMouseEvent->GetClientY ((PRInt32 *) y);
   return 0;
}