mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-25 03:49:42 +00:00
updated gtklayout code. Added lots of assertions to the widget code
This commit is contained in:
parent
bb2cb9fabd
commit
c73b9d994a
@ -2,9 +2,6 @@
|
||||
*
|
||||
* This file may be distributed under either the terms of the
|
||||
* Netscape Public License, or the GNU Library General Public License
|
||||
*
|
||||
* Note: No GTK+ or Mozilla code should be added to this file.
|
||||
* The coding style should be that of the the GTK core.
|
||||
*/
|
||||
|
||||
#include "gtklayout.h"
|
||||
@ -33,6 +30,9 @@ static void gtk_layout_forall (GtkContainer *container,
|
||||
gboolean include_internals,
|
||||
GtkCallback callback,
|
||||
gpointer callback_data);
|
||||
static void gtk_layout_set_adjustments (GtkLayout *layout,
|
||||
GtkAdjustment *hadj,
|
||||
GtkAdjustment *vadj);
|
||||
|
||||
static void gtk_layout_realize_child (GtkLayout *layout,
|
||||
GtkLayoutChild *child);
|
||||
@ -73,8 +73,7 @@ gtk_layout_new (GtkAdjustment *hadjustment,
|
||||
|
||||
layout = gtk_type_new (gtk_layout_get_type());
|
||||
|
||||
gtk_layout_set_hadjustment (layout, hadjustment);
|
||||
gtk_layout_set_vadjustment (layout, vadjustment);
|
||||
gtk_layout_set_adjustments (layout, hadjustment, vadjustment);
|
||||
|
||||
return GTK_WIDGET (layout);
|
||||
}
|
||||
@ -96,6 +95,65 @@ gtk_layout_get_vadjustment (GtkLayout *layout)
|
||||
return layout->vadjustment;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_layout_set_adjustments (GtkLayout *layout,
|
||||
GtkAdjustment *hadj,
|
||||
GtkAdjustment *vadj)
|
||||
{
|
||||
gboolean need_adjust = FALSE;
|
||||
|
||||
g_return_if_fail (layout != NULL);
|
||||
g_return_if_fail (GTK_IS_LAYOUT (layout));
|
||||
|
||||
if (hadj)
|
||||
g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
|
||||
else
|
||||
hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
|
||||
if (vadj)
|
||||
g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
|
||||
else
|
||||
vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
|
||||
|
||||
if (layout->hadjustment && (layout->hadjustment != hadj))
|
||||
{
|
||||
gtk_signal_disconnect_by_data (GTK_OBJECT (layout->hadjustment), layout);
|
||||
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
|
||||
}
|
||||
|
||||
if (layout->vadjustment && (layout->vadjustment != vadj))
|
||||
{
|
||||
gtk_signal_disconnect_by_data (GTK_OBJECT (layout->vadjustment), layout);
|
||||
gtk_object_unref (GTK_OBJECT (layout->vadjustment));
|
||||
}
|
||||
|
||||
if (layout->hadjustment != hadj)
|
||||
{
|
||||
layout->hadjustment = hadj;
|
||||
gtk_object_ref (GTK_OBJECT (layout->hadjustment));
|
||||
gtk_object_sink (GTK_OBJECT (layout->hadjustment));
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (layout->hadjustment), "value_changed",
|
||||
(GtkSignalFunc) gtk_layout_adjustment_changed,
|
||||
layout);
|
||||
need_adjust = TRUE;
|
||||
}
|
||||
|
||||
if (layout->vadjustment != vadj)
|
||||
{
|
||||
layout->vadjustment = vadj;
|
||||
gtk_object_ref (GTK_OBJECT (layout->vadjustment));
|
||||
gtk_object_sink (GTK_OBJECT (layout->vadjustment));
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (layout->vadjustment), "value_changed",
|
||||
(GtkSignalFunc) gtk_layout_adjustment_changed,
|
||||
layout);
|
||||
need_adjust = TRUE;
|
||||
}
|
||||
|
||||
if (need_adjust)
|
||||
gtk_layout_adjustment_changed (NULL, layout);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_layout_set_hadjustment (GtkLayout *layout,
|
||||
GtkAdjustment *adjustment)
|
||||
@ -103,19 +161,7 @@ gtk_layout_set_hadjustment (GtkLayout *layout,
|
||||
g_return_if_fail (layout != NULL);
|
||||
g_return_if_fail (GTK_IS_LAYOUT (layout));
|
||||
|
||||
if (layout->hadjustment)
|
||||
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
|
||||
|
||||
if (!adjustment)
|
||||
adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 10.0, 0.0, 0.0));
|
||||
else
|
||||
gtk_object_ref (GTK_OBJECT (adjustment));
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
GTK_SIGNAL_FUNC (gtk_layout_adjustment_changed),
|
||||
layout);
|
||||
|
||||
layout->hadjustment = adjustment;
|
||||
gtk_layout_set_adjustments (layout, adjustment, layout->vadjustment);
|
||||
}
|
||||
|
||||
|
||||
@ -126,19 +172,7 @@ gtk_layout_set_vadjustment (GtkLayout *layout,
|
||||
g_return_if_fail (layout != NULL);
|
||||
g_return_if_fail (GTK_IS_LAYOUT (layout));
|
||||
|
||||
if (layout->vadjustment)
|
||||
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
|
||||
|
||||
if (!adjustment)
|
||||
adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 10.0, 0.0, 0.0));
|
||||
else
|
||||
gtk_object_ref (GTK_OBJECT (adjustment));
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
GTK_SIGNAL_FUNC (gtk_layout_adjustment_changed),
|
||||
layout);
|
||||
|
||||
layout->vadjustment = adjustment;
|
||||
gtk_layout_set_adjustments (layout, layout->hadjustment, adjustment);
|
||||
}
|
||||
|
||||
|
||||
@ -161,6 +195,7 @@ gtk_layout_put (GtkLayout *layout,
|
||||
child->y = y;
|
||||
child->widget->requisition.width = 0;
|
||||
child->widget->requisition.height = 0;
|
||||
child->mapped = FALSE;
|
||||
|
||||
layout->children = g_list_append (layout->children, child);
|
||||
|
||||
@ -291,10 +326,20 @@ gtk_layout_class_init (GtkLayoutClass *class)
|
||||
widget_class->draw = gtk_layout_draw;
|
||||
widget_class->expose_event = gtk_layout_expose;
|
||||
|
||||
widget_class->scroll_adjustments_signal =
|
||||
gtk_signal_new ("scroll_adjustments",
|
||||
GTK_RUN_LAST,
|
||||
object_class->type,
|
||||
GTK_SIGNAL_OFFSET (GtkLayoutClass, scroll_adjustments),
|
||||
gtk_marshal_NONE__POINTER_POINTER,
|
||||
GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
|
||||
|
||||
gravity_works = gtk_layout_gravity_works ();
|
||||
|
||||
container_class->remove = gtk_layout_remove;
|
||||
container_class->forall = gtk_layout_forall;
|
||||
|
||||
class->scroll_adjustments = gtk_layout_set_adjustments;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -400,12 +445,14 @@ gtk_layout_map (GtkWidget *widget)
|
||||
{
|
||||
GtkLayoutChild *child = tmp_list->data;
|
||||
|
||||
if (GTK_WIDGET_VISIBLE (child->widget) &&
|
||||
!GTK_WIDGET_MAPPED (child->widget))
|
||||
gtk_widget_map (child->widget);
|
||||
|
||||
if (child->window)
|
||||
gdk_window_show (child->window);
|
||||
if (child->mapped && GTK_WIDGET_VISIBLE (child->widget))
|
||||
{
|
||||
if (!GTK_WIDGET_MAPPED (child->widget))
|
||||
gtk_widget_map (child->widget);
|
||||
|
||||
if (child->window)
|
||||
gdk_window_show (child->window);
|
||||
}
|
||||
|
||||
tmp_list = tmp_list->next;
|
||||
}
|
||||
@ -680,12 +727,21 @@ gtk_layout_position_child (GtkLayout *layout,
|
||||
if ((x >= G_MINSHORT) && (x <= G_MAXSHORT) &&
|
||||
(y >= G_MINSHORT) && (y <= G_MAXSHORT))
|
||||
{
|
||||
if (GTK_WIDGET_VISIBLE (child->widget) &&
|
||||
GTK_WIDGET_MAPPED (layout) &&
|
||||
!GTK_WIDGET_MAPPED (child->widget))
|
||||
if (!child->mapped)
|
||||
{
|
||||
gtk_widget_map (child->widget);
|
||||
force_allocate = TRUE;
|
||||
child->mapped = TRUE;
|
||||
|
||||
if (GTK_WIDGET_MAPPED (layout) &&
|
||||
GTK_WIDGET_VISIBLE (child->widget))
|
||||
{
|
||||
if (child->window)
|
||||
gdk_window_show (child->window);
|
||||
if (!GTK_WIDGET_MAPPED (child->widget))
|
||||
gtk_widget_map (child->widget);
|
||||
|
||||
child->mapped = TRUE;
|
||||
force_allocate = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (force_allocate)
|
||||
@ -719,10 +775,14 @@ gtk_layout_position_child (GtkLayout *layout,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (child->window)
|
||||
gdk_window_hide (child->window);
|
||||
else if (GTK_WIDGET_MAPPED (child->widget))
|
||||
gtk_widget_unmap (child->widget);
|
||||
if (child->mapped)
|
||||
{
|
||||
child->mapped = FALSE;
|
||||
if (child->window)
|
||||
gdk_window_hide (child->window);
|
||||
else if (GTK_WIDGET_MAPPED (child->widget))
|
||||
gtk_widget_unmap (child->widget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -833,10 +893,11 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
|
||||
if (layout->frozen)
|
||||
return;
|
||||
|
||||
gtk_layout_position_children (layout);
|
||||
|
||||
if (!GTK_WIDGET_MAPPED (layout))
|
||||
return;
|
||||
{
|
||||
gtk_layout_position_children (layout);
|
||||
return;
|
||||
}
|
||||
|
||||
if (dx > 0)
|
||||
{
|
||||
@ -935,6 +996,8 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
|
||||
-dy);
|
||||
}
|
||||
|
||||
gtk_layout_position_children (layout);
|
||||
|
||||
/* We have to make sure that all exposes from this scroll get
|
||||
* processed before we scroll again, or the expose events will
|
||||
* have invalid coordinates.
|
||||
@ -1137,3 +1200,4 @@ gtk_layout_gravity_works (void)
|
||||
|
||||
return (y == -20);
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,7 @@
|
||||
/* Copyright Owen Taylor, 1998
|
||||
*
|
||||
*
|
||||
* This file may be distributed under either the terms of the
|
||||
* Netscape Public License, or the GNU Library General Public License
|
||||
*
|
||||
* Note: No GTK+ or Mozilla code should be added to this file.
|
||||
* The coding style should be that of the the GTK core.
|
||||
*/
|
||||
|
||||
#ifndef __GTK_LAYOUT_H
|
||||
@ -14,6 +11,10 @@
|
||||
#include <gtk/gtkcontainer.h>
|
||||
#include <gtk/gtkadjustment.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
/*
|
||||
* We don't want to require gnome-libs, in which GtkLayout now lives, but
|
||||
@ -46,10 +47,9 @@
|
||||
#define gtk_layout_set_hadjustment moz_gtk_layout_set_hadjustment
|
||||
#define gtk_layout_set_vadjustment moz_gtk_layout_set_vadjustment
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
#define GtkLayout MozGtkLayout
|
||||
#define GtkLayoutClass MozGtkLayoutClass
|
||||
#define GtkLayoutChild MozGtkLayoutChild
|
||||
|
||||
#define GTK_LAYOUT(obj) GTK_CHECK_CAST (obj, gtk_layout_get_type (), GtkLayout)
|
||||
#define GTK_LAYOUT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_layout_get_type (), GtkLayoutClass)
|
||||
@ -64,6 +64,7 @@ struct _GtkLayoutChild {
|
||||
GdkWindow *window; /* For NO_WINDOW widgets */
|
||||
gint x;
|
||||
gint y;
|
||||
gboolean mapped : 1;
|
||||
};
|
||||
|
||||
struct _GtkLayout {
|
||||
@ -92,6 +93,10 @@ struct _GtkLayout {
|
||||
|
||||
struct _GtkLayoutClass {
|
||||
GtkContainerClass parent_class;
|
||||
|
||||
void (*scroll_adjustments) (GtkLayout *text,
|
||||
GtkAdjustment *hadjustment,
|
||||
GtkAdjustment *vadjustment);
|
||||
};
|
||||
|
||||
GtkWidget* gtk_layout_new (GtkAdjustment *hadjustment,
|
||||
|
@ -92,6 +92,8 @@ nsresult nsButton::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::SetLabel(const nsString& aText)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_BUTTON(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
NS_ALLOC_STR_BUF(label, aText, 256);
|
||||
|
||||
gtk_label_set(GTK_LABEL(GTK_BIN (mWidget)->child), label);
|
||||
@ -107,6 +109,9 @@ NS_METHOD nsButton::SetLabel(const nsString& aText)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_BUTTON(mWidget), NS_ERROR_FAILURE);
|
||||
g_return_val_if_fail(GTK_IS_LABEL(GTK_BIN (mWidget)->child), NS_ERROR_FAILURE);
|
||||
|
||||
char * text;
|
||||
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN (mWidget)->child), &text);
|
||||
|
@ -83,6 +83,8 @@ NS_METHOD nsComboBox::SetMultipleSelection(PRBool aMultipleSelections)
|
||||
|
||||
NS_METHOD nsComboBox::AddItemAt(nsString &aItem, PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
NS_ALLOC_STR_BUF(val, aItem, 256);
|
||||
mItems = g_list_insert( mItems, g_strdup(val), aPosition );
|
||||
gtk_combo_set_popdown_strings( GTK_COMBO( mWidget ), mItems );
|
||||
@ -98,6 +100,8 @@ NS_METHOD nsComboBox::AddItemAt(nsString &aItem, PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsComboBox::FindItem(nsString &aItem, PRInt32 aStartPos)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
NS_ALLOC_STR_BUF(val, aItem, 256);
|
||||
int i;
|
||||
PRInt32 index = -1;
|
||||
@ -131,6 +135,8 @@ PRInt32 nsComboBox::GetItemCount()
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsComboBox::RemoveItemAt(PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
if (aPosition >= 0 && aPosition < mNumItems) {
|
||||
|
||||
g_free(g_list_nth(mItems, aPosition)->data);
|
||||
@ -150,6 +156,8 @@ PRBool nsComboBox::RemoveItemAt(PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsComboBox::GetItemAt(nsString& anItem, PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
PRBool result = PR_FALSE;
|
||||
if (aPosition >= 0 && aPosition < mNumItems) {
|
||||
anItem = (gchar *) g_list_nth(mItems, aPosition)->data;
|
||||
@ -166,6 +174,8 @@ PRBool nsComboBox::GetItemAt(nsString& anItem, PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::GetSelectedItem(nsString& aItem)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
aItem = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO(mWidget)->entry));
|
||||
return NS_OK;
|
||||
}
|
||||
@ -189,6 +199,8 @@ PRInt32 nsComboBox::GetSelectedIndex()
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::SelectItem(PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_COMBO(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
GList *pos;
|
||||
if (!mItems)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -85,6 +85,8 @@ nsresult nsListBox::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
|
||||
NS_METHOD nsListBox::SetMultipleSelection(PRBool aMultipleSelections)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
mMultiSelect = aMultipleSelections;
|
||||
|
||||
if (mMultiSelect)
|
||||
@ -123,6 +125,8 @@ NS_METHOD nsListBox::AddItemAt(nsString &aItem, PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsListBox::FindItem(nsString &aItem, PRInt32 aStartPos)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
int index = gtk_clist_find_row_from_data(GTK_CLIST(mCList), aItem);
|
||||
|
||||
if (index < aStartPos) {
|
||||
@ -139,6 +143,8 @@ PRInt32 nsListBox::FindItem(nsString &aItem, PRInt32 aStartPos)
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsListBox::GetItemCount()
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
return GTK_CLIST(mCList)->rows;
|
||||
}
|
||||
|
||||
@ -149,6 +155,8 @@ PRInt32 nsListBox::GetItemCount()
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsListBox::RemoveItemAt(PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_clist_remove(GTK_CLIST(mCList), aPosition);
|
||||
/*
|
||||
int count = 0;
|
||||
@ -169,6 +177,8 @@ PRBool nsListBox::RemoveItemAt(PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsListBox::GetItemAt(nsString& anItem, PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
PRBool result = PR_FALSE;
|
||||
char *text = NULL;
|
||||
|
||||
@ -251,6 +261,8 @@ PRInt32 nsListBox::GetSelectedIndex()
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsListBox::SelectItem(PRInt32 aPosition)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_clist_select_row(GTK_CLIST(mCList), aPosition, 0);
|
||||
/*
|
||||
int count = 0;
|
||||
@ -269,6 +281,8 @@ NS_METHOD nsListBox::SelectItem(PRInt32 aPosition)
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsListBox::GetSelectedCount()
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_CLIST(mCList), NS_ERROR_FAILURE);
|
||||
|
||||
return (PRInt32)g_list_length(GTK_CLIST(mCList)->selection);
|
||||
}
|
||||
|
||||
|
@ -140,6 +140,10 @@ NS_METHOD nsWidget::Move(PRUint32 aX, PRUint32 aY)
|
||||
#endif
|
||||
mBounds.x = aX;
|
||||
mBounds.y = aY;
|
||||
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
g_return_val_if_fail(GTK_IS_LAYOUT(mWidget->parent), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_layout_move(GTK_LAYOUT(mWidget->parent), mWidget, aX, aY);
|
||||
//XtVaSetValues(mWidget, XmNx, aX, XmNy, GetYCoord(aY), nsnull);
|
||||
return NS_OK;
|
||||
@ -152,6 +156,9 @@ NS_METHOD nsWidget::Resize(PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint)
|
||||
#endif
|
||||
mBounds.width = aWidth;
|
||||
mBounds.height = aHeight;
|
||||
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_widget_set_usize(mWidget, aWidth, aHeight);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -171,6 +178,8 @@ NS_METHOD nsWidget::Resize(PRUint32 aX, PRUint32 aY, PRUint32 aWidth,
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsWidget::Enable(PRBool bState)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_widget_set_sensitive(mWidget, bState);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -182,6 +191,8 @@ NS_METHOD nsWidget::Enable(PRBool bState)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsWidget::SetFocus(void)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
gtk_widget_grab_focus(mWidget);
|
||||
return NS_OK;
|
||||
}
|
||||
@ -210,6 +221,8 @@ nscolor nsWidget::GetForegroundColor(void)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsWidget::SetForegroundColor(const nscolor &aColor)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
GtkStyle *style;
|
||||
GdkColor color;
|
||||
mForeground = aColor;
|
||||
@ -240,6 +253,8 @@ nscolor nsWidget::GetBackgroundColor(void)
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsWidget::SetBackgroundColor(const nscolor &aColor)
|
||||
{
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
|
||||
GtkStyle *style;
|
||||
GdkColor color;
|
||||
mBackground = aColor;
|
||||
@ -297,7 +312,12 @@ NS_METHOD nsWidget::SetCursor(nsCursor aCursor)
|
||||
{
|
||||
if (!mWidget || !mWidget->window)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
|
||||
/*
|
||||
g_return_val_if_fail(mWidget != NULL, NS_ERROR_FAILURE);
|
||||
g_return_val_if_fail(GTK_IS_WIDGET(mWidget), NS_ERROR_FAILURE);
|
||||
g_return_val_if_fail(mWidget->window != NULL, NS_ERROR_FAILURE);
|
||||
*/
|
||||
// Only change cursor if it's changing
|
||||
if (aCursor != mCursor) {
|
||||
GdkCursor *newCursor = 0;
|
||||
@ -442,16 +462,20 @@ NS_METHOD nsWidget::EndResizingChildren(void)
|
||||
|
||||
NS_METHOD nsWidget::GetPreferredSize(PRInt32& aWidth, PRInt32& aHeight)
|
||||
{
|
||||
g_return_val_if_fail(aWidth != 0 && aHeight != 0, NS_ERROR_FAILURE);
|
||||
|
||||
aWidth = mPreferredWidth;
|
||||
aHeight = mPreferredHeight;
|
||||
return (mPreferredWidth != 0 && mPreferredHeight != 0)?NS_OK:NS_ERROR_FAILURE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_METHOD nsWidget::SetPreferredSize(PRInt32 aWidth, PRInt32 aHeight)
|
||||
{
|
||||
mPreferredWidth = aWidth;
|
||||
mPreferredHeight = aHeight;
|
||||
return NS_OK;
|
||||
g_return_val_if_fail(aWidth != 0 && aHeight != 0, NS_ERROR_FAILURE);
|
||||
|
||||
mPreferredWidth = aWidth;
|
||||
mPreferredHeight = aHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_METHOD nsWidget::SetMenuBar(nsIMenuBar * aMenuBar)
|
||||
@ -500,10 +524,13 @@ nsresult nsWidget::StandardWindowCreate(nsIWidget *aParent,
|
||||
|
||||
if (parentWidget)
|
||||
{
|
||||
gtk_layout_put(GTK_LAYOUT(parentWidget), mWidget, mBounds.x, mBounds.y);
|
||||
if (GTK_IS_LAYOUT(parentWidget))
|
||||
{
|
||||
gtk_layout_put(GTK_LAYOUT(parentWidget), mWidget, mBounds.x, mBounds.y);
|
||||
#ifdef DBG
|
||||
g_print("nsWidget::SWC(%3d,%3d) - %s %p\n", mBounds.x, mBounds.y, mWidget->name, this);
|
||||
g_print("nsWidget::SWC(%3d,%3d) - %s %p\n", mBounds.x, mBounds.y, mWidget->name, this);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
InitCallbacks();
|
||||
|
@ -501,7 +501,10 @@ void *nsWindow::GetNativeData(PRUint32 aDataType)
|
||||
{
|
||||
switch(aDataType) {
|
||||
case NS_NATIVE_WINDOW:
|
||||
return (void *)GTK_LAYOUT(mWidget)->bin_window;
|
||||
if (GTK_IS_LAYOUT(mWidget))
|
||||
return (void *)GTK_LAYOUT(mWidget)->bin_window;
|
||||
else
|
||||
return (void *)mWidget->window;
|
||||
case NS_NATIVE_DISPLAY:
|
||||
return (void *)GDK_DISPLAY();
|
||||
case NS_NATIVE_WIDGET:
|
||||
|
Loading…
x
Reference in New Issue
Block a user