Solved wxMotif scrolling display problem; added wxImageModule;
added wxRETAINED support in wxMotif; changed wxDC::SetBackground behaviour; changed OnKeyDown/OnChar behaviour; fixed wxToolBar toggle bugs; fixed wxImage on wxMotif bug whereby new was used to allocate XImage data git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -647,6 +647,18 @@ samples/thread/*.png
|
|||||||
samples/thread/*.ico
|
samples/thread/*.ico
|
||||||
samples/thread/*.txt
|
samples/thread/*.txt
|
||||||
|
|
||||||
|
samples/forty/*.cpp
|
||||||
|
samples/forty/*.h
|
||||||
|
samples/forty/makefile*
|
||||||
|
samples/forty/*.rc
|
||||||
|
samples/forty/*.def
|
||||||
|
samples/forty/*.bmp
|
||||||
|
samples/forty/*.xpm
|
||||||
|
samples/forty/*.xbm
|
||||||
|
samples/forty/*.png
|
||||||
|
samples/forty/*.ico
|
||||||
|
samples/forty/*.txt
|
||||||
|
|
||||||
samples/dde/*.cpp
|
samples/dde/*.cpp
|
||||||
samples/dde/*.h
|
samples/dde/*.h
|
||||||
samples/dde/makefile*
|
samples/dde/makefile*
|
||||||
|
@@ -25,7 +25,8 @@ wxMotif:
|
|||||||
|
|
||||||
- wxRadioBox sometimes doesn't show (e.g. in controls sample).
|
- wxRadioBox sometimes doesn't show (e.g. in controls sample).
|
||||||
|
|
||||||
- wxStaticText doesn't wrap.
|
- Can't set the colours for the buttons in the file selector, for
|
||||||
|
some reason.
|
||||||
|
|
||||||
General:
|
General:
|
||||||
--------
|
--------
|
||||||
|
@@ -12,16 +12,26 @@ wxMSW:
|
|||||||
|
|
||||||
- Makefiles for more compilers and samples; Cygwin makefiles
|
- Makefiles for more compilers and samples; Cygwin makefiles
|
||||||
rationalised.
|
rationalised.
|
||||||
- Added DLL support to VC++ makefiles.
|
- Added VC++ project file for compiling as DLL.
|
||||||
|
|
||||||
wxMotif:
|
wxMotif:
|
||||||
|
|
||||||
|
- Added OnEraseBackground invocation.
|
||||||
|
- Added wxRETAINED implementation for wxScrolledWindow.
|
||||||
|
- Cured scrolling display problem by adding XmUpdateDisplay.
|
||||||
|
- Tried to make lex-ing in the makefile more generic (command line
|
||||||
|
syntax should apply to both lex and flex).
|
||||||
|
- Changed file selector colours for consistency (except for buttons:
|
||||||
|
crashes for some reason).
|
||||||
|
- Fixed wxMotif version of wxImage::ConvertToBitmap (used new instead
|
||||||
|
of malloc, which causes memory problems).
|
||||||
|
|
||||||
General:
|
General:
|
||||||
|
|
||||||
- Further doc improvements.
|
- Further doc improvements.
|
||||||
- wxGenericValidator added.
|
- wxGenericValidator added.
|
||||||
|
- Added wxImageModule to image.cpp, so adds/cleans up standard handlers
|
||||||
|
automatically.
|
||||||
|
|
||||||
Beta 3, January 31st 1999
|
Beta 3, January 31st 1999
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@@ -7,3 +7,7 @@ Outstanding issues
|
|||||||
- No wxSpinButton
|
- No wxSpinButton
|
||||||
- Need a way of specifying default settings for colour/font/etc.
|
- Need a way of specifying default settings for colour/font/etc.
|
||||||
- More optimisation could be done to reduce X server traffic, etc.
|
- More optimisation could be done to reduce X server traffic, etc.
|
||||||
|
- Should scrollbars take on the background colour? Not right for
|
||||||
|
e.g. wxScrolledWindows, so maybe have wxSystemSettings value for
|
||||||
|
scrollbar colour, and/or ability to set scrollbar colour independently.
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
wxMotif TODO
|
wxMotif TODO
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Updated: 28/12/98
|
Updated: 11/02/99
|
||||||
|
|
||||||
-------------------------------o-------------------------
|
-------------------------------o-------------------------
|
||||||
|
|
||||||
@@ -16,24 +16,10 @@ High Priority
|
|||||||
- Have a central/per app file for colour settings, with a wxWin
|
- Have a central/per app file for colour settings, with a wxWin
|
||||||
app to allow changing settings interactively.
|
app to allow changing settings interactively.
|
||||||
|
|
||||||
- Colour setting in widgets (almost done). Should scrollbars take
|
- Implementation of default event processing (i.e. passing on an intercepted
|
||||||
on the background colour? Not right for e.g. wxScrolledWindows,
|
event such as OnChar to the system). Currently, such events are processed
|
||||||
so maybe have wxSystemSettings value for scrollbar colour, and/or
|
anyway, so for example intercepting left-click in a widget doesn't disable
|
||||||
ability to set scrollbar colour independently.
|
the default behaviour. See TODOs in window.cpp.
|
||||||
|
|
||||||
- Optimize wxWindow OnPaint to avoid flicker, collapsing Expose events
|
|
||||||
as per flicker fix in 1.68. It will be tricky to avoid
|
|
||||||
interfering with non-wxScrolledWindow widgets except by
|
|
||||||
explicitly testing for wxScrolledWindow.
|
|
||||||
|
|
||||||
- Implementation of OnEraseBackground. How? Call OnEraseBackground
|
|
||||||
just before OnPaint? Will duplicate Xlib's own erase of the background.
|
|
||||||
However, this is usually OK, because the default wxWindow::OnEraseBackground
|
|
||||||
can do nothing (SetBackgroundColour will make the background look OK).
|
|
||||||
And if a custom OnEraseBackground uses the same colour as the window
|
|
||||||
background, no flicker will be seen. If it does something else, such as
|
|
||||||
painting a tiled bitmap, then a slight flicker might be seen unless
|
|
||||||
X can be persuaded not to repaint the window background by default.
|
|
||||||
|
|
||||||
- wxRadioBox doesn't show up in the controls sample, though it's
|
- wxRadioBox doesn't show up in the controls sample, though it's
|
||||||
OK on other dialogs (e.g. printing sample).
|
OK on other dialogs (e.g. printing sample).
|
||||||
@@ -46,11 +32,12 @@ High Priority
|
|||||||
|
|
||||||
- Use wxImage to load other formats into wxBitmaps, such as PNG, BMP.
|
- Use wxImage to load other formats into wxBitmaps, such as PNG, BMP.
|
||||||
|
|
||||||
- Implement scaled Blit as per John Price's impementation for 1.68.
|
|
||||||
|
|
||||||
Low Priority
|
Low Priority
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
- Painting a retained window could be optimized further (see
|
||||||
|
wxWindow::DoPaint).
|
||||||
|
|
||||||
- Visuals: how to select an appropriate one? See Thomas Runge's
|
- Visuals: how to select an appropriate one? See Thomas Runge's
|
||||||
visual patch for 1.68 -- should be straightforward to port to 2.0.
|
visual patch for 1.68 -- should be straightforward to port to 2.0.
|
||||||
|
|
||||||
@@ -64,11 +51,7 @@ Low Priority
|
|||||||
when implemented as extra bitmap handlers, the code won't be linked
|
when implemented as extra bitmap handlers, the code won't be linked
|
||||||
unless needed. Update: see if wxImage can handle these formats.
|
unless needed. Update: see if wxImage can handle these formats.
|
||||||
|
|
||||||
- Enhance event handling such that you override e.g. left-click
|
- Get Dialog Editor working (better) under Motif.
|
||||||
and unless you call the base OnMouseEvent, the click won't be
|
|
||||||
sent to the button. Required for Dialog Editor.
|
|
||||||
|
|
||||||
- Get Dialog Editor working under Motif.
|
|
||||||
|
|
||||||
- New wxHelp version: try using the XmHTML widget at
|
- New wxHelp version: try using the XmHTML widget at
|
||||||
http://www.xs4all.nl/~ripley/XmHTML/.
|
http://www.xs4all.nl/~ripley/XmHTML/.
|
||||||
@@ -107,8 +90,6 @@ Low Priority
|
|||||||
- Miscellaneous classes e.g. wxJoystick (identical to GTK's one for
|
- Miscellaneous classes e.g. wxJoystick (identical to GTK's one for
|
||||||
Linux)
|
Linux)
|
||||||
|
|
||||||
- Blit scaling
|
|
||||||
|
|
||||||
- Get ODBC classes and sample working.
|
- Get ODBC classes and sample working.
|
||||||
|
|
||||||
- Work out why wxTextCtrl doesn't work as a stream buffer under
|
- Work out why wxTextCtrl doesn't work as a stream buffer under
|
||||||
|
@@ -176,6 +176,7 @@ class WXDLLEXPORT wxWindowDC: public wxDC
|
|||||||
void SetDCClipping (); // Helper function for setting clipping
|
void SetDCClipping (); // Helper function for setting clipping
|
||||||
|
|
||||||
inline WXGC GetGC() const { return m_gc; }
|
inline WXGC GetGC() const { return m_gc; }
|
||||||
|
inline WXGC GetBackingGC() const { return m_gcBacking; }
|
||||||
inline WXDisplay* GetDisplay() const { return m_display; }
|
inline WXDisplay* GetDisplay() const { return m_display; }
|
||||||
inline bool GetAutoSetting() const { return m_autoSetting; }
|
inline bool GetAutoSetting() const { return m_autoSetting; }
|
||||||
inline void SetAutoSetting(bool flag) { m_autoSetting = flag; }
|
inline void SetAutoSetting(bool flag) { m_autoSetting = flag; }
|
||||||
|
@@ -634,6 +634,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/// Motif-specific
|
/// Motif-specific
|
||||||
|
bool m_needsRefresh; // Do we need to repaint the backing store?
|
||||||
bool m_canAddEventHandler;
|
bool m_canAddEventHandler;
|
||||||
bool m_button1Pressed;
|
bool m_button1Pressed;
|
||||||
bool m_button2Pressed;
|
bool m_button2Pressed;
|
||||||
|
@@ -84,6 +84,10 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
|
|||||||
const wxPoint &pos, const wxSize &size )
|
const wxPoint &pos, const wxSize &size )
|
||||||
: wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER )
|
: wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER )
|
||||||
{
|
{
|
||||||
|
my_horse = (wxBitmap*) NULL;
|
||||||
|
my_square = (wxBitmap*) NULL;
|
||||||
|
my_anti = (wxBitmap*) NULL;
|
||||||
|
|
||||||
SetBackgroundColour(* wxWHITE);
|
SetBackgroundColour(* wxWHITE);
|
||||||
|
|
||||||
wxBitmap bitmap( 100, 100 );
|
wxBitmap bitmap( 100, 100 );
|
||||||
@@ -126,22 +130,24 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
|
|
||||||
dc.DrawText( "Loaded image", 30, 10 );
|
dc.DrawText( "Loaded image", 30, 10 );
|
||||||
if (my_square->Ok()) dc.DrawBitmap( *my_square, 30, 30 );
|
if (my_square && my_square->Ok()) dc.DrawBitmap( *my_square, 30, 30 );
|
||||||
|
|
||||||
dc.DrawText( "Drawn directly", 150, 10 );
|
dc.DrawText( "Drawn directly", 150, 10 );
|
||||||
dc.SetBrush( wxBrush( "orange", wxSOLID ) );
|
dc.SetBrush( wxBrush( "orange", wxSOLID ) );
|
||||||
dc.SetPen( *wxWHITE_PEN );
|
dc.SetPen( *wxWHITE_PEN );
|
||||||
dc.DrawRectangle( 150, 30, 100, 100 );
|
dc.DrawRectangle( 150, 30, 100, 100 );
|
||||||
|
|
||||||
if (my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 );
|
if (my_anti && my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 );
|
||||||
|
|
||||||
if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 );
|
if (my_horse && my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyCanvas::CreateAntiAliasedBitmap()
|
void MyCanvas::CreateAntiAliasedBitmap()
|
||||||
{
|
{
|
||||||
wxBitmap bitmap( 300, 300 );
|
wxBitmap bitmap( 300, 300 );
|
||||||
|
|
||||||
wxMemoryDC dc;
|
wxMemoryDC dc;
|
||||||
|
|
||||||
dc.SelectObject( bitmap );
|
dc.SelectObject( bitmap );
|
||||||
|
|
||||||
dc.Clear();
|
dc.Clear();
|
||||||
@@ -235,8 +241,6 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
|
|||||||
|
|
||||||
bool MyApp::OnInit()
|
bool MyApp::OnInit()
|
||||||
{
|
{
|
||||||
wxImage::AddHandler( new wxPNGHandler );
|
|
||||||
|
|
||||||
wxFrame *frame = new MyFrame();
|
wxFrame *frame = new MyFrame();
|
||||||
frame->Show( TRUE );
|
frame->Show( TRUE );
|
||||||
|
|
||||||
|
@@ -34,6 +34,7 @@ extern "C" {
|
|||||||
#include "wx/filefn.h"
|
#include "wx/filefn.h"
|
||||||
#include "wx/wfstream.h"
|
#include "wx/wfstream.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
#ifdef __SALFORDC__
|
#ifdef __SALFORDC__
|
||||||
#ifdef FAR
|
#ifdef FAR
|
||||||
@@ -1971,7 +1972,7 @@ wxBitmap wxImage::ConvertToBitmap() const
|
|||||||
// Create image
|
// Create image
|
||||||
|
|
||||||
XImage *data_image = XCreateImage( dpy, vis, bpp, ZPixmap, 0, 0, width, height, 32, 0 );
|
XImage *data_image = XCreateImage( dpy, vis, bpp, ZPixmap, 0, 0, width, height, 32, 0 );
|
||||||
data_image->data = new char[ data_image->bytes_per_line * data_image->height ];
|
data_image->data = (char*) malloc( data_image->bytes_per_line * data_image->height );
|
||||||
|
|
||||||
bitmap.Create( width, height, bpp );
|
bitmap.Create( width, height, bpp );
|
||||||
|
|
||||||
@@ -2278,3 +2279,19 @@ wxImage::wxImage( const wxBitmap &bitmap )
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// A module to allow wxImage initialization/cleanup
|
||||||
|
// without calling these functions from app.cpp or from
|
||||||
|
// the user's application.
|
||||||
|
|
||||||
|
class wxImageModule: public wxModule
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxImageModule)
|
||||||
|
public:
|
||||||
|
wxImageModule() {}
|
||||||
|
bool OnInit() { wxImage::InitStandardHandlers(); return TRUE; };
|
||||||
|
void OnExit() { wxImage::CleanUpHandlers(); };
|
||||||
|
};
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxImageModule, wxModule)
|
||||||
|
|
||||||
|
@@ -40,6 +40,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxWindow)
|
|||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXMOTIF__
|
||||||
|
// For wxRETAINED implementation
|
||||||
|
#include <Xm/Xm.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
wxScrolledWindow::wxScrolledWindow(void)
|
wxScrolledWindow::wxScrolledWindow(void)
|
||||||
{
|
{
|
||||||
m_xScrollPixelsPerLine = 0;
|
m_xScrollPixelsPerLine = 0;
|
||||||
@@ -105,6 +110,39 @@ void wxScrolledWindow::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY,
|
|||||||
m_xScrollLines = noUnitsX;
|
m_xScrollLines = noUnitsX;
|
||||||
m_yScrollLines = noUnitsY;
|
m_yScrollLines = noUnitsY;
|
||||||
|
|
||||||
|
#ifdef __WXMOTIF__
|
||||||
|
// Sorry, some Motif-specific code to implement a backing pixmap
|
||||||
|
// for the wxRETAINED style. Implementing a backing store can't
|
||||||
|
// be entirely generic because it relies on the wxWindowDC implementation
|
||||||
|
// to duplicate X drawing calls for the backing pixmap.
|
||||||
|
|
||||||
|
if ((m_windowStyle & wxRETAINED) == wxRETAINED)
|
||||||
|
{
|
||||||
|
Display* dpy = XtDisplay((Widget) GetMainWidget());
|
||||||
|
|
||||||
|
int totalPixelWidth = m_xScrollLines * m_xScrollPixelsPerLine;
|
||||||
|
int totalPixelHeight = m_yScrollLines * m_yScrollPixelsPerLine;
|
||||||
|
if (m_backingPixmap &&
|
||||||
|
!((m_pixmapWidth == totalPixelWidth) &&
|
||||||
|
(m_pixmapHeight == totalPixelHeight)))
|
||||||
|
{
|
||||||
|
XFreePixmap (dpy, (Pixmap) m_backingPixmap);
|
||||||
|
m_backingPixmap = (WXPixmap) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_backingPixmap &&
|
||||||
|
(noUnitsX != 0) && (noUnitsY != 0))
|
||||||
|
{
|
||||||
|
int depth = wxDisplayDepth();
|
||||||
|
m_pixmapWidth = totalPixelWidth;
|
||||||
|
m_pixmapHeight = totalPixelHeight;
|
||||||
|
m_backingPixmap = (WXPixmap) XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)),
|
||||||
|
m_pixmapWidth, m_pixmapHeight, depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
AdjustScrollbars();
|
AdjustScrollbars();
|
||||||
|
|
||||||
if (do_refresh && !noRefresh) Refresh();
|
if (do_refresh && !noRefresh) Refresh();
|
||||||
|
@@ -539,9 +539,10 @@ WXColormap wxApp::GetMainColormap(WXDisplay* display)
|
|||||||
if (!display) /* Must be called first with non-NULL display */
|
if (!display) /* Must be called first with non-NULL display */
|
||||||
return m_mainColormap;
|
return m_mainColormap;
|
||||||
|
|
||||||
Colormap c =
|
int defaultScreen = DefaultScreen((Display*) display);
|
||||||
DefaultColormapOfScreen(XScreenOfDisplay((Display*) display,
|
Screen* screen = XScreenOfDisplay((Display*) display, defaultScreen);
|
||||||
DefaultScreen((Display*) display)));
|
|
||||||
|
Colormap c = DefaultColormapOfScreen(screen);
|
||||||
|
|
||||||
if (!m_mainColormap)
|
if (!m_mainColormap)
|
||||||
m_mainColormap = (WXColormap) c;
|
m_mainColormap = (WXColormap) c;
|
||||||
|
@@ -37,6 +37,8 @@ About pens, brushes, and the autoSetting flag:
|
|||||||
#include "wx/dcmemory.h"
|
#include "wx/dcmemory.h"
|
||||||
#include "wx/window.h"
|
#include "wx/window.h"
|
||||||
#include "wx/app.h"
|
#include "wx/app.h"
|
||||||
|
#include "wx/image.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include <Xm/Xm.h>
|
#include <Xm/Xm.h>
|
||||||
@@ -144,6 +146,8 @@ wxWindowDC::wxWindowDC( wxWindow *window )
|
|||||||
XGCValues valReturn;
|
XGCValues valReturn;
|
||||||
XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn);
|
XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn);
|
||||||
m_oldFont = (WXFont) valReturn.font;
|
m_oldFont = (WXFont) valReturn.font;
|
||||||
|
|
||||||
|
SetBackground(wxBrush(m_window->GetBackgroundColour(), wxSOLID));
|
||||||
};
|
};
|
||||||
|
|
||||||
wxWindowDC::~wxWindowDC(void)
|
wxWindowDC::~wxWindowDC(void)
|
||||||
@@ -936,7 +940,40 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
if (m_pen.Ok() && m_autoSetting)
|
if (m_pen.Ok() && m_autoSetting)
|
||||||
SetPen (m_pen);
|
SetPen (m_pen);
|
||||||
|
|
||||||
if (m_pixmap && sourceDC->m_pixmap)
|
// Do bitmap scaling if necessary
|
||||||
|
|
||||||
|
wxBitmap *scaledBitmap = (wxBitmap*) NULL;
|
||||||
|
Pixmap sourcePixmap = (Pixmap) NULL;
|
||||||
|
double scaleX, scaleY;
|
||||||
|
GetUserScale(& scaleX, & scaleY);
|
||||||
|
|
||||||
|
// Sorry, can't scale masks just yet
|
||||||
|
if (!useMask && (scaleX != 1.0 || scaleY != 1.0) && sourceDC->IsKindOf(CLASSINFO(wxMemoryDC)))
|
||||||
|
{
|
||||||
|
wxMemoryDC* memDC = (wxMemoryDC*) sourceDC;
|
||||||
|
wxBitmap& bitmap = memDC->GetBitmap();
|
||||||
|
|
||||||
|
wxASSERT_MSG( (bitmap.Ok()), "Bad source bitmap in wxWindowDC::Blit");
|
||||||
|
|
||||||
|
wxImage image(bitmap);
|
||||||
|
if (!image.Ok())
|
||||||
|
{
|
||||||
|
sourcePixmap = (Pixmap) bitmap.GetPixmap();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int scaledW = (int) (bitmap.GetWidth() * scaleX);
|
||||||
|
int scaledH = (int) (bitmap.GetHeight() * scaleY);
|
||||||
|
|
||||||
|
image = image.Scale(scaledW, scaledH);
|
||||||
|
scaledBitmap = new wxBitmap(image.ConvertToBitmap());
|
||||||
|
sourcePixmap = (Pixmap) scaledBitmap->GetPixmap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sourcePixmap = (Pixmap) sourceDC->m_pixmap;
|
||||||
|
|
||||||
|
if (m_pixmap && sourcePixmap)
|
||||||
{
|
{
|
||||||
/* MATTHEW: [9] */
|
/* MATTHEW: [9] */
|
||||||
int orig = m_logicalFunction;
|
int orig = m_logicalFunction;
|
||||||
@@ -949,7 +986,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
|
|
||||||
if (m_window && m_window->GetBackingPixmap())
|
if (m_window && m_window->GetBackingPixmap())
|
||||||
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display,
|
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display,
|
||||||
(Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(),
|
(Pixmap) sourcePixmap, (Pixmap) m_window->GetBackingPixmap(),
|
||||||
(GC) m_gcBacking,
|
(GC) m_gcBacking,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
@@ -969,7 +1006,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
source->LogicalToDeviceXRel(width),
|
source->LogicalToDeviceXRel(width),
|
||||||
@@ -990,7 +1027,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
// +++ MARKUS (mho@comnets.rwth-aachen): error on blitting bitmaps with depth 1
|
// +++ MARKUS (mho@comnets.rwth-aachen): error on blitting bitmaps with depth 1
|
||||||
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && ((wxMemoryDC*) source)->GetBitmap().GetDepth() == 1)
|
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && ((wxMemoryDC*) source)->GetBitmap().GetDepth() == 1)
|
||||||
{
|
{
|
||||||
XCopyPlane ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking,
|
XCopyPlane ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
source->LogicalToDeviceXRel(width),
|
source->LogicalToDeviceXRel(width),
|
||||||
@@ -999,7 +1036,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XCopyArea ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking,
|
XCopyArea ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
source->LogicalToDeviceXRel(width),
|
source->LogicalToDeviceXRel(width),
|
||||||
@@ -1022,7 +1059,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) &&
|
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) &&
|
||||||
((wxMemoryDC*)source)->GetBitmap().Ok() && (((wxMemoryDC*)source)->GetBitmap().GetDepth () == 1))
|
((wxMemoryDC*)source)->GetBitmap().Ok() && (((wxMemoryDC*)source)->GetBitmap().GetDepth () == 1))
|
||||||
{
|
{
|
||||||
XCopyPlane ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
XCopyPlane ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
source->LogicalToDeviceXRel(width),
|
source->LogicalToDeviceXRel(width),
|
||||||
@@ -1031,7 +1068,7 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XCopyArea ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
XCopyArea ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
|
||||||
source->LogicalToDeviceX (xsrc),
|
source->LogicalToDeviceX (xsrc),
|
||||||
source->LogicalToDeviceY (ysrc),
|
source->LogicalToDeviceY (ysrc),
|
||||||
source->LogicalToDeviceXRel(width),
|
source->LogicalToDeviceXRel(width),
|
||||||
@@ -1051,8 +1088,12 @@ bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
|
|||||||
|
|
||||||
SetLogicalFunction(orig);
|
SetLogicalFunction(orig);
|
||||||
|
|
||||||
|
if (scaledBitmap) delete scaledBitmap;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
if (scaledBitmap) delete scaledBitmap;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1879,9 +1920,13 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
|
|||||||
|
|
||||||
int pixel = m_backgroundBrush.GetColour().AllocColour(m_display);
|
int pixel = m_backgroundBrush.GetColour().AllocColour(m_display);
|
||||||
|
|
||||||
|
// New behaviour, 10/2/99: setting the background brush of a DC
|
||||||
|
// doesn't affect the window background colour.
|
||||||
|
/*
|
||||||
// XSetWindowBackground doesn't work for non-Window pixmaps
|
// XSetWindowBackground doesn't work for non-Window pixmaps
|
||||||
if (!this->IsKindOf(CLASSINFO(wxMemoryDC)))
|
if (!this->IsKindOf(CLASSINFO(wxMemoryDC)))
|
||||||
XSetWindowBackground ((Display*) m_display, (Pixmap) m_pixmap, pixel);
|
XSetWindowBackground ((Display*) m_display, (Pixmap) m_pixmap, pixel);
|
||||||
|
*/
|
||||||
|
|
||||||
// Necessary for ::DrawIcon, which use fg/bg pixel or the GC.
|
// Necessary for ::DrawIcon, which use fg/bg pixel or the GC.
|
||||||
// And Blit,... (Any fct that use XCopyPlane, in fact.)
|
// And Blit,... (Any fct that use XCopyPlane, in fact.)
|
||||||
|
@@ -649,9 +649,7 @@ static void wxDialogBoxRepaintProc(Widget w, XtPointer WXUNUSED(c_data), XEvent
|
|||||||
|
|
||||||
if (event -> xexpose.count == 0)
|
if (event -> xexpose.count == 0)
|
||||||
{
|
{
|
||||||
wxPaintEvent event(win->GetId());
|
win->DoPaint();
|
||||||
event.SetEventObject(win);
|
|
||||||
win->GetEventHandler()->ProcessEvent(event);
|
|
||||||
|
|
||||||
win->ClearUpdateRects();
|
win->ClearUpdateRects();
|
||||||
}
|
}
|
||||||
@@ -699,8 +697,16 @@ static void wxDialogBoxEventHandler (Widget wid,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
keyEvent.SetEventType(wxEVT_CHAR);
|
// For simplicity, OnKeyDown is the same as OnChar
|
||||||
dialog->GetEventHandler()->ProcessEvent(keyEvent);
|
// TODO: filter modifier key presses from OnChar
|
||||||
|
keyEvent.SetEventType(wxEVT_KEY_DOWN);
|
||||||
|
|
||||||
|
// Only process OnChar if OnKeyDown didn't swallow it
|
||||||
|
if (!dialog->GetEventHandler()->ProcessEvent (keyEvent))
|
||||||
|
{
|
||||||
|
keyEvent.SetEventType(wxEVT_CHAR);
|
||||||
|
dialog->GetEventHandler()->ProcessEvent(keyEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include "wx/filedlg.h"
|
#include "wx/filedlg.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/app.h"
|
#include "wx/app.h"
|
||||||
|
#include "wx/settings.h"
|
||||||
|
|
||||||
#include <Xm/Xm.h>
|
#include <Xm/Xm.h>
|
||||||
#include <Xm/MwmUtil.h>
|
#include <Xm/MwmUtil.h>
|
||||||
@@ -142,6 +143,38 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
|
|||||||
m_pos = pos;
|
m_pos = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wxChangeListBoxColours(wxWindow* win, Widget widget)
|
||||||
|
{
|
||||||
|
win->DoChangeBackgroundColour((WXWidget) widget, *wxWHITE);
|
||||||
|
|
||||||
|
// Change colour of the scrolled areas of the listboxes
|
||||||
|
Widget listParent = XtParent (widget);
|
||||||
|
win->DoChangeBackgroundColour((WXWidget) listParent, *wxWHITE, TRUE);
|
||||||
|
|
||||||
|
Widget hsb = (Widget) 0;
|
||||||
|
Widget vsb = (Widget) 0;
|
||||||
|
XtVaGetValues (listParent,
|
||||||
|
XmNhorizontalScrollBar, &hsb,
|
||||||
|
XmNverticalScrollBar, &vsb,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
/* TODO: should scrollbars be affected? Should probably have separate
|
||||||
|
* function to change them (by default, taken from wxSystemSettings)
|
||||||
|
*/
|
||||||
|
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
||||||
|
win->DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE);
|
||||||
|
win->DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE);
|
||||||
|
|
||||||
|
if (hsb)
|
||||||
|
XtVaSetValues (hsb,
|
||||||
|
XmNtroughColor, backgroundColour.AllocColour(XtDisplay(hsb)),
|
||||||
|
NULL);
|
||||||
|
if (vsb)
|
||||||
|
XtVaSetValues (vsb,
|
||||||
|
XmNtroughColor, backgroundColour.AllocColour(XtDisplay(vsb)),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
int wxFileDialog::ShowModal()
|
int wxFileDialog::ShowModal()
|
||||||
{
|
{
|
||||||
wxBeginBusyCursor();
|
wxBeginBusyCursor();
|
||||||
@@ -158,6 +191,15 @@ int wxFileDialog::ShowModal()
|
|||||||
Widget fileSel = XmCreateFileSelectionDialog(parentWidget, "file_selector", NULL, 0);
|
Widget fileSel = XmCreateFileSelectionDialog(parentWidget, "file_selector", NULL, 0);
|
||||||
XtUnmanageChild(XmFileSelectionBoxGetChild(fileSel, XmDIALOG_HELP_BUTTON));
|
XtUnmanageChild(XmFileSelectionBoxGetChild(fileSel, XmDIALOG_HELP_BUTTON));
|
||||||
|
|
||||||
|
Widget filterWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_FILTER_TEXT);
|
||||||
|
Widget selectionWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_TEXT);
|
||||||
|
Widget dirListWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_DIR_LIST);
|
||||||
|
Widget fileListWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_LIST);
|
||||||
|
Widget okWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_OK_BUTTON);
|
||||||
|
Widget applyWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_APPLY_BUTTON);
|
||||||
|
Widget cancelWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_CANCEL_BUTTON);
|
||||||
|
|
||||||
|
|
||||||
Widget shell = XtParent(fileSel);
|
Widget shell = XtParent(fileSel);
|
||||||
|
|
||||||
if (!m_message.IsNull())
|
if (!m_message.IsNull())
|
||||||
@@ -180,7 +222,6 @@ int wxFileDialog::ShowModal()
|
|||||||
|
|
||||||
if (entirePath != "")
|
if (entirePath != "")
|
||||||
{
|
{
|
||||||
Widget selectionWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_TEXT);
|
|
||||||
XmTextSetString(selectionWidget, (char*) (const char*) entirePath);
|
XmTextSetString(selectionWidget, (char*) (const char*) entirePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +233,6 @@ int wxFileDialog::ShowModal()
|
|||||||
else
|
else
|
||||||
filter = m_wildCard;
|
filter = m_wildCard;
|
||||||
|
|
||||||
Widget filterWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_FILTER_TEXT);
|
|
||||||
XmTextSetString(filterWidget, (char*) (const char*) filter);
|
XmTextSetString(filterWidget, (char*) (const char*) filter);
|
||||||
XmFileSelectionDoSearch(fileSel, NULL);
|
XmFileSelectionDoSearch(fileSel, NULL);
|
||||||
}
|
}
|
||||||
@@ -229,6 +269,18 @@ int wxFileDialog::ShowModal()
|
|||||||
XmNresizePolicy, XmRESIZE_NONE,
|
XmNresizePolicy, XmRESIZE_NONE,
|
||||||
NULL);
|
NULL);
|
||||||
#endif
|
#endif
|
||||||
|
DoChangeBackgroundColour((WXWidget) fileSel, m_backgroundColour);
|
||||||
|
DoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE);
|
||||||
|
DoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE);
|
||||||
|
|
||||||
|
/* For some reason this crashes
|
||||||
|
DoChangeBackgroundColour((WXWidget) okWidget, m_backgroundColour, TRUE);
|
||||||
|
DoChangeBackgroundColour((WXWidget) cancelWidget, m_backgroundColour, TRUE);
|
||||||
|
DoChangeBackgroundColour((WXWidget) applyWidget, m_backgroundColour, TRUE);
|
||||||
|
*/
|
||||||
|
|
||||||
|
wxChangeListBoxColours(this, dirListWidget);
|
||||||
|
wxChangeListBoxColours(this, fileListWidget);
|
||||||
|
|
||||||
XtManageChild(fileSel);
|
XtManageChild(fileSel);
|
||||||
|
|
||||||
|
@@ -760,8 +760,8 @@ void wxListBox::ChangeBackgroundColour()
|
|||||||
XmNverticalScrollBar, &vsb,
|
XmNverticalScrollBar, &vsb,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
/* TODO: should scrollbars be affected? Should probably have separate
|
/* TODO: should scrollbars be affected? Should probably have separate
|
||||||
* function to change them (by default, taken from wxSystemSettings)
|
* function to change them (by default, taken from wxSystemSettings)
|
||||||
*/
|
*/
|
||||||
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
||||||
DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE);
|
DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE);
|
||||||
|
@@ -201,14 +201,19 @@ $(WXLIB) : $(OBJECTS)
|
|||||||
# problems with lex_yy.c. See also note about LEX_SCANNER
|
# problems with lex_yy.c. See also note about LEX_SCANNER
|
||||||
# above.
|
# above.
|
||||||
../common/lex_yy.c: ../common/lexer.l
|
../common/lex_yy.c: ../common/lexer.l
|
||||||
$(LEX) -o../common/lex.yy.c ../common/lexer.l
|
$(LEX) ../common/lexer.l
|
||||||
sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \
|
sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \
|
||||||
sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
|
sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
|
||||||
sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c
|
sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c
|
||||||
/bin/rm -f ../common/lex.yy.c
|
/bin/rm -f lex.yy.c
|
||||||
|
|
||||||
# N.B. if you have lex instead of flex, replace the $(LEX) line above
|
# The above should work with both lex and flex, but just in case not,
|
||||||
# with the following:
|
# here are alternative syntaxes.
|
||||||
|
#
|
||||||
|
# Flex-style syntax:
|
||||||
|
# $(LEX) -olex.yy.c ../common/lexer.l
|
||||||
|
|
||||||
|
# Lex-style syntax:
|
||||||
# $(LEX) ../common/lexer.l
|
# $(LEX) ../common/lexer.l
|
||||||
|
|
||||||
# Replace yacc with bison if you run into compilation
|
# Replace yacc with bison if you run into compilation
|
||||||
|
@@ -167,6 +167,10 @@ bool wxToolBar::CreateTools()
|
|||||||
NULL);
|
NULL);
|
||||||
XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback,
|
XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback,
|
||||||
(XtPointer) this);
|
(XtPointer) this);
|
||||||
|
|
||||||
|
XtVaSetValues ((Widget) button,
|
||||||
|
XmNselectColor, m_backgroundColour.AllocColour(XtDisplay((Widget) button)),
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -318,190 +322,6 @@ bool wxToolBar::CreateTools()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Old version, assuming we use a form. Now we use
|
|
||||||
// a bulletin board, so we can create controls on the toolbar.
|
|
||||||
#if 0
|
|
||||||
bool wxToolBar::CreateTools()
|
|
||||||
{
|
|
||||||
if (m_tools.Number() == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
// Separator spacing
|
|
||||||
const int separatorSize = GetToolSeparation(); // 8;
|
|
||||||
|
|
||||||
int currentSpacing = 0;
|
|
||||||
|
|
||||||
m_widgets.Clear();
|
|
||||||
Widget prevButton = (Widget) 0;
|
|
||||||
wxNode* node = m_tools.First();
|
|
||||||
while (node)
|
|
||||||
{
|
|
||||||
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
|
|
||||||
|
|
||||||
if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR)
|
|
||||||
currentSpacing = separatorSize;
|
|
||||||
else if (tool->m_bitmap1.Ok())
|
|
||||||
{
|
|
||||||
Widget button = (Widget) 0;
|
|
||||||
|
|
||||||
if (tool->m_isToggle)
|
|
||||||
{
|
|
||||||
button = XtVaCreateManagedWidget("toggleButton",
|
|
||||||
xmToggleButtonWidgetClass, (Widget) m_mainWidget,
|
|
||||||
XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
|
|
||||||
XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
|
|
||||||
XmNleftOffset, currentSpacing,
|
|
||||||
XmNtopAttachment, XmATTACH_FORM,
|
|
||||||
// XmNpushButtonEnabled, True,
|
|
||||||
XmNmultiClick, XmMULTICLICK_KEEP,
|
|
||||||
XmNlabelType, XmPIXMAP,
|
|
||||||
NULL);
|
|
||||||
XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback,
|
|
||||||
(XtPointer) this);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
button = XtVaCreateManagedWidget("button",
|
|
||||||
xmPushButtonWidgetClass, (Widget) m_mainWidget,
|
|
||||||
XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
|
|
||||||
XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
|
|
||||||
XmNleftOffset, currentSpacing,
|
|
||||||
XmNtopAttachment, XmATTACH_FORM,
|
|
||||||
XmNpushButtonEnabled, True,
|
|
||||||
XmNmultiClick, XmMULTICLICK_KEEP,
|
|
||||||
XmNlabelType, XmPIXMAP,
|
|
||||||
NULL);
|
|
||||||
XtAddCallback (button,
|
|
||||||
XmNactivateCallback, (XtCallbackProc) wxToolButtonCallback,
|
|
||||||
(XtPointer) this);
|
|
||||||
}
|
|
||||||
|
|
||||||
// For each button, if there is a mask, we must create
|
|
||||||
// a new wxBitmap that has the correct background colour
|
|
||||||
// for the button. Otherwise the background will just be
|
|
||||||
// e.g. black if a transparent XPM has been loaded.
|
|
||||||
wxBitmap originalBitmap = tool->m_bitmap1;
|
|
||||||
|
|
||||||
if (tool->m_bitmap1.GetMask())
|
|
||||||
{
|
|
||||||
int backgroundPixel;
|
|
||||||
XtVaGetValues(button, XmNbackground, &backgroundPixel,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
|
|
||||||
wxColour col;
|
|
||||||
col.SetPixel(backgroundPixel);
|
|
||||||
|
|
||||||
wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap1, col);
|
|
||||||
|
|
||||||
tool->m_bitmap1 = newBitmap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a selected/toggled bitmap. If there isn't a m_bitmap2,
|
|
||||||
// we need to create it (with a darker, selected background)
|
|
||||||
int backgroundPixel;
|
|
||||||
if (tool->m_isToggle)
|
|
||||||
XtVaGetValues(button, XmNselectColor, &backgroundPixel,
|
|
||||||
NULL);
|
|
||||||
else
|
|
||||||
XtVaGetValues(button, XmNarmColor, &backgroundPixel,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
wxColour col;
|
|
||||||
col.SetPixel(backgroundPixel);
|
|
||||||
|
|
||||||
if (tool->m_bitmap2.Ok() && tool->m_bitmap2.GetMask())
|
|
||||||
{
|
|
||||||
// Use what's there
|
|
||||||
wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap2, col);
|
|
||||||
tool->m_bitmap2 = newBitmap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Use unselected bitmap
|
|
||||||
if (originalBitmap.GetMask())
|
|
||||||
{
|
|
||||||
wxBitmap newBitmap = wxCreateMaskedBitmap(originalBitmap, col);
|
|
||||||
tool->m_bitmap2 = newBitmap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tool->m_bitmap2 = tool->m_bitmap1;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pixmap pixmap = (Pixmap) tool->m_bitmap1.GetPixmap();
|
|
||||||
Pixmap insensPixmap = (Pixmap) tool->m_bitmap1.GetInsensPixmap();
|
|
||||||
|
|
||||||
if (tool->m_isToggle)
|
|
||||||
{
|
|
||||||
// Toggle button
|
|
||||||
Pixmap pixmap2 = (Pixmap) 0;
|
|
||||||
Pixmap insensPixmap2 = (Pixmap) 0;
|
|
||||||
|
|
||||||
// If there's a bitmap for the toggled state, use it,
|
|
||||||
// otherwise generate one.
|
|
||||||
if (tool->m_bitmap2.Ok())
|
|
||||||
{
|
|
||||||
pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap();
|
|
||||||
insensPixmap2 = (Pixmap) tool->m_bitmap2.GetInsensPixmap();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button);
|
|
||||||
insensPixmap2 = XCreateInsensitivePixmap((Display*) wxGetDisplay(), pixmap2);
|
|
||||||
m_pixmaps.Append((wxObject*) insensPixmap2); // Store for later deletion
|
|
||||||
}
|
|
||||||
XtVaSetValues (button,
|
|
||||||
XmNindicatorOn, False,
|
|
||||||
XmNshadowThickness, 2,
|
|
||||||
// XmNborderWidth, 0,
|
|
||||||
// XmNspacing, 0,
|
|
||||||
XmNmarginWidth, 0,
|
|
||||||
XmNmarginHeight, 0,
|
|
||||||
XmNfillOnSelect, True,
|
|
||||||
XmNlabelPixmap, pixmap,
|
|
||||||
XmNselectPixmap, pixmap2,
|
|
||||||
XmNlabelInsensitivePixmap, insensPixmap,
|
|
||||||
XmNselectInsensitivePixmap, insensPixmap2,
|
|
||||||
XmNlabelType, XmPIXMAP,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Pixmap pixmap2 = (Pixmap) 0;
|
|
||||||
|
|
||||||
// If there's a bitmap for the armed state, use it,
|
|
||||||
// otherwise generate one.
|
|
||||||
if (tool->m_bitmap2.Ok())
|
|
||||||
{
|
|
||||||
pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button);
|
|
||||||
|
|
||||||
}
|
|
||||||
// Normal button
|
|
||||||
XtVaSetValues(button,
|
|
||||||
XmNlabelPixmap, pixmap,
|
|
||||||
XmNlabelInsensitivePixmap, insensPixmap,
|
|
||||||
XmNarmPixmap, pixmap2,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
XtAddEventHandler (button, EnterWindowMask | LeaveWindowMask,
|
|
||||||
False, wxToolButtonPopupCallback, (XtPointer) this);
|
|
||||||
m_widgets.Append(tool->m_index, (wxObject*) button);
|
|
||||||
|
|
||||||
prevButton = button;
|
|
||||||
currentSpacing = 0;
|
|
||||||
}
|
|
||||||
node = node->Next();
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void wxToolBar::SetToolBitmapSize(const wxSize& size)
|
void wxToolBar::SetToolBitmapSize(const wxSize& size)
|
||||||
{
|
{
|
||||||
// TODO not necessary?
|
// TODO not necessary?
|
||||||
@@ -605,7 +425,7 @@ wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBit
|
|||||||
else
|
else
|
||||||
tool->m_y = m_yMargin;
|
tool->m_y = m_yMargin;
|
||||||
|
|
||||||
wxSize& size = GetToolSize();
|
wxSize size = GetToolSize();
|
||||||
tool->SetSize(size.x, size.y);
|
tool->SetSize(size.x, size.y);
|
||||||
|
|
||||||
m_tools.Append((long)index, tool);
|
m_tools.Append((long)index, tool);
|
||||||
@@ -663,7 +483,7 @@ void wxToolButtonCallback (Widget w, XtPointer clientData,
|
|||||||
return;
|
return;
|
||||||
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
|
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
|
||||||
if (tool->m_isToggle)
|
if (tool->m_isToggle)
|
||||||
tool->m_toggleState = toolBar->GetToolState(index);
|
tool->m_toggleState = !tool->m_toggleState;
|
||||||
|
|
||||||
(void) toolBar->OnLeftClick(index, tool->m_toggleState);
|
(void) toolBar->OnLeftClick(index, tool->m_toggleState);
|
||||||
}
|
}
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
#include "wx/settings.h"
|
#include "wx/settings.h"
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
#include "wx/frame.h"
|
#include "wx/frame.h"
|
||||||
|
#include "wx/scrolwin.h"
|
||||||
|
|
||||||
#include "wx/menuitem.h"
|
#include "wx/menuitem.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
@@ -114,6 +115,7 @@ wxWindow::wxWindow()
|
|||||||
m_clientData = NULL;
|
m_clientData = NULL;
|
||||||
|
|
||||||
/// Motif-specific
|
/// Motif-specific
|
||||||
|
m_needsRefresh = TRUE;
|
||||||
m_mainWidget = (WXWidget) 0;
|
m_mainWidget = (WXWidget) 0;
|
||||||
m_button1Pressed = FALSE;
|
m_button1Pressed = FALSE;
|
||||||
m_button2Pressed = FALSE;
|
m_button2Pressed = FALSE;
|
||||||
@@ -295,6 +297,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
|
|||||||
m_clientData = NULL;
|
m_clientData = NULL;
|
||||||
|
|
||||||
// Motif-specific
|
// Motif-specific
|
||||||
|
m_needsRefresh = TRUE;
|
||||||
m_canAddEventHandler = FALSE;
|
m_canAddEventHandler = FALSE;
|
||||||
m_mainWidget = (WXWidget) 0;
|
m_mainWidget = (WXWidget) 0;
|
||||||
m_button1Pressed = FALSE;
|
m_button1Pressed = FALSE;
|
||||||
@@ -991,6 +994,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
|
|||||||
|
|
||||||
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
|
void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
|
||||||
{
|
{
|
||||||
|
m_needsRefresh = TRUE;
|
||||||
Display *display = XtDisplay((Widget) GetMainWidget());
|
Display *display = XtDisplay((Widget) GetMainWidget());
|
||||||
Window thisWindow = XtWindow((Widget) GetMainWidget());
|
Window thisWindow = XtWindow((Widget) GetMainWidget());
|
||||||
|
|
||||||
@@ -1478,10 +1482,12 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
|
|||||||
node = node->Next();
|
node = node->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XmUpdateDisplay((Widget) GetMainWidget());
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::OnChar(wxKeyEvent& event)
|
void wxWindow::OnChar(wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
|
event.Skip();
|
||||||
/* ??
|
/* ??
|
||||||
if ( event.KeyCode() == WXK_TAB ) {
|
if ( event.KeyCode() == WXK_TAB ) {
|
||||||
// propagate the TABs to the parent - it's up to it to decide what
|
// propagate the TABs to the parent - it's up to it to decide what
|
||||||
@@ -1496,12 +1502,12 @@ return;
|
|||||||
|
|
||||||
void wxWindow::OnKeyDown(wxKeyEvent& event)
|
void wxWindow::OnKeyDown(wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
Default();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::OnKeyUp(wxKeyEvent& event)
|
void wxWindow::OnKeyUp(wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
Default();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::OnPaint(wxPaintEvent& event)
|
void wxWindow::OnPaint(wxPaintEvent& event)
|
||||||
@@ -2359,10 +2365,13 @@ void wxCanvasRepaintProc (Widget drawingArea, XtPointer clientData,
|
|||||||
|
|
||||||
if (event -> xexpose.count == 0)
|
if (event -> xexpose.count == 0)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
wxPaintEvent event(win->GetId());
|
wxPaintEvent event(win->GetId());
|
||||||
event.SetEventObject(win);
|
event.SetEventObject(win);
|
||||||
win->GetEventHandler()->ProcessEvent(event);
|
win->GetEventHandler()->ProcessEvent(event);
|
||||||
|
*/
|
||||||
|
|
||||||
|
win->DoPaint();
|
||||||
win->ClearUpdateRects();
|
win->ClearUpdateRects();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2617,10 +2626,6 @@ void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallba
|
|||||||
|
|
||||||
wxEventType eventType = wxEVT_CHAR;
|
wxEventType eventType = wxEVT_CHAR;
|
||||||
|
|
||||||
// TODO: Is this the correct criterion for wxEVT_KEY_DOWN down versus wxEVT_CHAR?
|
|
||||||
if (id > WXK_START) // Non-ASCII values
|
|
||||||
eventType = wxEVT_KEY_DOWN;
|
|
||||||
|
|
||||||
wxKeyEvent event (eventType);
|
wxKeyEvent event (eventType);
|
||||||
|
|
||||||
if (local_event.xkey.state & ShiftMask)
|
if (local_event.xkey.state & ShiftMask)
|
||||||
@@ -2647,10 +2652,18 @@ void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallba
|
|||||||
event.SetEventType(wxEVT_CHAR_HOOK);
|
event.SetEventType(wxEVT_CHAR_HOOK);
|
||||||
if (parent->GetEventHandler()->ProcessEvent(event))
|
if (parent->GetEventHandler()->ProcessEvent(event))
|
||||||
return;
|
return;
|
||||||
event.SetEventType(wxEVT_CHAR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas->GetEventHandler()->ProcessEvent (event);
|
// For simplicity, OnKeyDown is the same as OnChar
|
||||||
|
// TODO: filter modifier key presses from OnChar
|
||||||
|
event.SetEventType(wxEVT_KEY_DOWN);
|
||||||
|
|
||||||
|
// Only process OnChar if OnKeyDown didn't swallow it
|
||||||
|
if (!canvas->GetEventHandler()->ProcessEvent (event))
|
||||||
|
{
|
||||||
|
event.SetEventType(wxEVT_CHAR);
|
||||||
|
canvas->GetEventHandler()->ProcessEvent (event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2708,28 +2721,68 @@ void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallba
|
|||||||
void wxWindow::DoPaint()
|
void wxWindow::DoPaint()
|
||||||
{
|
{
|
||||||
//TODO : make a temporary gc so we can do the XCopyArea below
|
//TODO : make a temporary gc so we can do the XCopyArea below
|
||||||
if (0) // m_backingPixmap)
|
if (m_backingPixmap && !m_needsRefresh)
|
||||||
{
|
{
|
||||||
/*
|
wxPaintDC dc(this);
|
||||||
Widget drawingArea = (Widget) m_drawingArea;
|
|
||||||
// int orig = GetDC()->GetLogicalFunction();
|
|
||||||
// GetDC()->SetLogicalFunction (wxCOPY);
|
|
||||||
|
|
||||||
// TODO: it may not be necessary to store m_pixmapOffsetX/Y; we
|
GC tempGC = (GC) dc.GetBackingGC();
|
||||||
// should be able to calculate them.
|
|
||||||
XCopyArea (XtDisplay (drawingArea), m_backingPixmap, XtWindow (drawingArea), GetDC ()->gc,
|
|
||||||
m_pixmapOffsetX, m_pixmapOffsetY,
|
|
||||||
m_pixmapWidth, m_pixmapHeight,
|
|
||||||
0, 0);
|
|
||||||
|
|
||||||
// GetDC()->SetLogicalFunction (orig);
|
Widget widget = (Widget) GetMainWidget();
|
||||||
*/
|
|
||||||
|
int scrollPosX = 0;
|
||||||
|
int scrollPosY = 0;
|
||||||
|
|
||||||
|
// We have to test whether it's a wxScrolledWindow (hack!)
|
||||||
|
// because otherwise we don't know how many pixels have been
|
||||||
|
// scrolled. We might solve this in the future by defining
|
||||||
|
// virtual wxWindow functions to get the scroll position in pixels.
|
||||||
|
// Or, each kind of scrolled window has to implement backing
|
||||||
|
// stores itself, using generic wxWindows code.
|
||||||
|
if (this->IsKindOf(CLASSINFO(wxScrolledWindow)))
|
||||||
|
{
|
||||||
|
wxScrolledWindow* scrolledWindow = (wxScrolledWindow*) this;
|
||||||
|
int x, y;
|
||||||
|
scrolledWindow->CalcScrolledPosition(0, 0, & x, & y);
|
||||||
|
|
||||||
|
scrollPosX = - x;
|
||||||
|
scrollPosY = - y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: This could be optimized further by only copying the
|
||||||
|
// areas in the current update region.
|
||||||
|
|
||||||
|
// Only blit the part visible in the client area. The backing pixmap
|
||||||
|
// always starts at 0, 0 but we may be looking at only a portion of it.
|
||||||
|
wxSize clientArea = GetClientSize();
|
||||||
|
int toBlitX = m_pixmapWidth - scrollPosX;
|
||||||
|
int toBlitY = m_pixmapHeight - scrollPosY;
|
||||||
|
|
||||||
|
// Copy whichever is samller, the amount of pixmap we have to copy,
|
||||||
|
// or the size of the client area.
|
||||||
|
toBlitX = wxMin(toBlitX, clientArea.x);
|
||||||
|
toBlitY = wxMin(toBlitY, clientArea.y);
|
||||||
|
|
||||||
|
// Make sure we're not negative
|
||||||
|
toBlitX = wxMax(0, toBlitX);
|
||||||
|
toBlitY = wxMax(0, toBlitY);
|
||||||
|
|
||||||
|
XCopyArea (XtDisplay (widget), (Pixmap) m_backingPixmap, XtWindow (widget), tempGC,
|
||||||
|
scrollPosX, scrollPosY, // Start at the scroll position
|
||||||
|
toBlitX, toBlitY, // How much of the pixmap to copy
|
||||||
|
0, 0); // Destination
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Set an erase event first
|
||||||
|
wxEraseEvent eraseEvent(GetId());
|
||||||
|
eraseEvent.SetEventObject(this);
|
||||||
|
GetEventHandler()->ProcessEvent(eraseEvent);
|
||||||
|
|
||||||
wxPaintEvent event(GetId());
|
wxPaintEvent event(GetId());
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
GetEventHandler()->ProcessEvent(event);
|
GetEventHandler()->ProcessEvent(event);
|
||||||
|
|
||||||
|
m_needsRefresh = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -808,7 +808,14 @@ void wxDC::SetBackground(const wxBrush& brush)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_canvas->SetBackgroundColour(m_backgroundBrush.GetColour());
|
// New behaviour, 10/2/99: setting the background brush of a DC
|
||||||
|
// doesn't affect the window background colour. However,
|
||||||
|
// I'm leaving in the transparency setting because it's needed by
|
||||||
|
// various controls (e.g. wxStaticText) to determine whether to draw
|
||||||
|
// transparently or not. TODO: maybe this should be a new function
|
||||||
|
// wxWindow::SetTransparency(). Should that apply to the child itself, or the
|
||||||
|
// parent?
|
||||||
|
// m_canvas->SetBackgroundColour(m_backgroundBrush.GetColour());
|
||||||
m_canvas->m_backgroundTransparent = FALSE;
|
m_canvas->m_backgroundTransparent = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -49,6 +49,8 @@ wxWindowDC::wxWindowDC(wxWindow *the_canvas)
|
|||||||
// m_hDC = (WXHDC) ::GetDCEx((HWND) the_canvas->GetHWND(), NULL, DCX_WINDOW);
|
// m_hDC = (WXHDC) ::GetDCEx((HWND) the_canvas->GetHWND(), NULL, DCX_WINDOW);
|
||||||
m_hDC = (WXHDC) ::GetWindowDC((HWND) the_canvas->GetHWND() );
|
m_hDC = (WXHDC) ::GetWindowDC((HWND) the_canvas->GetHWND() );
|
||||||
m_hDCCount ++;
|
m_hDCCount ++;
|
||||||
|
|
||||||
|
SetBackground(wxBrush(m_canvas->GetBackgroundColour(), wxSOLID));
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindowDC::~wxWindowDC(void)
|
wxWindowDC::~wxWindowDC(void)
|
||||||
@@ -77,6 +79,8 @@ wxClientDC::wxClientDC(wxWindow *the_canvas)
|
|||||||
m_canvas = the_canvas;
|
m_canvas = the_canvas;
|
||||||
// BeginDrawing();
|
// BeginDrawing();
|
||||||
m_hDC = (WXHDC) ::GetDC((HWND) the_canvas->GetHWND());
|
m_hDC = (WXHDC) ::GetDC((HWND) the_canvas->GetHWND());
|
||||||
|
|
||||||
|
SetBackground(wxBrush(m_canvas->GetBackgroundColour(), wxSOLID));
|
||||||
}
|
}
|
||||||
|
|
||||||
wxClientDC::~wxClientDC(void)
|
wxClientDC::~wxClientDC(void)
|
||||||
@@ -128,6 +132,8 @@ wxPaintDC::wxPaintDC(wxWindow *canvas)
|
|||||||
ms_PaintCount = 1;
|
ms_PaintCount = 1;
|
||||||
m_hDCCount++;
|
m_hDCCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetBackground(wxBrush(m_canvas->GetBackgroundColour(), wxSOLID));
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPaintDC::~wxPaintDC()
|
wxPaintDC::~wxPaintDC()
|
||||||
|
@@ -279,7 +279,8 @@ $(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c
|
|||||||
# problems with lex_yy.c. See also note about LEX_SCANNER
|
# problems with lex_yy.c. See also note about LEX_SCANNER
|
||||||
# above.
|
# above.
|
||||||
$(COMMDIR)/lex_yy.c: $(COMMDIR)/lexer.l
|
$(COMMDIR)/lex_yy.c: $(COMMDIR)/lexer.l
|
||||||
$(LEX) $(COMMDIR)/lexer.l > $(COMMDIR)/lex_yy.c
|
$(LEX) $(COMMDIR)/lexer.l
|
||||||
|
mv lex.yy.c $(COMMDIR)/lex_yy.c
|
||||||
|
|
||||||
# The following may be required for FLEX
|
# The following may be required for FLEX
|
||||||
# $(LEX) -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l
|
# $(LEX) -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l
|
||||||
|
@@ -186,7 +186,7 @@ $(WXLIB) : $(OBJECTS)
|
|||||||
# problems with lex_yy.c. See also note about LEX_SCANNER
|
# problems with lex_yy.c. See also note about LEX_SCANNER
|
||||||
# above.
|
# above.
|
||||||
../common/lex_yy.c: ../common/lexer.l
|
../common/lex_yy.c: ../common/lexer.l
|
||||||
$(LEX) -o../common/lex.yy.c ../common/lexer.l
|
$(LEX) ../common/lexer.l
|
||||||
sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \
|
sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \
|
||||||
sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
|
sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
|
||||||
sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c
|
sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c
|
||||||
|
@@ -500,8 +500,8 @@ bool csApp::WriteOptions()
|
|||||||
config.Write("mainY", m_mainFramePos.y);
|
config.Write("mainY", m_mainFramePos.y);
|
||||||
config.Write("mainWidth", m_mainFrameSize.x);
|
config.Write("mainWidth", m_mainFrameSize.x);
|
||||||
config.Write("mainHeight", m_mainFrameSize.y);
|
config.Write("mainHeight", m_mainFrameSize.y);
|
||||||
config.Write("gridStyle", m_gridStyle);
|
config.Write("gridStyle", (long) m_gridStyle);
|
||||||
config.Write("gridSpacing", m_gridSpacing);
|
config.Write("gridSpacing", (long) m_gridSpacing);
|
||||||
|
|
||||||
m_docManager->FileHistorySave(config);
|
m_docManager->FileHistorySave(config);
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char *clipstudio_xpm[] = {
|
static char *studio_xpm[] = {
|
||||||
/* columns rows colors chars-per-pixel */
|
/* columns rows colors chars-per-pixel */
|
||||||
"32 32 6 1",
|
"32 32 6 1",
|
||||||
" c Black",
|
" c Black",
|
||||||
|
Reference in New Issue
Block a user