#
-# This file was automatically generated by tmake at 17:51, 1999/09/20
+# This file was automatically generated by tmake at 15:11, 1999/09/30
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
#
fileconf.o \
filefn.o \
filesys.o \
+ fontcmn.o \
framecmn.o \
fs_inet.o \
fs_zip.o \
hash.o \
helpbase.o \
http.o \
+ imagall.o \
imagbmp.o \
image.o \
imaggif.o \
fileconf.d \
filefn.d \
filesys.d \
+ fontcmn.d \
framecmn.d \
fs_inet.d \
fs_zip.d \
hash.d \
helpbase.d \
http.d \
+ imagall.d \
imagbmp.d \
image.d \
imaggif.d \
fileconf.o \
filefn.o \
filesys.o \
+ fontcmn.o \
framecmn.o \
fs_inet.o \
fs_zip.o \
hash.o \
helpbase.o \
http.o \
+ imagall.o \
imagbmp.o \
image.o \
imaggif.o \
fileconf.d \
filefn.d \
filesys.d \
+ fontcmn.d \
framecmn.d \
fs_inet.d \
fs_zip.d \
hash.d \
helpbase.d \
http.d \
+ imagall.d \
imagbmp.d \
image.d \
imaggif.d \
fileconf.o \
filefn.o \
filesys.o \
+ fontcmn.o \
framecmn.o \
fs_inet.o \
fs_zip.o \
hash.o \
helpbase.o \
http.o \
+ imagall.o \
imagbmp.o \
image.o \
imaggif.o \
fileconf.d \
filefn.d \
filesys.d \
+ fontcmn.d \
framecmn.d \
fs_inet.d \
fs_zip.d \
hash.d \
helpbase.d \
http.d \
+ imagall.d \
imagbmp.d \
image.d \
imaggif.d \
frame.cpp R
gauge.cpp R
gdiobj.cpp R
-gsockgtk.c R
icon.cpp R
listbox.cpp R
main.cpp R
GtkWidget *GetConnectWidget();
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
+ void OnInternalIdle();
#if wxUSE_TOOLTIPS
void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
#define GTK_MYFIXED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_myfixed_get_type (), GtkMyFixedClass)
#define GTK_IS_MYFIXED(obj) GTK_CHECK_TYPE (obj, gtk_myfixed_get_type ())
+/* Shadow types */
+typedef enum
+{
+ GTK_MYSHADOW_NONE,
+ GTK_MYSHADOW_THIN,
+ GTK_MYSHADOW_IN,
+ GTK_MYSHADOW_OUT,
+} GtkMyShadowType;
typedef struct _GtkMyFixed GtkMyFixed;
typedef struct _GtkMyFixedClass GtkMyFixedClass;
GtkContainer container;
GList *children;
#if (GTK_MINOR_VERSION > 0)
- GtkShadowType shadow_type;
+ GtkMyShadowType shadow_type;
#endif
};
GtkWidget* gtk_myfixed_new (void);
#if (GTK_MINOR_VERSION > 0)
void gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
- GtkShadowType type);
+ GtkMyShadowType type);
#endif
void gtk_myfixed_put (GtkMyFixed *myfixed,
GtkWidget *widget,
GtkWidget *GetConnectWidget();
bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle();
+ void OnInternalIdle();
#if wxUSE_TOOLTIPS
void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
#define GTK_MYFIXED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_myfixed_get_type (), GtkMyFixedClass)
#define GTK_IS_MYFIXED(obj) GTK_CHECK_TYPE (obj, gtk_myfixed_get_type ())
+/* Shadow types */
+typedef enum
+{
+ GTK_MYSHADOW_NONE,
+ GTK_MYSHADOW_THIN,
+ GTK_MYSHADOW_IN,
+ GTK_MYSHADOW_OUT,
+} GtkMyShadowType;
typedef struct _GtkMyFixed GtkMyFixed;
typedef struct _GtkMyFixedClass GtkMyFixedClass;
GtkContainer container;
GList *children;
#if (GTK_MINOR_VERSION > 0)
- GtkShadowType shadow_type;
+ GtkMyShadowType shadow_type;
#endif
};
GtkWidget* gtk_myfixed_new (void);
#if (GTK_MINOR_VERSION > 0)
void gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
- GtkShadowType type);
+ GtkMyShadowType type);
#endif
void gtk_myfixed_put (GtkMyFixed *myfixed,
GtkWidget *widget,
IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow)
BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
- EVT_PAINT(MyCanvas::OnPaint)
+// EVT_PAINT(MyCanvas::OnPaint)
END_EVENT_TABLE()
MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
const wxPoint &pos, const wxSize &size )
- : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER | wxTAB_TRAVERSAL )
+ : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER | wxTAB_TRAVERSAL, "test canvas" )
{
wxString choices[] =
{
wxListCtrl *m_listCtrl = new wxListCtrl(
this, -1, wxPoint(200, 10), wxSize(180, 120),
- wxLC_REPORT | wxSUNKEN_BORDER | wxLC_SINGLE_SEL );
+ wxLC_REPORT | wxSIMPLE_BORDER | wxLC_SINGLE_SEL );
m_listCtrl->InsertColumn(0, "First", wxLIST_FORMAT_LEFT, 90);
m_listCtrl->InsertColumn(1, "Last", wxLIST_FORMAT_LEFT, 90);
m_listCtrl->SetItemState( 3, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
(void) new wxListBox( this, -1, wxPoint(200,180), wxSize(180,120), 5, choices, wxLB_ALWAYS_SB );
+
+ wxWindow *test = new wxWindow( this, -1, wxPoint(10, 400), wxSize(130,120), wxSIMPLE_BORDER | wxTAB_TRAVERSAL );
+ test->SetBackgroundColour( "WHEAT" );
+ wxButton *test2 = new wxButton( test, -1, "Hallo", wxPoint(10,10) );
+
+ test = new wxWindow( this, -1, wxPoint(160, 400), wxSize(130,120), wxSUNKEN_BORDER | wxTAB_TRAVERSAL );
+ test->SetBackgroundColour( "WHEAT" );
+ test->SetCursor( wxCursor( wxCURSOR_NO_ENTRY ) );
+ test2 = new wxButton( test, -1, "Hallo", wxPoint(10,10) );
+ test2->SetCursor( wxCursor( wxCURSOR_PENCIL ) );
+ test = new wxWindow( this, -1, wxPoint(310, 400), wxSize(130,120), wxRAISED_BORDER | wxTAB_TRAVERSAL );
+ test->SetBackgroundColour( "WHEAT" );
+ test->SetCursor( wxCursor( wxCURSOR_PENCIL ) );
+ test2 = new wxButton( test, -1, "Hallo", wxPoint(10,10) );
+ test2->SetCursor( wxCursor( wxCURSOR_NO_ENTRY ) );
+
SetBackgroundColour( "WHEAT" );
+
+ SetCursor( wxCursor( wxCURSOR_IBEAM ) );
}
MyCanvas::~MyCanvas()
{
int y_s = m_yScroll*GetScrollPos( wxVERTICAL );
if ((y > y_s) && (y+h < y_s+h_p)) return;
- if (y-y_s < 5) { Scroll( -1, (y-5-h_p/2)/m_yScroll ); Refresh(); }
- if (y+h+5 > y_s+h_p) { Scroll( -1, (y+h-h_p/2+h+15)/m_yScroll); Refresh(); }
+ if (y-y_s < 5) { Scroll( -1, (y-5-h_p/2)/m_yScroll ); }
+ if (y+h+5 > y_s+h_p) { Scroll( -1, (y+h-h_p/2+h+15)/m_yScroll); }
}
else
{
int x_s = m_xScroll*GetScrollPos( wxHORIZONTAL );
if ((x > x_s) && (x+w < x_s+w_p)) return;
- if (x-x_s < 5) { Scroll( (x-5)/m_xScroll, -1 ); Refresh(); }
- if (x+w-5 > x_s+w_p) { Scroll( (x+w-w_p+15)/m_xScroll, -1 ); Refresh(); }
+ if (x-x_s < 5) { Scroll( (x-5)/m_xScroll, -1 ); }
+ if (x+w-5 > x_s+w_p) { Scroll( (x+w-w_p+15)/m_xScroll, -1 ); }
}
}
SetScrollPos( wxVERTICAL, m_yScrollPosition, TRUE );
}
- // BAD, BAD, can cause event loops if called from OnPaint(). KB.
- // Refresh();
#ifdef __WXMSW__
- // Necessary?
::UpdateWindow ((HWND) GetHWND());
+#else
+ Refresh();
#endif
}
#include "wx/gtk/win_gtk.h"
#include "wx/cursor.h"
+/*
+#include "gdk/gdkprivate.h"
+#include "gdk/gdkx.h"
+*/
+
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
extern wxList wxPendingDelete;
+/*
+//-----------------------------------------------------------------------------
+// instruct X to set the WM hint for positioning
+//-----------------------------------------------------------------------------
+
+extern "C" {
+
+static void gdk_window_set_position_hint( GdkWindow *window, gint x, gint y )
+{
+ GdkWindowPrivate *priv;
+ XSizeHints size_hints;
+
+ g_return_if_fail (window != NULL);
+
+ priv = (GdkWindowPrivate*) window;
+ if (priv->destroyed) return;
+
+ size_hints.flags = PPosition;
+ size_hints.x = x;
+ size_hints.y = y;
+
+ XSetWMNormalHints (priv->xdisplay, priv->xwindow, &size_hints);
+}
+
+}
+*/
+
//-----------------------------------------------------------------------------
// "delete_event"
//-----------------------------------------------------------------------------
position in "realize" and "map" */
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
+/*
+ gdk_window_set_position_hint( widget->window, win->m_x, win->m_y );
+*/
+
/* reset the icon */
if (win->m_icon != wxNullIcon)
{
{
if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
GtkOnSize( m_x, m_y, m_width, m_height );
+
+ wxWindow::OnInternalIdle();
}
bool wxDialog::Show( bool show )
#if wxUSE_STATUSBAR
if (m_frameStatusBar) m_frameStatusBar->OnInternalIdle();
#endif
+
+ wxWindow::OnInternalIdle();
}
void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
-extern bool g_blockEventsOnScroll;
+extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnScroll;
+extern wxCursor g_globalCursor;
-static bool g_hasDoubleClicked = FALSE;
+static bool g_hasDoubleClicked = FALSE;
//-----------------------------------------------------------------------------
// "button_release_event"
}
}
+void wxListBox::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (m_widget->window && cursor.Ok() && m_currentGdkCursor != cursor)
+ {
+ m_currentGdkCursor = cursor;
+
+ gdk_window_set_cursor( GTK_WIDGET(m_list)->window, m_currentGdkCursor.GetCursor() );
+
+ GList *child = m_list->children;
+ while (child)
+ {
+ GtkBin *bin = GTK_BIN( child->data );
+ GtkWidget *label = GTK_WIDGET( bin->child );
+
+ gdk_window_set_cursor( label->window, m_currentGdkCursor.GetCursor() );
+
+ child = child->next;
+ }
+ }
+
+ UpdateWindowUI();
+}
+
#endif
extern wxList wxPendingDelete;
+//-----------------------------------------------------------------------------
+// "switch_page"
+//-----------------------------------------------------------------------------
+
+static void gtk_mdi_page_change_callback(GtkNotebook *WXUNUSED(widget),
+ GtkNotebookPage *WXUNUSED(page),
+ gint page,
+ wxMDIParentFrame *parent )
+{
+ if (g_isIdle)
+ wxapp_install_idle_handler();
+
+ wxMDIChildFrame *child = parent->GetActiveChild();
+
+ if (!child) return;
+
+ wxActivateEvent event( wxEVT_ACTIVATE, TRUE, child->GetId() );
+ event.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event );
+}
+
//-----------------------------------------------------------------------------
// wxMDIParentFrame
//-----------------------------------------------------------------------------
m_widget = gtk_notebook_new();
+ gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page",
+ GTK_SIGNAL_FUNC(gtk_mdi_page_change_callback), (gpointer)parent );
+
gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 );
m_parent->DoAddChild( this );
#endif
#if (GTK_MINOR_VERSION > 0)
- myfixed->shadow_type = GTK_SHADOW_NONE;
+ myfixed->shadow_type = GTK_MYSHADOW_NONE;
#endif
myfixed->children = NULL;
}
void
-gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
- GtkShadowType type)
+gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
+ GtkMyShadowType type)
{
g_return_if_fail (myfixed != NULL);
g_return_if_fail (GTK_IS_MYFIXED (myfixed));
- if ((GtkShadowType) myfixed->shadow_type != type)
+ if ((GtkMyShadowType) myfixed->shadow_type != type)
{
myfixed->shadow_type = type;
attributes.width = widget->allocation.width;
attributes.height = widget->allocation.height;
- if (myfixed->shadow_type != GTK_SHADOW_NONE)
+ if (myfixed->shadow_type == GTK_MYSHADOW_NONE)
{
+ /* no border, no changes to sizes */
+ } else
+ if (myfixed->shadow_type == GTK_MYSHADOW_THIN)
+ {
+ /* GTK_MYSHADOW_THIN == wxSIMPLE_BORDER */
+ attributes.x += 1;
+ attributes.y += 1;
+ attributes.width -= 2;
+ attributes.height -= 2;
+ } else
+ {
+ /* GTK_MYSHADOW_IN == wxSUNKEN_BORDER */
+ /* GTK_MYSHADOW_OUT == wxRAISED_BORDER */
attributes.x += 2;
attributes.y += 2;
attributes.width -= 4;
widget->allocation = *allocation;
#if (GTK_MINOR_VERSION > 0)
- if (myfixed->shadow_type == GTK_SHADOW_NONE)
+ if (myfixed->shadow_type == GTK_MYSHADOW_NONE)
border = 0;
+ else
+ if (myfixed->shadow_type == GTK_MYSHADOW_THIN)
+ border = 1;
else
border = 2;
#else
win->m_width-dw, win->m_height-dh );
return;
}
+
+ if (win->HasFlag(wxSIMPLE_BORDER))
+ {
+ GdkGC *gc = gdk_gc_new( widget->window );
+ gdk_gc_set_foreground( gc, &widget->style->black );
+ gdk_draw_rectangle( widget->window, gc, FALSE,
+ dx, dy,
+ win->m_width-dw-1, win->m_height-dh-1 );
+ gdk_gc_unref( gc );
+ return;
+ }
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
if (g_blockEventsOnScroll) return FALSE;
-
+
if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
if (gdk_event->is_hint)
// "value_changed" from m_vAdjust
//-----------------------------------------------------------------------------
-static void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
+static void gtk_window_vscroll_callback( GtkAdjustment *adjust, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
-
- float diff = win->m_vAdjust->value - win->m_oldVerticalPos;
+
+ float diff = adjust->value - win->m_oldVerticalPos;
if (fabs(diff) < 0.2) return;
- win->m_oldVerticalPos = win->m_vAdjust->value;
-
- wxEventType command = wxEVT_NULL;
-
- float line_step = win->m_vAdjust->step_increment;
- float page_step = win->m_vAdjust->page_increment;
+
+ win->m_oldVerticalPos = adjust->value;
- if (win->IsScrolling())
- {
- command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
- else
- {
- if (fabs(win->m_vAdjust->value-win->m_vAdjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
- else if (fabs(win->m_vAdjust->value-win->m_vAdjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEUP;
- else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEDOWN;
- else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEUP;
- else command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
+ GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+ GtkRange *range = GTK_RANGE( scrolledWindow->vscrollbar );
+
+ wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
+ if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
+ else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
+
+// if (fabs(adjust->value-adjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
+// if (fabs(adjust->value-adjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- int value = (int)(win->m_vAdjust->value+0.5);
+ int value = (int)(adjust->value+0.5);
wxScrollWinEvent event( command, value, wxVERTICAL );
event.SetEventObject( win );
// "value_changed" from m_hAdjust
//-----------------------------------------------------------------------------
-static void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
+static void gtk_window_hscroll_callback( GtkAdjustment *adjust, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
- float diff = win->m_hAdjust->value - win->m_oldHorizontalPos;
+ float diff = adjust->value - win->m_oldHorizontalPos;
if (fabs(diff) < 0.2) return;
- win->m_oldHorizontalPos = win->m_hAdjust->value;
-
- wxEventType command = wxEVT_NULL;
-
- float line_step = win->m_hAdjust->step_increment;
- float page_step = win->m_hAdjust->page_increment;
+
+ win->m_oldHorizontalPos = adjust->value;
- if (win->IsScrolling())
- {
- command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
- else
- {
- if (fabs(win->m_hAdjust->value-win->m_hAdjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
- else if (fabs(win->m_hAdjust->value-win->m_hAdjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEUP;
- else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEDOWN;
- else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEUP;
- else command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
+ GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+ GtkRange *range = GTK_RANGE( scrolledWindow->hscrollbar );
+
+ wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
+ if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
+ else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
+
+// if (fabs(adjust->value-adjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
+// if (fabs(adjust->value-adjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- int value = (int)(win->m_hAdjust->value+0.5);
+ int value = (int)(adjust->value+0.5);
wxScrollWinEvent event( command, value, wxHORIZONTAL );
event.SetEventObject( win );
wxapp_install_idle_handler();
// don't test here as we can release the mouse while being over
-// a different window then the slider
+// a different window than the slider
//
// if (gdk_event->window != widget->slider) return FALSE;
{
// don't test here as we can release the mouse while being over
-// a different window then the slider
+// a different window than the slider
//
// if (gdk_event->window != widget->slider) return FALSE;
- GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
-
- if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
- else
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
+// GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+//
+// if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
+// gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
+// else
+// gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
win->SetScrolling( FALSE );
// "realize" from m_widget
//-----------------------------------------------------------------------------
-/* we cannot set colours, fonts and cursors before the widget has
+/* we cannot set colours and fonts before the widget has
been realized, so we do this directly after realization */
static gint
if (win->m_delayedForegroundColour)
win->SetForegroundColour( win->GetForegroundColour() );
- win->SetCursor( win->GetCursor() );
-
wxWindowCreateEvent event( win );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
m_isStaticBox = FALSE;
m_isRadioButton = FALSE;
m_acceptsFocus = FALSE;
+
+ m_cursor = *wxSTANDARD_CURSOR;
}
wxWindow::wxWindow()
if (HasFlag(wxRAISED_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_OUT );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_OUT );
}
else if (HasFlag(wxSUNKEN_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_IN );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_IN );
+ }
+ else if (HasFlag(wxSIMPLE_BORDER))
+ {
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_THIN );
}
else
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_NONE );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_NONE );
}
#else // GTK_MINOR_VERSION == 0
GtkViewport *viewport = GTK_VIEWPORT(scrolledWindow->viewport);
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
#if (GTK_MINOR_VERSION > 0)
- /* these are called when the "sunken" or "raised" borders are drawn */
+ /* these are called when the "sunken", "raised" or "simple" borders are drawn */
gtk_signal_connect( GTK_OBJECT(m_widget), "expose_event",
GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this );
cursor = *wxSTANDARD_CURSOR;
window = m_widget->window;
- if (window)
+ if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget)))
gdk_window_set_cursor( window, cursor.GetCursor() );
+
}
else
{
+
GdkWindow *window = m_widget->window;
- if (window)
+ if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget)))
gdk_window_set_cursor( window, cursor.GetCursor() );
+
}
}
#else
if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
{
- /* when using GTK 1.2 we set the border size to 2 */
+ /* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
dh += 2 * 2;
}
+ if (HasFlag(wxSIMPLE_BORDER))
+ {
+ /* when using GTK 1.2 we set the simple border size to 1 */
+ dw += 1 * 2;
+ dh += 1 * 2;
+ }
#endif
if (HasScrolling())
#else
if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
{
- /* when using GTK 1.2 we set the border size to 2 */
+ /* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
dh += 2 * 2;
}
+ if (HasFlag(wxSIMPLE_BORDER))
+ {
+ /* when using GTK 1.2 we set the simple border size to 1 */
+ dw += 1 * 2;
+ dh += 1 * 2;
+ }
#endif
if (HasScrolling())
{
{
wxCHECK_MSG( (m_widget != NULL), FALSE, _T("invalid window") );
- if (!wxWindowBase::SetCursor(cursor))
- {
- // don't leave if the GTK widget has just
- // been realized
- if (!m_delayedCursor) return FALSE;
- }
-
- GtkWidget *connect_widget = GetConnectWidget();
- if (!connect_widget->window)
- {
- // indicate that a new style has been set
- // but it couldn't get applied as the
- // widget hasn't been realized yet.
- m_delayedCursor = TRUE;
-
- // pretend we have done something
- return TRUE;
- }
-
-// gdk_window_set_cursor( connect_widget->window, GetCursor().GetCursor() );
-
- // cursor was set
- return TRUE;
+ return wxWindowBase::SetCursor( cursor );
}
void wxWindow::WarpPointer( int x, int y )
bool wxWindow::SetFont( const wxFont &font )
{
- wxCHECK_MSG( m_widget != NULL, FALSE, _T( "invalid window") );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
if (!wxWindowBase::SetFont(font))
{
m_vAdjust->value = fpos;
}
- if (!m_isScrolling) /* prevent recursion */
+/*
+ if (!m_isScrolling)
{
+*/
if (m_wxwindow->window)
{
if (orient == wxHORIZONTAL)
else
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
}
+/*
}
+*/
}
int wxWindow::GetScrollThumb( int orient ) const
#include "wx/gtk/win_gtk.h"
#include "wx/cursor.h"
+/*
+#include "gdk/gdkprivate.h"
+#include "gdk/gdkx.h"
+*/
+
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
extern wxList wxPendingDelete;
+/*
+//-----------------------------------------------------------------------------
+// instruct X to set the WM hint for positioning
+//-----------------------------------------------------------------------------
+
+extern "C" {
+
+static void gdk_window_set_position_hint( GdkWindow *window, gint x, gint y )
+{
+ GdkWindowPrivate *priv;
+ XSizeHints size_hints;
+
+ g_return_if_fail (window != NULL);
+
+ priv = (GdkWindowPrivate*) window;
+ if (priv->destroyed) return;
+
+ size_hints.flags = PPosition;
+ size_hints.x = x;
+ size_hints.y = y;
+
+ XSetWMNormalHints (priv->xdisplay, priv->xwindow, &size_hints);
+}
+
+}
+*/
+
//-----------------------------------------------------------------------------
// "delete_event"
//-----------------------------------------------------------------------------
position in "realize" and "map" */
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
+/*
+ gdk_window_set_position_hint( widget->window, win->m_x, win->m_y );
+*/
+
/* reset the icon */
if (win->m_icon != wxNullIcon)
{
{
if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow))
GtkOnSize( m_x, m_y, m_width, m_height );
+
+ wxWindow::OnInternalIdle();
}
bool wxDialog::Show( bool show )
#if wxUSE_STATUSBAR
if (m_frameStatusBar) m_frameStatusBar->OnInternalIdle();
#endif
+
+ wxWindow::OnInternalIdle();
}
void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
// data
//-----------------------------------------------------------------------------
-extern bool g_blockEventsOnDrag;
-extern bool g_blockEventsOnScroll;
+extern bool g_blockEventsOnDrag;
+extern bool g_blockEventsOnScroll;
+extern wxCursor g_globalCursor;
-static bool g_hasDoubleClicked = FALSE;
+static bool g_hasDoubleClicked = FALSE;
//-----------------------------------------------------------------------------
// "button_release_event"
}
}
+void wxListBox::OnInternalIdle()
+{
+ wxCursor cursor = m_cursor;
+ if (g_globalCursor.Ok()) cursor = g_globalCursor;
+
+ if (m_widget->window && cursor.Ok() && m_currentGdkCursor != cursor)
+ {
+ m_currentGdkCursor = cursor;
+
+ gdk_window_set_cursor( GTK_WIDGET(m_list)->window, m_currentGdkCursor.GetCursor() );
+
+ GList *child = m_list->children;
+ while (child)
+ {
+ GtkBin *bin = GTK_BIN( child->data );
+ GtkWidget *label = GTK_WIDGET( bin->child );
+
+ gdk_window_set_cursor( label->window, m_currentGdkCursor.GetCursor() );
+
+ child = child->next;
+ }
+ }
+
+ UpdateWindowUI();
+}
+
#endif
extern wxList wxPendingDelete;
+//-----------------------------------------------------------------------------
+// "switch_page"
+//-----------------------------------------------------------------------------
+
+static void gtk_mdi_page_change_callback(GtkNotebook *WXUNUSED(widget),
+ GtkNotebookPage *WXUNUSED(page),
+ gint page,
+ wxMDIParentFrame *parent )
+{
+ if (g_isIdle)
+ wxapp_install_idle_handler();
+
+ wxMDIChildFrame *child = parent->GetActiveChild();
+
+ if (!child) return;
+
+ wxActivateEvent event( wxEVT_ACTIVATE, TRUE, child->GetId() );
+ event.SetEventObject( child);
+ child->GetEventHandler()->ProcessEvent( event );
+}
+
//-----------------------------------------------------------------------------
// wxMDIParentFrame
//-----------------------------------------------------------------------------
m_widget = gtk_notebook_new();
+ gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page",
+ GTK_SIGNAL_FUNC(gtk_mdi_page_change_callback), (gpointer)parent );
+
gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 );
m_parent->DoAddChild( this );
#endif
#if (GTK_MINOR_VERSION > 0)
- myfixed->shadow_type = GTK_SHADOW_NONE;
+ myfixed->shadow_type = GTK_MYSHADOW_NONE;
#endif
myfixed->children = NULL;
}
void
-gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
- GtkShadowType type)
+gtk_myfixed_set_shadow_type (GtkMyFixed *myfixed,
+ GtkMyShadowType type)
{
g_return_if_fail (myfixed != NULL);
g_return_if_fail (GTK_IS_MYFIXED (myfixed));
- if ((GtkShadowType) myfixed->shadow_type != type)
+ if ((GtkMyShadowType) myfixed->shadow_type != type)
{
myfixed->shadow_type = type;
attributes.width = widget->allocation.width;
attributes.height = widget->allocation.height;
- if (myfixed->shadow_type != GTK_SHADOW_NONE)
+ if (myfixed->shadow_type == GTK_MYSHADOW_NONE)
{
+ /* no border, no changes to sizes */
+ } else
+ if (myfixed->shadow_type == GTK_MYSHADOW_THIN)
+ {
+ /* GTK_MYSHADOW_THIN == wxSIMPLE_BORDER */
+ attributes.x += 1;
+ attributes.y += 1;
+ attributes.width -= 2;
+ attributes.height -= 2;
+ } else
+ {
+ /* GTK_MYSHADOW_IN == wxSUNKEN_BORDER */
+ /* GTK_MYSHADOW_OUT == wxRAISED_BORDER */
attributes.x += 2;
attributes.y += 2;
attributes.width -= 4;
widget->allocation = *allocation;
#if (GTK_MINOR_VERSION > 0)
- if (myfixed->shadow_type == GTK_SHADOW_NONE)
+ if (myfixed->shadow_type == GTK_MYSHADOW_NONE)
border = 0;
+ else
+ if (myfixed->shadow_type == GTK_MYSHADOW_THIN)
+ border = 1;
else
border = 2;
#else
win->m_width-dw, win->m_height-dh );
return;
}
+
+ if (win->HasFlag(wxSIMPLE_BORDER))
+ {
+ GdkGC *gc = gdk_gc_new( widget->window );
+ gdk_gc_set_foreground( gc, &widget->style->black );
+ gdk_draw_rectangle( widget->window, gc, FALSE,
+ dx, dy,
+ win->m_width-dw-1, win->m_height-dh-1 );
+ gdk_gc_unref( gc );
+ return;
+ }
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
if (g_blockEventsOnScroll) return FALSE;
-
+
if (!win->IsOwnGtkWindow( gdk_event->window )) return FALSE;
if (gdk_event->is_hint)
// "value_changed" from m_vAdjust
//-----------------------------------------------------------------------------
-static void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
+static void gtk_window_vscroll_callback( GtkAdjustment *adjust, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
-
- float diff = win->m_vAdjust->value - win->m_oldVerticalPos;
+
+ float diff = adjust->value - win->m_oldVerticalPos;
if (fabs(diff) < 0.2) return;
- win->m_oldVerticalPos = win->m_vAdjust->value;
-
- wxEventType command = wxEVT_NULL;
-
- float line_step = win->m_vAdjust->step_increment;
- float page_step = win->m_vAdjust->page_increment;
+
+ win->m_oldVerticalPos = adjust->value;
- if (win->IsScrolling())
- {
- command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
- else
- {
- if (fabs(win->m_vAdjust->value-win->m_vAdjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
- else if (fabs(win->m_vAdjust->value-win->m_vAdjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEUP;
- else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEDOWN;
- else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEUP;
- else command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
+ GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+ GtkRange *range = GTK_RANGE( scrolledWindow->vscrollbar );
+
+ wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
+ if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
+ else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
+
+// if (fabs(adjust->value-adjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
+// if (fabs(adjust->value-adjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- int value = (int)(win->m_vAdjust->value+0.5);
+ int value = (int)(adjust->value+0.5);
wxScrollWinEvent event( command, value, wxVERTICAL );
event.SetEventObject( win );
// "value_changed" from m_hAdjust
//-----------------------------------------------------------------------------
-static void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
+static void gtk_window_hscroll_callback( GtkAdjustment *adjust, wxWindow *win )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
- float diff = win->m_hAdjust->value - win->m_oldHorizontalPos;
+ float diff = adjust->value - win->m_oldHorizontalPos;
if (fabs(diff) < 0.2) return;
- win->m_oldHorizontalPos = win->m_hAdjust->value;
-
- wxEventType command = wxEVT_NULL;
-
- float line_step = win->m_hAdjust->step_increment;
- float page_step = win->m_hAdjust->page_increment;
+
+ win->m_oldHorizontalPos = adjust->value;
- if (win->IsScrolling())
- {
- command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
- else
- {
- if (fabs(win->m_hAdjust->value-win->m_hAdjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
- else if (fabs(win->m_hAdjust->value-win->m_hAdjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLLWIN_LINEUP;
- else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEDOWN;
- else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLLWIN_PAGEUP;
- else command = wxEVT_SCROLLWIN_THUMBTRACK;
- }
+ GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+ GtkRange *range = GTK_RANGE( scrolledWindow->hscrollbar );
+
+ wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
+ if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
+ else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
+ else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
+
+// if (fabs(adjust->value-adjust->lower) < 0.2) command = wxEVT_SCROLLWIN_BOTTOM;
+// if (fabs(adjust->value-adjust->upper) < 0.2) command = wxEVT_SCROLLWIN_TOP;
- int value = (int)(win->m_hAdjust->value+0.5);
+ int value = (int)(adjust->value+0.5);
wxScrollWinEvent event( command, value, wxHORIZONTAL );
event.SetEventObject( win );
wxapp_install_idle_handler();
// don't test here as we can release the mouse while being over
-// a different window then the slider
+// a different window than the slider
//
// if (gdk_event->window != widget->slider) return FALSE;
{
// don't test here as we can release the mouse while being over
-// a different window then the slider
+// a different window than the slider
//
// if (gdk_event->window != widget->slider) return FALSE;
- GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
-
- if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
- else
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
+// GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
+//
+// if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
+// gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
+// else
+// gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
win->SetScrolling( FALSE );
// "realize" from m_widget
//-----------------------------------------------------------------------------
-/* we cannot set colours, fonts and cursors before the widget has
+/* we cannot set colours and fonts before the widget has
been realized, so we do this directly after realization */
static gint
if (win->m_delayedForegroundColour)
win->SetForegroundColour( win->GetForegroundColour() );
- win->SetCursor( win->GetCursor() );
-
wxWindowCreateEvent event( win );
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
m_isStaticBox = FALSE;
m_isRadioButton = FALSE;
m_acceptsFocus = FALSE;
+
+ m_cursor = *wxSTANDARD_CURSOR;
}
wxWindow::wxWindow()
if (HasFlag(wxRAISED_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_OUT );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_OUT );
}
else if (HasFlag(wxSUNKEN_BORDER))
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_IN );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_IN );
+ }
+ else if (HasFlag(wxSIMPLE_BORDER))
+ {
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_THIN );
}
else
{
- gtk_myfixed_set_shadow_type( myfixed, GTK_SHADOW_NONE );
+ gtk_myfixed_set_shadow_type( myfixed, GTK_MYSHADOW_NONE );
}
#else // GTK_MINOR_VERSION == 0
GtkViewport *viewport = GTK_VIEWPORT(scrolledWindow->viewport);
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
#if (GTK_MINOR_VERSION > 0)
- /* these are called when the "sunken" or "raised" borders are drawn */
+ /* these are called when the "sunken", "raised" or "simple" borders are drawn */
gtk_signal_connect( GTK_OBJECT(m_widget), "expose_event",
GTK_SIGNAL_FUNC(gtk_window_own_expose_callback), (gpointer)this );
cursor = *wxSTANDARD_CURSOR;
window = m_widget->window;
- if (window)
+ if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget)))
gdk_window_set_cursor( window, cursor.GetCursor() );
+
}
else
{
+
GdkWindow *window = m_widget->window;
- if (window)
+ if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget)))
gdk_window_set_cursor( window, cursor.GetCursor() );
+
}
}
#else
if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
{
- /* when using GTK 1.2 we set the border size to 2 */
+ /* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
dh += 2 * 2;
}
+ if (HasFlag(wxSIMPLE_BORDER))
+ {
+ /* when using GTK 1.2 we set the simple border size to 1 */
+ dw += 1 * 2;
+ dh += 1 * 2;
+ }
#endif
if (HasScrolling())
#else
if (HasFlag(wxRAISED_BORDER) || HasFlag(wxSUNKEN_BORDER))
{
- /* when using GTK 1.2 we set the border size to 2 */
+ /* when using GTK 1.2 we set the shadow border size to 2 */
dw += 2 * 2;
dh += 2 * 2;
}
+ if (HasFlag(wxSIMPLE_BORDER))
+ {
+ /* when using GTK 1.2 we set the simple border size to 1 */
+ dw += 1 * 2;
+ dh += 1 * 2;
+ }
#endif
if (HasScrolling())
{
{
wxCHECK_MSG( (m_widget != NULL), FALSE, _T("invalid window") );
- if (!wxWindowBase::SetCursor(cursor))
- {
- // don't leave if the GTK widget has just
- // been realized
- if (!m_delayedCursor) return FALSE;
- }
-
- GtkWidget *connect_widget = GetConnectWidget();
- if (!connect_widget->window)
- {
- // indicate that a new style has been set
- // but it couldn't get applied as the
- // widget hasn't been realized yet.
- m_delayedCursor = TRUE;
-
- // pretend we have done something
- return TRUE;
- }
-
-// gdk_window_set_cursor( connect_widget->window, GetCursor().GetCursor() );
-
- // cursor was set
- return TRUE;
+ return wxWindowBase::SetCursor( cursor );
}
void wxWindow::WarpPointer( int x, int y )
bool wxWindow::SetFont( const wxFont &font )
{
- wxCHECK_MSG( m_widget != NULL, FALSE, _T( "invalid window") );
+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid window") );
if (!wxWindowBase::SetFont(font))
{
m_vAdjust->value = fpos;
}
- if (!m_isScrolling) /* prevent recursion */
+/*
+ if (!m_isScrolling)
{
+*/
if (m_wxwindow->window)
{
if (orient == wxHORIZONTAL)
else
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
}
+/*
}
+*/
}
int wxWindow::GetScrollThumb( int orient ) const