Commit 53129acd authored by pavlov%pavlov.net's avatar pavlov%pavlov.net
Browse files

Impliment Resize for nsWidget (and nsWindow (it calls nsWidget::Resize/Move)

Add patch for gtklayout from Owen Taylor that makes sure the widgets added are
shown and realized.  We now get a window popped up that shows the spinner,
toolbar, menu, etc etc etc.  its getting close!
parent 0fb3972b
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -162,9 +162,16 @@ gtk_layout_put (GtkLayout *layout,

  gtk_widget_size_request (child->widget, &child->requisition);
  
  if (GTK_WIDGET_VISIBLE (layout))
    {
      if (GTK_WIDGET_REALIZED (layout) &&
	  !GTK_WIDGET_REALIZED (child_widget))
    gtk_layout_realize_child (layout, child);
	gtk_widget_realize (child_widget);
      
      if (GTK_WIDGET_MAPPED (layout) &&
	  !GTK_WIDGET_MAPPED (child_widget))
	gtk_widget_map (child_widget);
    }
  
  gtk_layout_position_child (layout, child, TRUE);
}
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ NS_METHOD nsAppShell::Create(int* argc, char ** argv)

  gtk_init (argc, &argv);

  gtk_rc_init();
  // Windows and Mac don't create anything here, so why should we?
//  mTopLevel = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* we should probibly set even handlers here */
+11 −10
Original line number Diff line number Diff line
@@ -187,27 +187,28 @@ NS_METHOD nsWidget::IsVisible(PRBool &aState)

NS_METHOD nsWidget::Move(PRUint32 aX, PRUint32 aY)
{
    NS_NOTYETIMPLEMENTED("nsWidget::Move");
#if 0
  fprintf(stderr,"nsWidget::Move called (%d,%d)\n", aX, aY);
  mBounds.x = aX;
  mBounds.y = aY;
  // TODO
  // gtk_layout_move(GTK_LAYOUT(layout), mWidget, aX, aY);
  XtVaSetValues(mWidget, XmNx, aX, XmNy, GetYCoord(aY), nsnull);
#endif
  gtk_layout_move(GTK_LAYOUT(mWidget->parent), mWidget, aX, aY);
  //XtVaSetValues(mWidget, XmNx, aX, XmNy, GetYCoord(aY), nsnull);
  return NS_OK;
}

NS_METHOD nsWidget::Resize(PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint)
{
    NS_NOTYETIMPLEMENTED("nsWidget::Resize");
  fprintf(stderr,"nsWidget::Resize called w,h(%d,%d)\n", aWidth, aHeight);
  mBounds.width  = aWidth;
  mBounds.height = aHeight;
  gtk_widget_set_usize(mWidget,aWidth, aHeight);
  return NS_OK;
}

NS_METHOD nsWidget::Resize(PRUint32 aX, PRUint32 aY, PRUint32 aWidth,
			   PRUint32 aHeight, PRBool aRepaint)
{
    NS_NOTYETIMPLEMENTED("nsWidget::Resize");
    Resize(aWidth, aHeight, aRepaint);
    Move(aX, aY);
    return NS_OK;
}

+9 −5
Original line number Diff line number Diff line
@@ -37,9 +37,10 @@
#include "stdio.h"

#define DBG 0

#if 0
#define DEBUG_shaver 1
#define DEBUG_pavlov 1

#endif
static NS_DEFINE_IID(kIWidgetIID, NS_IWIDGET_IID);

extern GtkWidget *gAppContext;
@@ -209,7 +210,7 @@ nsresult nsWindow::StandardWindowCreate(nsIWidget *aParent,
    gtk_box_pack_end(GTK_BOX(mVBox), mWidget, TRUE, TRUE, 0);
  } else {
#ifdef DEBUG_shaver
    fprintf(stderr, "StandardCreateWindow: creating GtkLayout subarea\n");
    fprintf(stderr, "StandardCreateWindow: creating GtkLayout subarea (%d,%d)\n", aRect.x, aRect.y);
#endif
    mainWindow = mWidget;
    gtk_layout_put(GTK_LAYOUT(parentWidget), mWidget, aRect.x, aRect.y);
@@ -413,8 +414,9 @@ NS_METHOD nsWindow::Show(PRBool bState)
//-------------------------------------------------------------------------
NS_METHOD nsWindow::Resize(PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint)
{
  NS_NOTYETIMPLEMENTED("nsWindow::Resize");
  nsWidget::Resize(aWidth, aHeight,aRepaint);
#if 0
  NS_NOTYETIMPLEMENTED("nsWindow::Resize");
  if (DBG) printf("$$$$$$$$$ %s::Resize %d %d   Repaint: %s\n",
                  gInstanceClassName, aWidth, aHeight, (aRepaint?"true":"false"));
  mBounds.width  = aWidth;
@@ -434,8 +436,10 @@ NS_METHOD nsWindow::Resize(PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint)
//-------------------------------------------------------------------------
NS_METHOD nsWindow::Resize(PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint)
{
  NS_NOTYETIMPLEMENTED("nsWindow::Resize");
  nsWindow::Resize(aWidth, aHeight,aRepaint);
  nsWidget::Move(aX,aY);
#if 0
  NS_NOTYETIMPLEMENTED("nsWindow::Resize");
  mBounds.x      = aX;
  mBounds.y      = aY;
  mBounds.width  = aWidth;