#15009: Use native (flat) status bars field borders on non Windows 95 like systems by default

31 views
Skip to first unread message

wxTrac

unread,
Jan 29, 2013, 7:38:11 AM1/29/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
---------------------+------------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: wxGTK | Version: 2.9-svn
Keywords: | Blockedby:
Patch: 1 | Blocking:
---------------------+------------------------------------------------------
I have understood why too many end users think that applications has no
native look and feel under wxGTK.

Sunken status bars has Windows 95-like style and looks very ugly
especially in GTK+. Even Windows XP and 7 has no this style. GTK+
applications use GtkLabel and this widget has flat borders. AFAICS all
Linux editors has no any delimiters in the status bars, all panes is flat
there.

In the first glance at application end user see that status bar has no
native look and they start thinking that whole application has no native
look and feel. First impression is very important! Even worse status bar
is usually always visible and user must see on it when works with
application all the time.

Also raised and sunken status bar have unexpected look with dark system
themes because shadows with wxSYS_COLOUR_3DSHADOW and
wxSYS_COLOUR_3DHILIGHT colors is usually not correct on the dark
foreground.

So I think that we should use flat status bars instead of sunken ones
everywhere by default except Windows 95 style systems.

Also I have added wxSB_SUNKEN style for consistency.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009>

wxTrac

unread,
Mar 8, 2013, 12:58:07 PM3/8/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:1>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
---------------------+------------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: wxGTK | Version: 2.9-svn
Keywords: | Blockedby:
Patch: 1 | Blocking:
---------------------+------------------------------------------------------

Comment(by kosenko):

Is there any problems with this patch?


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:1>

wxTrac

unread,
Mar 9, 2013, 9:14:38 AM3/9/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:2>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
---------------------+------------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Keywords: | Blockedby:
Patch: 1 | Blocking:
---------------------+------------------------------------------------------
Changes (by vadz):

* milestone: => 3.0


Comment:

Replying to [comment:1 kosenko]:

> Is there any problems with this patch?

No, I just didn't have time for any wx work recently, sorry.

Anyhow, now that I did finally have a look at it, I'm not sure I agree
with the change. It's true that the sunken status bar looks out of place
but not having any separator at all between the status bar and the main
window doesn't look right neither. I don't actually know what is the
"modern" look and feel of GNOME systems (I use a pretty ancient one
myself...) but even the screenshot in the
[http://www.gtk.org/api/2.6/gtk/GtkStatusbar.html official docs] shows a
separator line. Shouldn't we draw it by default?

What do people think, which appearance is better: current one

[[Image(statbar-current.png)]]

or the new one

[[Image(statbar-new.png)]]

?


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:2>

wxTrac

unread,
Mar 9, 2013, 1:59:37 PM3/9/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:3>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
---------------------+------------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: new
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Keywords: | Blockedby:
Patch: 1 | Blocking:
---------------------+------------------------------------------------------

Comment(by kosenko):

Replying to [comment:2 vadz]:

> Anyhow, now that I did finally have a look at it, I'm not sure I agree
with the change. It's true that the sunken status bar looks out of place
but not having any separator at all between the status bar and the main
window doesn't look right neither. I don't actually know what is the
"modern" look and feel of GNOME systems (I use a pretty ancient one
myself...) but even the screenshot in the
[http://www.gtk.org/api/2.6/gtk/GtkStatusbar.html official docs] shows a
separator line. Shouldn't we draw it by default?

This screenshot is from GTK+ 2.6 that was released 16 December 2004, about
ten years ago. Currently Linux distributions work with GTK+ 3 libraries
and applications, GTK+ 2 is just for backward compatibility.
[https://developer.gnome.org/gtk3/stable/GtkStatusbar.html Latest official
documentation] has no any separators. Separators create visual noise. Also
there is central widget in the frame in most cases, so we will have
doubled vertical separators.

> What do people think, which appearance is better: current one or the new
one?

First image look was in repository more then 15 years and many wx
developers got into the habit this look, but end users work with GNOME
applications that have second image look. So it is a time to move from
wxGTK/Windows95 look to the original GTK+ one.

First image is cluttered by lines. Second one is clean and simple, and it
looks natively under GNOME.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:3>

wxTrac

unread,
Mar 21, 2013, 6:36:54 PM3/21/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:4>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------
Changes (by VZ):

* status: new => closed
* resolution: => fixed


Comment:

(In [73691]) Use flat generic status bar by default and add wxSB_SUNKEN.

GTK+ applications don't use sunken status bars since many years, do don't
do
it in wxWidgets neither by default any more. Add wxSB_SUNKEN style that
can be
explicitly used if the old appearance is desired.

Closes #15009.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:4>

wxTrac

unread,
Oct 16, 2013, 10:25:13 AM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:5>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by hramrach):

I don't understand. GTK+ applications *do* use statusbar with bevels.

The bevels in wxGTK are wrong colour, however.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:5>

wxTrac

unread,
Oct 16, 2013, 10:25:36 AM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:6>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------
Changes (by hramrach):

* cc: hramrach@… (added)



--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:6>

wxTrac

unread,
Oct 16, 2013, 10:32:27 AM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:7>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by vadz):

Ideally we should use whatever the current theme does. But I don't know
which theme/renderer methods should be used here. If anybody could have a
look, it'd be great.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:7>

wxTrac

unread,
Oct 16, 2013, 10:51:36 AM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:8>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by hramrach):

The default GTK theme uses bevels. Also some of the samples look bad
without the bevels - eg. layout sample. I would expect that there is much
code out there that would suffer from the same problem.

It is true that you can use different engines in GTK and customize the
look in any way you like. eg. the pixmap engine that uses user-supplied
bitmaps for everything used to be popular.

I am not sure what other platforms do. I see the very same bevels on
Windows Server 2003 but 2003 is a bit dated. Even if you go for flat look
you still need a flat border to make the statusbar distinguishable from
main window content and the different status ares one from another.

With the layout demo with wxwidgets 3.0-rc1 gtk2 you can't even tell if
there is a margin or a statusbar until you happen to point to something
that shows text in it. With wxwidgets 2.8.12 gtk2 you can clearly see
there is a statusbar and it has two areas (for whatever reason) but the
bevel is drawn in black and white, not the theme colour.

I would post some pictures but I don;t see that option in trac.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:8>

wxTrac

unread,
Oct 16, 2013, 10:55:03 AM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:9>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by vadz):

You can insert the pictures directly into the comments, follow the
WikiFormatting link to find out how. But I think it's not even necessary,
it's clear that on your system sunken borders are used while on the OP's
system they are not. And I don't really know which is better, I already
asked about opinions about this in the comment:2 but didn't get any
responses. So I still don't know what to do, it's clear that any hard
coded look will make somebody unhappy but I don't have the time to
implement the themed look.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:9>

wxTrac

unread,
Oct 16, 2013, 11:25:03 PM10/16/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:10>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by kosenko):

> I don't understand. GTK+ applications *do* use statusbar with bevels.

Native GNOME applications such as gEdit '''don't''' use bevels in the
status bar. And they look very good.

> The default GTK theme uses bevels. Also some of the samples look bad
without the bevels - eg. layout sample. I would expect that there is much
code out there that would suffer from the same problem.

GTK+/GNOME designers don't think so.
[https://developer.gnome.org/gtk3/stable/GtkStatusbar.html GtkStatusbar
has no bevels in API documentation]. Also Statusbars GNOME Human Interface
Guidelines says [https://developer.gnome.org/hig-book/stable/controls-
status-bars.html.en ""Flat appearance for areas that are not
interactive""]. It means that static text lines should be flat in the
status bar.

> I am not sure what other platforms do. I see the very same bevels on
Windows Server 2003 but 2003 is a bit dated.

wxGTK/Win32 port not uses native widgets at all under Windows. We should
not use Windows 95 look and feel everywere.

> Even if you go for flat look you still need a flat border to make the
statusbar distinguishable from main window content and the different
status ares one from another.

You could use wxStaticLine, wxSB_SUNKEN and wxSB_RAISED styles in your
application if it is critical here. But it looks very ugly with themes
without bevels.

Currently wxStatusBar isn't native under wxGTK and there is an effort to
implement it natively there in #10955. And we could have there native
themes implementation for wxSB_SUNKEN and wxSB_RAISED styles. But in any
case by default status bar must be flat.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:10>

wxTrac

unread,
Oct 17, 2013, 4:42:18 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:11>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by hramrach):

I still don't understand.

This is what gedit looks like with default theme
[[Image(gedit_default.png)]] and this is what it looks with a theme that
does not have borders and margins (because I don't use gtk3 enough to
bother adding them) [[Image(gedit_borderless.png)]] and that's what you
are getting with the current change, not something like
[[Image(https://developer.gnome.org/hig-book/stable/images/controls-
status-bar-interactive.png.en)]]

Note that the flat vs bevel look is only relevant to the particular area
with respect to the rest of the statusbar. The statusbar still may and
should have a border, and the '''default theme includes a sunken border'''
and it looks very good.

So to follow those GHIG if that's your goal you have to prod application
maintainers to distinguish interactive and non-interactive statusbar
areas. That's nothing you can do automagically by changing something in
wxGTK unless you are willing to examine the widget tree and search for
interactive widget there to determine the default border style.

The problem here is compatibility. Yes, you can style the statusbar any
way you want, even better than before. But the change to default look you
apply makes the statusbar very indistinct like in the borderless theme and
applications written for wxwidgets 2.8 may and probably do expect that the
statusbar is noticeable and the different areas separated.

For me the lack of separation between different status areas creates
visual clutter because you are never sure if you are still reading one
thing or you are just continuing somewhere else without even noticing.
gEdit adds a gap between the position and insert status so you don't
really get that problem but how many wxwidgets applications don't?


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:11>

wxTrac

unread,
Oct 17, 2013, 7:32:57 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:12>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by kosenko):

> This is what gedit looks like with default theme

It is a built-in Windows 95-like theme that is used only when other themes
isn't available during application development. GNOME and Unity default
themes is much different.

[[Image(gedit_gnome.png)]]
[[Image(gedit_unity.png)]]

> and that's what you are getting with the current change, not something
like

We are talking about static text in the status bar ("Ln 1, Col 1", "INS",
"Saving...." labels) and they are very flat on screenshots.

> gEdit adds a gap between the position and insert status so you don't
really get that problem but how many wxwidgets applications don't?

GTK+ and wxWidgets architectures is similar. There is spaces between
status bar fields, also it is possible to use commas inside text fields.

> For me the lack of separation between different status areas creates
visual clutter because you are never sure if you are still reading one
thing or you are just continuing somewhere else without even noticing.

GNOME designers have other opinion, they explicitly said that not
interactive areas must be flat in the status bars.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:12>

wxTrac

unread,
Oct 17, 2013, 8:19:02 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:13>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by hramrach):

I can't see the spacing with the available demos but I suspect it's very
small for the case without separators.

No, they say that the field itself should be flat, not that statusbar
should be flat, and it is indeed distinct from the main window area. Since
the field bevel was the only distinction from the main application area in
wxwidgets it is now gone. Compare the default gnome and unity look with
the wxwidgets 3 look.

Either way the only final solution is native statusbar. For the time being
I think that if flat statusbar is what you want I would suggest to
increase the the spacing between fileds to around 1em and add a plain
single line above the statusbar so it does not unexpectedly bleed into
window content of applications that were designed with the old look in
mind.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:13>

wxTrac

unread,
Oct 17, 2013, 8:22:40 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:14>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by vadz):

Using native status bar is not really an option because it supports one
field only and our API exposes the existence of several fields (called
"panes"). So unless we can emulate this somehow, we should just use the
proper theme methods for drawing, this seems like a much more promising
approach to me...


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:14>

wxTrac

unread,
Oct 17, 2013, 8:40:41 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:15>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by hramrach):

Problem is we don't have proper theme methods for drawing. This is why
this bug started in the first place.

In gtk2 statusbar can have multiple items without problems. In gtk3
populating the statusbar seems somewhat challenging but gedit obviously
managed.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:15>

wxTrac

unread,
Oct 17, 2013, 8:55:57 AM10/17/13
to wx-...@googlegroups.com
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:16>

#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+-----------------------------------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0
Component: wxGTK | Version: 2.9-svn
Resolution: fixed | Keywords:
Blockedby: | Patch: 1
Blocking: |
----------------------+-----------------------------------------------------

Comment(by kosenko):

BTW here is [https://git.gnome.org/browse/gedit/tree/gedit/gedit-
statusbar.c gEdit status bar implementation]. We also could have native
GtkStatusBar inside wxStatusBar. If field have not empty text we also
could use GtkLabel.


--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:16>

wxTrac

unread,
Sep 9, 2016, 11:41:59 AM9/9/16
to wx-...@googlegroups.com
#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+---------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0.0
Component: wxGTK | Version: stable-latest
Resolution: fixed | Keywords:
Blocked By: | Blocking:
Patch: 1 |
----------------------+---------------------------

Comment (by oneeyeman):

Kolya, Vadim et al,
Replying to [comment:16 kosenko]:
> BTW here is [https://git.gnome.org/browse/gedit/tree/gedit/gedit-
statusbar.c gEdit status bar implementation]. We also could have native
GtkStatusBar inside wxStatusBar. If field have not empty text we also
could use GtkLabel.
Can we, as wx developers, look at gEdit code? Is it compatible with our
license?

--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:17>

wxTrac

unread,
Sep 13, 2016, 4:59:25 AM9/13/16
to wx-...@googlegroups.com
#15009: Use native (flat) status bars field borders on non Windows 95 like systems
by default
----------------------+---------------------------
Reporter: kosenko | Owner:
Type: defect | Status: closed
Priority: normal | Milestone: 3.0.0
Component: wxGTK | Version: stable-latest
Resolution: fixed | Keywords:
Blocked By: | Blocking:
Patch: 1 |
----------------------+---------------------------

Comment (by kosenko):

> Can we, as wx developers, look at gEdit code? Is it compatible with our
license?
We need permissions to use gEdit code in wxWidgets. But it isn't required
because gEdit status bar has trivial implementation can't be used as is in
wxWidgets, it just demo of GTK+ approach of use GtkStatusBar with multiple
fields.

--
Ticket URL: <http://trac.wxwidgets.org/ticket/15009#comment:18>
Reply all
Reply to author
Forward
0 new messages