Commit Graph

57692 Commits

Author SHA1 Message Date
John Scipione
fc23c09758 BDeskbar & Deskbar: export window bool settings to BDeskbar
Add methods to get and set "Always on top", "Auto raise", and "auto hide"
which are all booleans which control aspects of the Deskbar window to
BDeskbar.

Set the bool to the default value initially. Check if sending the
message succeeds, if so check the reply which also fills out the bool.
Don't check to see if reply succeeded because the bool will only be
overwritten if it did.

Follow the BDeskbar convention Is...() for getter, Set...() for setter
e.g IsAlwaysOnTop() is the getter, SetAlwaysOnTop() is the setter.

Define new message constants to call the newly created methods.
Follow BDeskbar convention: 'gtla' is used for getter, 'stla' for setter.
g/s for getter/setter, tla is an all-lowercase code unique to each
getter/setter pair.

Copy/paste these message constants into BarApp.h unchanged. Replace four
letter codes with imported message constants in BarApp.cpp and
BarWindow.cpp. Much nicer than using bare codes.

The new BDeskbar methods are all handled by TBarApp. The getters send
back a reply message containing the bool while the setters fall through
to existing setter cases.
2017-11-27 11:05:22 -08:00
John Scipione
f8811591e1 BDeskbar: Style fixes
Update Copyright in cpp, add myself, alphabetize, standardize
Pointer style in cpp
Update some comments
Some 80 char stuff
pragma section headers
whitespace
2017-11-26 20:40:00 -08:00
John Scipione
b1b84675f0 BWindow: Update default Zoom() to respect Deskbar
Zoom() takes up all Desktop area excluding the area
occupied by Deskbar. This is calculated using information
from the BDeskbar class.

Window zooms just as you'd expect -- it takes up fullscreen
minus area taken up by Deskbar. In vertical mode the zoom
area depends on the width of Deskbar, consequently Zoom()
is more space efficient in horizontal mode than vertical
mode because the window doesn't use the area below Deskbar.

If the zoom limits are smaller than the Desktop area, the
zoom area shrinks towards the center of the Desktop not
covered by Deskbar. This is slightly different behavior,
the window insets off-center following Deskbar.

In some scenarios zooming to the non-Deskbar area was too
restrictive. I made an exception that if there is enough
room above or below Deskbar i.e. a short window, then Zoom()
instead insets from the screen edge ignoring Deskbar. Apps
which meet this criteria include DriveSetup and Expander.
2017-11-26 20:04:43 -08:00
Julian Harnath
a83b974b13 HaikuDepot: make status bar smaller
* As requested in #13808

* Thanks to Janus for the tip with the SetBarHeight
2017-11-26 17:59:39 +00:00
Julian Harnath
d78bfd8d18 HaikuDepot: fix single package install
* Fix crash report by Diver
2017-11-26 17:48:27 +00:00
Automatic Committer
5bdf48dea6 Update userguide and translations 2017-11-26 11:14:46 +01:00
Augustin Cavalier
08965a6568 build: Remove now-defunct jam commands. 2017-11-25 21:15:10 +01:00
Augustin Cavalier
5f8613a22c build: Cleanup and fixes following previous commits.
* Hashing semantics for the new build repositories are different than
   the old ones, so update those (if the x86 build was not broken before
   it is now...)
 * OptionalPackages has been updated slightly (removed libtool and git_cvs
   from the default images, as they are rarely used nowadays and would pull
   in a bunch of dependencies we don't really care for either)
 * Removed lib:libqrencode from Haiku package requires (qrencode_kdl is a
   static library, the userland libqrencode is not used anywhere in the tree,
   as far as I can tell)
 * Fix build of JPEG2000 translator after update
 * Decouple fluidsynth build machinery and remove from image now that it
   is no longer used
 * Update repository URL in Repositories preflet
2017-11-25 21:15:10 +01:00
Augustin Cavalier
36f675968e HaikuPorts: Update to point to the buildmaster repositories.
x86 is unaffected, as already mentioned. This breaks the build,
but since this diff was large, I wanted to have the functionality
changes be clear, so they are in the next commit.
2017-11-25 21:15:10 +01:00
Augustin Cavalier
16b3c214f1 tools: Add a new hardlink_packages.py script.
This is essentially the replacement for "jam upload-packages" --
it goes through a directory of packages (intended to be one made by
buildmaster), picks the packages out of it that are in the repository
file passed to it, and then hardlinks them to a second directory
as well as updates the repository file and creates a package_repo.

This is what was used to mass-modify the repository files which
will be updated in the next commit.
2017-11-25 21:15:09 +01:00
Augustin Cavalier
174f207416 repositories/HaikuPorts: Strip the x86_gcc2 and x86_64 repos down to build deps only.
The packages that remain are only the ones used somewhere in Jam
(including ones off by default, e.g. Wonderbrush, Live555.)

The x86 repo is untouched as it is being phased out and has no buildmaster-
generated equivalent.
2017-11-25 21:15:09 +01:00
Augustin Cavalier
c9f8b996fe repository_infos: Use HTTPS and point HaikuPorts to Buildmaster-generated repo. 2017-11-25 21:15:08 +01:00
Augustin Cavalier
a9916f9b1a build/jam/BuildFeatureRules: Make EnableBuildFeatures actually work.
It was trying to use $(feature:U) outside of the loop where it is
actually set. Thanks to PulkoMandy for spotting the problem.

(How did this not break tons of stuff?)
2017-11-25 21:15:08 +01:00
Jérôme Duval
7bee81a5c2 updated usbdevs from NetBSD revision 1.743 2017-11-25 19:06:36 +01:00
Jérôme Duval
331f527e44 Update zstd packages for x86. 2017-11-25 09:21:08 +01:00
Jérôme Duval
540529be6f Haiku package: depends on zstd for libbe. 2017-11-25 08:46:07 +01:00
Automatic Committer
2bb7cb8d87 Update translations from Pootle 2017-11-25 07:09:34 +01:00
Jérôme Duval
6ac3a280f4 Add ZstdCompressionAlgorithm.
* kernel lib is decompress only (like zlib).
* expand compression_test for zstd.
2017-11-24 21:35:49 +01:00
Julian Harnath
c210060f38 HaikuDepot: begin support for multiple screenshots
* Initial support for displaying multiple screenshots for packages
  which have more than one. Still rough and unfinished.

  Screenshot window now has a toolbar with prev/next buttons and
  a busy loading indicator. Switching through the screenshots works.

  There's currently a server-side bug which makes all data turn up
  15 times in the JSON file, so please don't report a bug about
  HaikuDepot showing 15 or 30 screenshots available when it's really
  just 1 or 2 :)

  Still to be done: toolbar icons instead of text labels; better
  handling of screenshot window resizing; maybe thumbnails of
  screenshots and preloading other screenshots in the background.
  Main window also needs a way to indicate that there are more
  screenshots than the one thumbnail, needs some more thought about
  how that might look.

  This concludes my HaikuDepot commits from the coding sprint at
  KDC 2017 Toulouse!
2017-11-24 18:22:14 +01:00
Julian Harnath
74e4161139 HaikuDepot: hide debuginfo too when hiding development pkgs
* When development packages ([...]_devel) are not shown, we now also
  hide debuginfo packages ([...]_debuginfo).

* Fixes #13095
2017-11-24 18:22:14 +01:00
Julian Harnath
72fff6d385 HaikuDepot: async listing of packages in PackageListView
* The UI became unresponsive while the PackageListView was filled
  with all the packages. This was especially apparent when using
  the search function, which clears and refills the view with every
  typed character.

* Add a new worker thread with the task of asynchronously filling the
  PackageListView. When a new data model is adopted, we hand the
  thread a copy of the visible package list. The worker thread then
  goes through the list and sends the package infos via BMessage back
  to the MainWindow, in batches of 20 infos per message. When the 20
  entries were added, it acknowledges this to the worker thread which
  will send the next 20 infos (so UI messages can get in between,
  keeping it responsive). The lists also get a unique ID so that
  model changes while the list is populating will invalidate
  previously sent messages (and cause the worker thread to cancel
  processing the outdated list).

* Search is much nicer to use this way, staying responsive and
  listing packages while typing. Still not perfect since the
  PackageListView is still cleared and refilled each time a character
  is typed, instead of just narrowing down the already displayed
  package set. But that's to be improved on another day...

* Same applies to filling FeaturedPackagesView btw
2017-11-24 18:22:14 +01:00
Julian Harnath
97844417de HaikuDepot: faster row lookup in PackageListView
* Use a hash table to find PackageRows by package name in
  PackageListView, instead of doing linear search over all rows.
  Improves performance of populating the list, since every
  AddPackage() checks if a row for the package already exists.
2017-11-24 18:22:14 +01:00
Julian Harnath
26c5107c8d HaikuDepot: fix package category assignment
* Processing of server data used wrong index into category list
2017-11-24 18:22:14 +01:00
Julian Harnath
125d42d95b HaikuDepot: add work status view
* Add new WorkStatusView which keeps the user informed about what's
  happening. It's a status bar at the bottom of the window which
  shows on the left side either a spinning barber pole (for
  operations without a progress), or a progress bar (for download
  progress). Next to that is a text view showing a descriptive
  status text.

* Currently, it will notify of the following operations:
  - Repository refresh (barber pole)
  - Background packet actions, like preparation of install or uninstall
    (barber pole)
  - Package downloads, including downloads of dependencies (progress
    bar). Status text indicates the name of the package currently
    being downloaded (if any), and how many more packages are queued
    for download after it (if any).

* Hooks into PackageListView to be notified of package status changes
  (such as becoming pending or download progress)

* When the package currently being downloaded is also selected in the
  list view, the user sees the progress bar in WorkStatusView
  as well as the one in the PackageInfoView, which is redundant. This
  still needs a good solution...
2017-11-24 18:22:14 +01:00
Julian Harnath
d737433974 HaikuDepot: add change confirmation event to progress listener
* Add a new event "ConfirmedChanges" to PackageProgressListener. It
  triggers when a package action was confirmed by the user and is
  about to be run. This can be used to e.g. get a full list of
  packages about to be installed (i.e. including dependencies)
  right before the process of fetching/installing them is started.

* Add a handler for it which looks at PackagesToActivate and sets
  all their PackageInfo states to pending (so now, when installing
  a package, its dependencies immediately become pending as well).
2017-11-24 18:22:14 +01:00
Julian Harnath
2a493ea0e0 BView: set initial frame rect invalid when using layouting
* When a view is used with the layout system, its initial frame rect
  was set to (0, 0, 0, 0), which is a BRect covering 1 pixel in the
  top left corner of the window.
  Since this a valid rect, it can cause "badly behaved" views to
  trigger redraws of themselves and other views during the layout
  process, which is ultimately the reason for the HaikuDepot UI
  freezing while populating with packages.

  The misbehaving view in this case is BTextView. When in read-only
  mode, since commit e27a53b2, its GetHeightForWidth() implementation
  causes the view to resize (really resizing, not just simulating a
  resize) and thus it invalidates itself. This is broken behaviour,
  and needs to be fixed in BTextView. Since GetHeightForWidth() is
  called during the layout process, all the not-yet-layouted views
  have a frame of (0, 0, 0, 0). The invalidation of just the one
  BTextView in the layout then hits *all* new views that are being
  layouted (because they all occupy the same one pixel in the
  corner), and they all get redrawn.
  Many view Draw() implementations ignore the update rect, so work
  is being done. And even if not, this can cause a lot of traffic
  on the app_server link. In a test case with HaikuDepot's
  FeaturedPackagesView, adding 300 rows (each containing a BTextView,
  among other views) in quick succession caused over 6 million
  commands to travel over the app_server link, completely freezing
  the UI for a long time.

* The actual problem here is in BTextView::GetHeightForWidth() and
  must be fixed there.
  However we also put in an extra-fix here because it never makes
  sense anyway to try and draw a view that has not yet been layouted.
  So we set the initial BView frame to an invalid rect
  (0, 0, -1, -1), which will suppress any actual updating, even
  when the view actively invalidates itself, as long it doesn't
  have a size yet. (The dirty region will always end up empty
  then).

* Fixes HaikuDepot UI freezing during package population (caused by
  above described behaviour from BTextViews in FeaturedPackagesView).
  Might improve performance in other applications using BTextView
  with layouting as well.
2017-11-24 18:22:14 +01:00
Julian Harnath
a78e725206 HaikuDepot: preliminary fix for crash in JSON listener
* Fix use-after-free in the auto-generated JSON listener code (was
  calling method of instance after 'delete this')
  Will also submit a patch for the code generation script in the
  haikudepotserver repo so it won't get lost -- this is just a
  temporary fix-up until then.

* Fixes some random occasional crashes
2017-11-24 18:22:14 +01:00
Julian Harnath
492c58fd9c HaikuDepot: add barber pole style progress indicator
* BarberPole view for indicating that the application is busy while
  the amount of work is not known

* Flat looks with scrolling color stripes. Number of stripes and their
  colors are freely configurable, so you could add a whole rainbow of
  colors to endlessly scroll through if you like.
2017-11-24 18:22:14 +01:00
Julian Harnath
5c821d1200 SystemProfiler: prevent nested wake-up of profiler thread
* When SystemProfiler::_MaybeNotifyProfilerThreadLocked() is called
  and the conditions are right, it will lock the thread's scheduler
  spinlock and unblock it. Internally, the unblock will enqueue the
  thread into the run queue, which causes a ThreadEnqueuedInRunQueue
  event for SystemProfiler. Since the conditions haven't changed, it
  now went into _MaybeNotifyProfilerThreadLocked again (this time
  from the profiler thread context). In there, it will try to lock
  the profiler thread's scheduling spinlock, which is already locked
  by the other thread (which is firmly sleeping). Deadlock, KDL.

* Before unblocking the profiler thread, unset fWaitingProfilerThread
  so that further events will not try to unblock it again.
2017-11-24 18:22:14 +01:00
Julian Harnath
d45104b1eb HaikuDepot: incremental update of FeaturedPackagesView
* Performance: on incoming package update messages, don't setup
  all data in the PackageView from scratch again; instead, only
  update the parts which were actually changed
2017-11-24 18:22:14 +01:00
Julian Harnath
39f995919e HaikuDepot: blue screenshot background and transparency
* Change the background color in the screenshot enlarge window
  from black to the blue, specifically the "Haiku blue", the
  default desktop background color. Makes it look much friendlier.

* Setting the low color later so it's not overriden also makes
  transparency in the screenshot work, i.e. it blends onto the
  blue background (many screenshots are thankfully already using
  transparency to mask out the unused rectangle left by the window
  tab)
2017-11-24 18:22:14 +01:00
Julian Harnath
d90412cb8f HaikuDepot: add repository column in package list view
* As requested in #12538

* Hidden by default to not clutter up the view with information that
  isn't important in the default setup. Like the state of other
  columns, the visibility is remembered.
2017-11-24 18:22:14 +01:00
Kacper Kasper
546065592d PowerStatus: make tab size dependent on font size. 2017-11-24 15:28:25 +01:00
Adrien Destugues
8ddec194c6 intel_extreme: backlight control on pre-PCH devices
Thanks to oco for letting me test this on his old laptop.
2017-11-23 23:59:39 +01:00
Augustin Cavalier
e042a53b7d configure: Avoid bashism introduced in previous hrev. 2017-11-23 20:21:38 +01:00
hyche
484f64f315 TextInput: Align the text when typing or removing.
Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Closes #13796.
2017-11-23 20:12:24 +01:00
hyche
1641a0516d Fix aligning when text growing more than the right bound..
because the bound scrolls to the current cursor to view the text (ScrollToOffset).
Follow up #12608

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
2017-11-23 20:10:11 +01:00
Augustin Cavalier
14d690378f app_server/DelayedMessage: Delete scheduled on error.
CID 1422581.
2017-11-23 19:40:04 +01:00
Augustin Cavalier
a20f4f8a85 MidiSettings: Don't leak settings in failure case.
CID 1422944.
2017-11-23 19:40:03 +01:00
Augustin Cavalier
d692d22c9d debugger/elf: Don't leak memory in failure case.
CID 1423098.
2017-11-23 19:40:02 +01:00
Augustin Cavalier
7131246873 BNetworkAddress: Close socket in ResolveForDestination.
It was closed on all the failure cases but not on the success one.
Found by Coverity.
2017-11-23 19:40:02 +01:00
Augustin Cavalier
75fa008e23 BProxySecureSocket: Fix obviously untested code.
* Actually set status before testing it
 * sscanf (reads from passed buffer) not scanf (reads from stdin)
 * &httpStatus not httpStatus.

Found by Coverity.
2017-11-23 19:40:01 +01:00
Augustin Cavalier
14fcbb52cd device_interfaces: Fix memory leak on success.
The module list was closed properly at the end of the function body
(failure case) but not inside the loop on the success case.

CID 605738.
2017-11-23 19:40:00 +01:00
Augustin Cavalier
d73993ff20 configure: Fix & enhance --use-clang.
Now you set the arch along with the argument, and specify the binutils
manually (and thus build without a complete crosstools environment.)
2017-11-23 19:40:00 +01:00
Humdinger
4d87bc24d4 DeskCalc: Improve removal of newlines of dropped files
Thanks to Adrien for the pointers.
2017-11-23 18:18:01 +01:00
Alexander von Gluck IV
eb81dec460 kernel/u-boot: Add a few missed fdt compat's for omap uart 2017-11-23 10:25:18 -06:00
Jérôme Duval
b247f935d1 install-wifi-firmwares.sh: remove haiku requires.
fixes #13794
2017-11-23 17:11:51 +01:00
Jérôme Duval
a99d222832 usb_ecm: support for QEmu CDCE network device.
* the CDCE configuration happens to not be the first: iterate the configurations.
* we set the alternate control interface
* queue interrupt requests once opened.
2017-11-23 16:50:23 +01:00
Adrien Destugues
5f4f984a94 etc/profile: Fix setting of LC_* variables
Since hrev51075, locale -m changed meaning to the one expected by POSIX
(it now lists character maps, instead of giving the current language).

Since the short options may change again (locale -c is still not doing
what POSIX requires), use long options instead. This is more readable
and POSIX doesn't specify anything there so we can name them however we
want.

Fixes date parsing in Python which relies on these variables to detect
the current locale.
2017-11-23 14:50:11 +01:00
Adrien Destugues
4205fc9141 locale: document -c as the shortcut to get message locale again.
It was deprecated in favor of -m, but -m then changed meaning to comply
with POSIX. So restore documentation for -c, and add proper
documentation for -m.
2017-11-23 14:50:11 +01:00